I initially entered this bug in the GCC bug database, but the bug seems not to be in GCC, but probably in binutils. See GCC bug 29249: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29249
The problem is this: I have a small C++ program that requires an int to be aligned on a 16 byte boundary. When I compile and run this program with g++ version 4.1.1 and binutils version 2.17.50 on Cygwin, I get an alignment error (the int is not aligned on a 16 byte boundary). g++ outputs the correct assembler code, so the error must be in as or ld. This is the source code: // ----- begin source code #include <stdio.h> typedef int __attribute__ ((aligned (16))) aint; inline void function() { static const aint x = 123; printf("sizeof(x) = %d, __alignof__(x) = %d\n", sizeof(x), __alignof__(x)); unsigned long a = (unsigned long) &x; printf("Address of x: 0x%lX - %s\n", a, a & 15L ? "ALIGNMENT ERROR" : "ok"); } int main() { function(); return 0; } // ----- end source code I compile this using the following command: g++ tst.cpp -o tst The output when running the program is: Address of x: 0x40E3E8 - ALIGNMENT ERROR I will attach the assembler code produced by GCC. -- Summary: Alignment error with static const variable in inline function Product: binutils Version: 2.17 Status: NEW Severity: normal Priority: P2 Component: binutils AssignedTo: unassigned at sources dot redhat dot com ReportedBy: jespdj at hotmail dot com CC: bug-binutils at gnu dot org http://sourceware.org/bugzilla/show_bug.cgi?id=3276 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils