gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)
** Description changed: This code shows the bug: --- #include <stdio.h> typedef __attribute__ ((__aligned__ (16))) struct _TEST_FLOAT128 { - __extension__ unsigned long long Part[2]; + __extension__ unsigned long long Part[2]; } TEST_FLOAT128; int main( void ) { - TEST_FLOAT128 tf; - printf( "alignof(tf) = %d\n",(int)__alignof__(tf) ); + TEST_FLOAT128 tf; + printf( "alignof(tf) = %d\n",(int)__alignof__(tf) ); - printf( "alignof(struct _TEST_FLOAT128) = %d\n",(int)__alignof__(struct _TEST_FLOAT128) ); - printf( "alignof(TEST_FLOAT128) = %d\n",(int)__alignof__(TEST_FLOAT128) ); + printf( "alignof(struct _TEST_FLOAT128) = %d\n",(int)__alignof__(struct _TEST_FLOAT128) ); + printf( "alignof(TEST_FLOAT128) = %d\n",(int)__alignof__(TEST_FLOAT128) ); - return 0; + return 0; } --- $ g++-4.9 -O3 -flto -oalign test.cc -Wall -Wextra -g # compiles without warnings. $ g++-5 -O3 -flto -oalign test.cc -Wall -Wextra -g - 1.cc:3:51: warning: type ‘struct _TEST_FLOAT128’ violates one definition rule [-Wodr] - typedef __attribute__ ((__aligned__ (16))) struct _TEST_FLOAT128 { - ^ - 1.cc:5:3: note: a type with different alignment is defined in another translation unit - } TEST_FLOAT128; - ^ + test.cc:3:51: warning: type ‘struct _TEST_FLOAT128’ violates one definition rule [-Wodr] + typedef __attribute__ ((__aligned__ (16))) struct _TEST_FLOAT128 { + ^ + test.cc:5:3: note: a type with different alignment is defined in another translation unit + } TEST_FLOAT128; + ^ # triggers a warning. ** Description changed: This code shows the bug: - --- + ---test.cc--- #include <stdio.h> typedef __attribute__ ((__aligned__ (16))) struct _TEST_FLOAT128 { __extension__ unsigned long long Part[2]; } TEST_FLOAT128; int main( void ) { TEST_FLOAT128 tf; printf( "alignof(tf) = %d\n",(int)__alignof__(tf) ); printf( "alignof(struct _TEST_FLOAT128) = %d\n",(int)__alignof__(struct _TEST_FLOAT128) ); printf( "alignof(TEST_FLOAT128) = %d\n",(int)__alignof__(TEST_FLOAT128) ); return 0; } --- $ g++-4.9 -O3 -flto -oalign test.cc -Wall -Wextra -g # compiles without warnings. $ g++-5 -O3 -flto -oalign test.cc -Wall -Wextra -g test.cc:3:51: warning: type ‘struct _TEST_FLOAT128’ violates one definition rule [-Wodr] typedef __attribute__ ((__aligned__ (16))) struct _TEST_FLOAT128 { ^ test.cc:5:3: note: a type with different alignment is defined in another translation unit } TEST_FLOAT128; ^ # triggers a warning. -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1720959 Title: Bug with LTO optimizations in G++? To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1720959/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs