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

            Bug ID: 85285
           Summary: [6/7/8 Regression] ICE with flexible array in union
           Product: gcc
           Version: 8.0
            Status: UNCONFIRMED
          Keywords: ice-on-invalid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: reichelt at gcc dot gnu.org
  Target Milestone: ---

The following invalid code snippet triggers an ICE since GCC 6.1.0:

=================================
template<typename T> struct A
{
  union
  {
    T x;
  };
};

A<int[]> a;
=================================

bug.cc: In instantiation of 'union A<int []>::<unnamed>':
bug.cc:3:3:   required from 'struct A<int []>'
bug.cc:9:10:   required from here
bug.cc:4:3: internal compiler error: Segmentation fault
   {
   ^
0xebdf8f crash_signal
        ../../gcc/gcc/toplev.c:325
0xbf84cb contains_struct_check(tree_node*, tree_node_structure_enum, char
const*, int, char const*)
        ../../gcc/gcc/tree.h:3248
0xbf84cb size_binop_loc(unsigned int, tree_code, tree_node*, tree_node*)
        ../../gcc/gcc/fold-const.c:1883
0xeb2937 place_union_field
        ../../gcc/gcc/stor-layout.c:1193
0xeb2937 place_field(record_layout_info_s*, tree_node*)
        ../../gcc/gcc/stor-layout.c:1253
0x839a22 layout_nonempty_base_or_field
        ../../gcc/gcc/cp/class.c:4048
0x8454f4 layout_class_type
        ../../gcc/gcc/cp/class.c:6109
0x84a7ea finish_struct_1(tree_node*)
        ../../gcc/gcc/cp/class.c:6804
0x9928ab instantiate_class_template_1
        ../../gcc/gcc/cp/pt.c:11060
0x9928ab instantiate_class_template(tree_node*)
        ../../gcc/gcc/cp/pt.c:11100
0x9d8f7d complete_type(tree_node*)
        ../../gcc/gcc/cp/typeck.c:136
0x99275f instantiate_class_template_1
        ../../gcc/gcc/cp/pt.c:10896
0x99275f instantiate_class_template(tree_node*)
        ../../gcc/gcc/cp/pt.c:11100
0x9d8f7d complete_type(tree_node*)
        ../../gcc/gcc/cp/typeck.c:136
0x885fc7 start_decl_1(tree_node*, bool)
        ../../gcc/gcc/cp/decl.c:5275
0x8ac267 start_decl(cp_declarator const*, cp_decl_specifier_seq*, int,
tree_node*, tree_node*, tree_node**)
        ../../gcc/gcc/cp/decl.c:5238
0x93d573 cp_parser_init_declarator
        ../../gcc/gcc/cp/parser.c:19610
0x944d48 cp_parser_simple_declaration
        ../../gcc/gcc/cp/parser.c:13049
0x945b58 cp_parser_block_declaration
        ../../gcc/gcc/cp/parser.c:12874
0x949ae2 cp_parser_declaration
        ../../gcc/gcc/cp/parser.c:12772
Please submit a full bug report, [etc.]

Reply via email to