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