[Bug c/66283] New: [ICE] [IA64] verify type mis-diagnosis: type variant differs by TYPE_NO_FORCE_BLK

gary at intrepid dot com gcc-bugzilla@gcc.gnu.org
Mon May 25 23:22:00 GMT 2015


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


More information about the Gcc-bugs mailing list