[Bug c++/84663] [6/7/8 Regression] internal compiler error: tree check: expected array_type, have error_mark in cp_complete_array_type, at cp/decl.c:8334

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Fri Mar 2 10:55:00 GMT 2018


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

Jakub Jelinek <jakub at gcc dot gnu.org> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Priority|P3                          |P4
             Status|UNCONFIRMED                 |NEW
   Last reconfirmed|                            |2018-03-02
                 CC|                            |jakub at gcc dot gnu.org,
                   |                            |jason at gcc dot gnu.org
   Target Milestone|---                         |6.5
            Summary|internal compiler error:    |[6/7/8 Regression] internal
                   |tree check: expected        |compiler error: tree check:
                   |array_type, have error_mark |expected array_type, have
                   |in cp_complete_array_type,  |error_mark in
                   |at cp/decl.c:8334           |cp_complete_array_type, at
                   |                            |cp/decl.c:8334
     Ever confirmed|0                           |1

--- Comment #1 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
struct S {
  typedef S T[8];
  int f : -1ULL;
  S () { struct { T d; } e[]; }
};

Regressed in between r118975, which gave just:
pr84663.C:3: warning: width of ‘S::f’ exceeds its type
pr84663.C: In constructor ‘S::S()’:
pr84663.C:4: error: storage size of ‘e’ isn't known
and r119009:
pr84663.C:3: warning: width of ‘S::f’ exceeds its type
pr84663.C:1: internal compiler error: in tree_low_cst, at tree.c:4556
Please submit a full bug report,
with preprocessed source if appropriate.
See <URL:http://gcc.gnu.org/bugs.html> for instructions.

In that range likely r118977.

Current trunk gives:
pr84663.C:3:12: warning: width of ‘S::f’ exceeds its type
   int f : -1ULL;
            ^~~~
pr84663.C: In constructor ‘S::S()’:
pr84663.C:4:28: error: size of array is too large
   S () { struct { T d; } e[]; }
                            ^
pr84663.C:4:28: internal compiler error: tree check: expected array_type, have
error_mark in cp_complete_array_type, at cp/decl.c:8291
0x15df0f1 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
        ../../gcc/tree.c:9337
0x7f1b71 tree_check(tree_node*, char const*, int, char const*, tree_code)
        ../../gcc/tree.h:3132
0x8cab45 cp_complete_array_type(tree_node**, tree_node*, bool)
        ../../gcc/cp/decl.c:8291


More information about the Gcc-bugs mailing list