[Bug 1720959] [NEW] Bug with LTO optimizations in G++?

Vasco Alexandre da Silva Costa 1720959 at bugs.launchpad.net
Tue Oct 3 07:20:44 UTC 2017


Public bug reported:

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.

** Affects: gcc-5 (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-5 in Ubuntu.
https://bugs.launchpad.net/bugs/1720959

Title:
  Bug with LTO optimizations in G++?

Status in gcc-5 package in Ubuntu:
  New

Bug description:
  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.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-5/+bug/1720959/+subscriptions



More information about the foundations-bugs mailing list