https://gcc.gnu.org/bugzilla/show_bug.cgi?id=69589
Jan Hubicka <hubicka at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |ASSIGNED Last reconfirmed| |2016-02-25 Ever confirmed|0 |1 --- Comment #15 from Jan Hubicka <hubicka at gcc dot gnu.org> --- Looking into the ICE now. Interesting detail is that type S is not merged even though it is very simple: #pragma GCC visibility push(hidden) struct S { int e; virtual ~S () {} }; --- aa 2016-02-25 14:35:42.111872702 +0100 +++ bb 2016-02-25 14:35:40.918649436 +0100 @@ -1,24 +1,26 @@ - <record_type 0x7ffff6cbc2a0 S addressable needs-constructing BLK + + <record_type 0x7ffff6cc1738 S addressable needs-constructing BLK size <integer_cst 0x7ffff6ad5c00 type <integer_type 0x7ffff6ad92a0 bitsizetype> constant 128> unit size <integer_cst 0x7ffff6ad5c18 type <integer_type 0x7ffff6ad91f8 sizetype> constant 16> align 64 symtab 0 alias set -1 canonical type 0x7ffff6cbc2a0 - fields <field_decl 0x7ffff6cba260 _vptr.S + fields <field_decl 0x7ffff6cc0428 _vptr.S type <pointer_type 0x7ffff6cbc1f8 type <pointer_type 0x7ffff6cbc0a8 __vtbl_ptr_type> unsigned DI size <integer_cst 0x7ffff6ad5bb8 constant 64> unit size <integer_cst 0x7ffff6ad5bd0 constant 8> align 64 symtab 0 alias set -1 structural equality> - unsigned virtual DI file a.C line 7 col 8 + unsigned virtual DI file b.C line 38 col 8 size <integer_cst 0x7ffff6ad5bb8 constant 64> unit size <integer_cst 0x7ffff6ad5bd0 constant 8> align 64 offset_align 128 offset <integer_cst 0x7ffff6ad5be8 constant 0> - bit offset <integer_cst 0x7ffff6ad5c30 constant 0> context <record_type 0x7ffff6cbc2a0 S> - chain <field_decl 0x7ffff6cba2f8 e type <integer_type 0x7ffff6ad97e0 int> - nonlocal SI file a.C line 8 col 7 + bit offset <integer_cst 0x7ffff6ad5c30 constant 0> context <record_type 0x7ffff6cc1738 S> + chain <field_decl 0x7ffff6cc0558 e type <integer_type 0x7ffff6ad97e0 int> + nonlocal SI file b.C line 39 col 7 size <integer_cst 0x7ffff6ad5df8 constant 32> unit size <integer_cst 0x7ffff6ad5e10 constant 4> align 32 offset_align 128 offset <integer_cst 0x7ffff6ad5be8 constant 0> - bit offset <integer_cst 0x7ffff6ad5bb8 constant 64> context <record_type 0x7ffff6cbc2a0 S>>> context <translation_unit_decl 0x7ffff6adf168 D.3884> - chain <type_decl 0x7ffff6cba1c8 S>>duplicate #0 + bit offset <integer_cst 0x7ffff6ad5bb8 constant 64> context <record_type 0x7ffff6cc1738 S>>> context <translation_unit_decl 0x7ffff6adf1e0 D.3930> + pointer_to_this <pointer_type 0x7ffff6cc17e0> chain <type_decl 0x7ffff6cc04c0 S>> <translation_unit_decl 0x7ffff6adf1e0 D.3930 VOID file (null) line 0 col 0 + align 1> dunno why it can't be merged. Richi, any idea?