Bug with LTO optimizations in G++?

Bug #1720959 reported by Vasco Alexandre da Silva Costa
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
gcc-5 (Ubuntu)
New
Undecided
Unassigned

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.

Revision history for this message
Vasco Alexandre da Silva Costa (vasco-costa) wrote :

gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.4)

description: updated
description: updated
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.