https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66283
Bug ID: 66283 Summary: [ICE] [IA64] verify type mis-diagnosis: type variant differs by TYPE_NO_FORCE_BLK Product: gcc Version: 6.0 Status: UNCONFIRMED Severity: major Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: gary at intrepid dot com Target Milestone: --- This recent commit implemented additional type verification checks: r223252 | hubicka | 2015-05-16 13:51:50 -0700 (Sat, 16 May 2015) | 3 lines * tree.c (verify_type_variant): Verify tree_base and type_common flags. (verify_type): Verify STRING_FLAG. This triggers an ICE on IA64 when configured with --enable-checking and when the test program below is compiled with "-g". It may be possible to change the test so that the declaration of "struct S" to asserts TYPE_NO_FORCE_BLK() for a more common target like the x86_64, but I didn't try that. typedef volatile struct S opaque_qualified_t; struct S { unsigned long _s1; int _s2; }; void proc (opaque_qualified_t *p __attribute__((unused))) { } ice-no-force-blk.i: In function ‘proc’: ice-no-force-blk.i:12:1: error: type variant differs by TYPE_NO_FORCE_BLK. } ^ <record_type 0x2000000000b6eee0 S asm_written no-force-blk type_0 BLK size <integer_cst 0x2000000000a72388 type <integer_type 0x2000000000ab0150 bitsizetype> constant 128> unit size <integer_cst 0x2000000000a723a0 type <integer_type 0x2000000000ab00a8 sizetype> constant 16> align 64 symtab 12587232 alias set -1 canonical type 0x2000000000b6eee0 fields <field_decl 0x2000000000b41858 _s1 type <integer_type 0x2000000000ab0888 long unsigned int asm_written public unsigned DI size <integer_cst 0x2000000000a72340 constant 64> unit size <integer_cst 0x2000000000a72358 constant 8> align 64 symtab 12587632 alias set -1 canonical type 0x2000000000ab0888 precision 64 min <integer_cst 0x2000000000a72610 0> max <integer_cst 0x2000000000b20520 18446744073709551615> pointer_to_this <pointer_type 0x2000000000ab46e0>> unsigned DI file ice-no-force-blk.i line 5 col 18 size <integer_cst 0x2000000000a72340 64> unit size <integer_cst 0x2000000000a72358 8> align 64 offset_align 128 offset <integer_cst 0x2000000000a72370 constant 0> bit offset <integer_cst 0x2000000000a723b8 constant 0> context <record_type 0x2000000000b6eee0 S> chain <field_decl 0x2000000000b418f0 _s2 type <integer_type 0x2000000000ab0690 int> SI file ice-no-force-blk.i line 6 col 8 size <integer_cst 0x2000000000a72580 constant 32> unit size <integer_cst 0x2000000000a72598 constant 4> align 32 offset_align 128 offset <integer_cst 0x2000000000a72370 0> bit offset <integer_cst 0x2000000000a72340 64> context <record_type 0x2000000000b6eee0 S>>> context <translation_unit_decl 0x2000000000a200f0 D.1470> chain <type_decl 0x2000000000b41728 D.1463>> <record_type 0x2000000000b6f030 opaque_qualified_t volatile BLK size <integer_cst 0x2000000000a72388 type <integer_type 0x2000000000ab0150 bitsizetype> constant 128> unit size <integer_cst 0x2000000000a723a0 type <integer_type 0x2000000000ab00a8 sizetype> constant 16> align 64 symtab 12587152 alias set -1 canonical type 0x2000000000b6ef88 fields <field_decl 0x2000000000b41858 _s1 type <integer_type 0x2000000000ab0888 long unsigned int asm_written public unsigned DI size <integer_cst 0x2000000000a72340 constant 64> unit size <integer_cst 0x2000000000a72358 constant 8> align 64 symtab 12587632 alias set -1 canonical type 0x2000000000ab0888 precision 64 min <integer_cst 0x2000000000a72610 0> max <integer_cst 0x2000000000b20520 18446744073709551615> pointer_to_this <pointer_type 0x2000000000ab46e0>> unsigned DI file ice-no-force-blk.i line 5 col 18 size <integer_cst 0x2000000000a72340 64> unit size <integer_cst 0x2000000000a72358 8> align 64 offset_align 128 offset <integer_cst 0x2000000000a72370 constant 0> bit offset <integer_cst 0x2000000000a723b8 constant 0> context <record_type 0x2000000000b6eee0 S> chain <field_decl 0x2000000000b418f0 _s2 type <integer_type 0x2000000000ab0690 int> SI file ice-no-force-blk.i line 6 col 8 size <integer_cst 0x2000000000a72580 constant 32> unit size <integer_cst 0x2000000000a72598 constant 4> align 32 offset_align 128 offset <integer_cst 0x2000000000a72370 0> bit offset <integer_cst 0x2000000000a72340 64> context <record_type 0x2000000000b6eee0 S>>> context <translation_unit_decl 0x2000000000a200f0 D.1470> pointer_to_this <pointer_type 0x2000000000b6f570>> ice-no-force-blk.i:12:1: internal compiler error: verify_type failed 0x40000000025159ff verify_type(tree_node const*) /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/tree.c:13209 0x4000000000ad3d4f gen_type_die_with_usage /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/dwarf2out.c:20304 0x4000000000ad4b0f gen_type_die_with_usage /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/dwarf2out.c:20391 0x4000000000ad572f gen_type_die /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/dwarf2out.c:20488 0x4000000000adbfdf gen_decl_die /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/dwarf2out.c:21104 0x4000000000ac4d9f gen_subprogram_die /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/dwarf2out.c:18859 0x4000000000adb0af gen_decl_die /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/dwarf2out.c:21018 0x4000000000adee0f dwarf2out_decl /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/dwarf2out.c:21451 0x4000000000adee7f dwarf2out_function_decl /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/dwarf2out.c:21459 0x4000000000c9fc0f rest_of_handle_final /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/final.c:4525 0x4000000000ca037f execute /eng/upc/dev/gary/gupc-dev/src/gupc/gcc/final.c:4567