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

            Bug ID: 84632
           Summary: internal compiler error: tree check: expected
                    record_type or union_type or qual_union_type, have
                    array_type in reduced_constant_expression_p, at
                    cp/constexpr.c:1778
           Product: gcc
           Version: 8.0.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: vegard.nossum at gmail dot com
  Target Milestone: ---

Input:

class {
  &&a;
} b[] = b

Output:

$ xgcc -x c++ -S -fpermissive -
<stdin>:2:5: warning: ISO C++ forbids declaration of 'a' with no type
[-fpermissive]
<stdin>:3:3: error: initializer fails to determine size of 'b'
<stdin>:3:9: internal compiler error: tree check: expected record_type or
union_type or qual_union_type, have array_type in
reduced_constant_expression_p, at cp/constexpr.c:1778
0x65f8d0 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
        /home/vegard/git/gcc/gcc/tree.c:9337
0xa157d9 tree_check3(tree_node*, char const*, int, char const*, tree_code,
tree_code, tree_code)
        /home/vegard/git/gcc/gcc/tree.h:3172
0xa157d9 reduced_constant_expression_p(tree_node*)
        /home/vegard/git/gcc/gcc/cp/constexpr.c:1778
0xa159cc verify_constant
        /home/vegard/git/gcc/gcc/cp/constexpr.c:1822
0xa4e0c3 cxx_eval_outermost_constant_expr
        /home/vegard/git/gcc/gcc/cp/constexpr.c:4829
0xa5cf6c maybe_constant_init_1
        /home/vegard/git/gcc/gcc/cp/constexpr.c:5152
0x142bf0e store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc,
vl_embed>**, int)
        /home/vegard/git/gcc/gcc/cp/typeck2.c:836
0xb48848 check_initializer
        /home/vegard/git/gcc/gcc/cp/decl.c:6427
0xbdccae cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
        /home/vegard/git/gcc/gcc/cp/decl.c:7081
0xfa35d9 cp_parser_init_declarator
        /home/vegard/git/gcc/gcc/cp/parser.c:19720
0xfa8357 cp_parser_simple_declaration
        /home/vegard/git/gcc/gcc/cp/parser.c:13061
0xfae548 cp_parser_block_declaration
        /home/vegard/git/gcc/gcc/cp/parser.c:12879
0x1001295 cp_parser_declaration
        /home/vegard/git/gcc/gcc/cp/parser.c:12776
0xff826b cp_parser_declaration_seq_opt
        /home/vegard/git/gcc/gcc/cp/parser.c:12652
0xff9893 cp_parser_translation_unit
        /home/vegard/git/gcc/gcc/cp/parser.c:4559
0xff9893 c_parse_file()
        /home/vegard/git/gcc/gcc/cp/parser.c:38880
0x15a51f5 c_common_parse_file()
        /home/vegard/git/gcc/gcc/c-family/c-opts.c:1132

$ xgcc --version
xgcc (GCC) 8.0.1 20180228 (experimental)

Built from git fd1990b25777e5f1307eac1447e8fb5fefe747b4 (r258063).

Looks like bug #84424 but that has been fixed in r257924 and I'm using r258063.

7.3.0 seems fine.

Test case was reduced by C-Reduce.

Reply via email to