https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91576

--- Comment #13 from Martin Liška <marxin at gcc dot gnu.org> ---
(In reply to Martin Liška from comment #3)
> Created attachment 46781 [details]
> Test-case #2
> 
> Since the same revision I see similar error:
> 
> $ g++ -flto -O2 *.ii 
> 1.ii:14:3: warning: type ‘struct differential3’ violates the C++ One
> Definition Rule [-Wodr]
>    14 | } differential3;
>       |   ^
> 2.ii:17:3: note: a different type is defined in another translation unit
>    17 | } differential3;
>       |   ^
> 1.ii:12:5: note: the first difference of corresponding definitions is field
> ‘dx’
>    12 |   A dx;
>       |     ^
> 2.ii:15:5: note: a field of same name but different type is defined in
> another translation unit
>    15 |   A dx;
>       |     ^
> 1.ii:1:33: note: type name ‘A’ should match type name ‘ccl::A’
>     1 | struct __attribute__((aligned)) A {};
>       |                                 ^
> 2.ii:2:33: note: the incompatible type is defined here
>     2 | struct __attribute__((aligned)) A {
>       |                                 ^
> 1.ii:15:8: warning: type ‘struct C’ violates the C++ One Definition Rule
> [-Wodr]
>    15 | struct C {
>       |        ^
> 2.ii:18:8: note: a different type is defined in another translation unit
>    18 | struct C {
>       |        ^
> 1.ii:16:5: note: the first difference of corresponding definitions is field
> ‘P’
>    16 |   A P;
>       |     ^
> 2.ii:19:5: note: a field of same name but different type is defined in
> another translation unit
>    19 |   A P;
>       |     ^
> 1.ii:1:33: note: type name ‘A’ should match type name ‘ccl::A’
>     1 | struct __attribute__((aligned)) A {};
>       |                                 ^
> 2.ii:2:33: note: the incompatible type is defined here
>     2 | struct __attribute__((aligned)) A {
>       |                                 ^
> 1.ii:3:8: warning: type ‘struct B’ violates the C++ One Definition Rule
> [-Wodr]
>     3 | struct B {
>       |        ^
> 2.ii:6:8: note: a different type is defined in another translation unit
>     6 | struct B {
>       |        ^
> 1.ii:4:5: note: the first difference of corresponding definitions is field
> ‘diffuse’
>     4 |   A diffuse;
>       |     ^
> 2.ii:7:5: note: a field of same name but different type is defined in
> another translation unit
>     7 |   A diffuse;
>       |     ^
> 1.ii:1:33: note: type name ‘A’ should match type name ‘ccl::A’
>     1 | struct __attribute__((aligned)) A {};
>       |                                 ^
> 2.ii:2:33: note: the incompatible type is defined here
>     2 | struct __attribute__((aligned)) A {
>       |                                 ^
> lto1: error: ‘TYPE_CANONICAL’ is not compatible
>  <record_type 0x7fbd73a87498 SubsurfaceIndirectRays cxx-odr-p BLK
>     size <integer_cst 0x7fbd73e788d0 type <integer_type 0x7fbd73c950a8
> bitsizetype> constant 17664>
>     unit-size <integer_cst 0x7fbd73e788a0 type <integer_type 0x7fbd73c95000
> sizetype> constant 2208>
>     user align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
> 0x7fbd73a87498
>     fields <field_decl 0x7fbd73a88a18 state
>         type <array_type 0x7fbd73a873f0 type <record_type 0x7fbd73a87348
> PathState>
>             BLK
>             size <integer_cst 0x7fbd73e78780 constant 10368>
>             unit-size <integer_cst 0x7fbd73e78768 constant 1296>
>             align:32 warn_if_not_align:0 symtab:0 alias-set -1
> structural-equality domain <integer_type 0x7fbd73e7db28>>
>         nonlocal BLK 1.ii:47:13 size <integer_cst 0x7fbd73e78780 10368>
> unit-size <integer_cst 0x7fbd73e78768 1296>
>         align:32 warn_if_not_align:0 offset_align 128
>         offset <integer_cst 0x7fbd73c80bd0 constant 0>
>         bit-offset <integer_cst 0x7fbd73c80c18 constant 0> context
> <record_type 0x7fbd73a87498 SubsurfaceIndirectRays>
>         chain <field_decl 0x7fbd73a88c78 num_rays type <integer_type
> 0x7fbd73c955e8 int>
>             nonlocal SI 1.ii:48:7
>             size <integer_cst 0x7fbd73c80de0 constant 32>
>             unit-size <integer_cst 0x7fbd73c80df8 constant 4>
>             align:32 warn_if_not_align:0 offset_align 128 offset
> <integer_cst 0x7fbd73e78768 1296> bit-offset <integer_cst 0x7fbd73c80c18 0>
> context <record_type 0x7fbd73a87498 SubsurfaceIndirectRays> chain
> <field_decl 0x7fbd73a88980 rays>>> context <namespace_decl 0x7fbd73a831c8
> ccl>>
>  <record_type 0x7fbd73a879d8 SubsurfaceIndirectRays cxx-odr-p BLK
>     size <integer_cst 0x7fbd73e788d0 type <integer_type 0x7fbd73c950a8
> bitsizetype> constant 17664>
>     unit-size <integer_cst 0x7fbd73e788a0 type <integer_type 0x7fbd73c95000
> sizetype> constant 2208>
>     user align:128 warn_if_not_align:0 symtab:0 alias-set -1 canonical-type
> 0x7fbd73a87498
>     fields <field_decl 0x7fbd73a8a5f0 state
>         type <array_type 0x7fbd73a873f0 type <record_type 0x7fbd73a87348
> PathState>
>             BLK
>             size <integer_cst 0x7fbd73e78780 constant 10368>
>             unit-size <integer_cst 0x7fbd73e78768 constant 1296>
>             align:32 warn_if_not_align:0 symtab:0 alias-set -1
> structural-equality domain <integer_type 0x7fbd73e7db28>>
>         nonlocal BLK 2.ii:50:13 size <integer_cst 0x7fbd73e78780 10368>
> unit-size <integer_cst 0x7fbd73e78768 1296>
>         align:32 warn_if_not_align:0 offset_align 128
>         offset <integer_cst 0x7fbd73c80bd0 constant 0>
>         bit-offset <integer_cst 0x7fbd73c80c18 constant 0> context
> <record_type 0x7fbd73a879d8 SubsurfaceIndirectRays>
>         chain <field_decl 0x7fbd73a8a7b8 num_rays type <integer_type
> 0x7fbd73c955e8 int>
>             nonlocal SI 2.ii:51:7
>             size <integer_cst 0x7fbd73c80de0 constant 32>
>             unit-size <integer_cst 0x7fbd73c80df8 constant 4>
>             align:32 warn_if_not_align:0 offset_align 128 offset
> <integer_cst 0x7fbd73e78768 1296> bit-offset <integer_cst 0x7fbd73c80c18 0>
> context <record_type 0x7fbd73a879d8 SubsurfaceIndirectRays> chain
> <field_decl 0x7fbd73a8a4c0 rays>>> context <namespace_decl 0x7fbd73a831c8
> ccl>
>     pointer_to_this <pointer_type 0x7fbd73a87d20>>
> lto1: internal compiler error: ‘verify_type’ failed
> 0xf5a148 verify_type(tree_node const*)
>       ../../gcc/tree.c:14775
> 0x7ec407 lto_fixup_state
>       ../../gcc/lto/lto-common.c:2582
> 0x7f6f84 lto_fixup_decls
>       ../../gcc/lto/lto-common.c:2613
> 0x7f6f84 read_cgraph_and_symbols(unsigned int, char const**)
>       ../../gcc/lto/lto-common.c:2848
> 0x7dd692 lto_main()
>       ../../gcc/lto/lto.c:616
> Please submit a full bug report,
> with preprocessed source if appropriate.
> Please include the complete backtrace with any bug report.
> See <https://gcc.gnu.org/bugs/> for instructions.
> lto-wrapper: fatal error: g++ returned 1 exit status
> compilation terminated.
> /usr/bin/ld: error: lto-wrapper failed
> collect2: error: ld returned 1 exit status

This issue is still valid on current trunk.

Reply via email to