https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96380
Bug ID: 96380 Summary: [10/11 Regression] ICE in tree check: expected integer_cst, have view_convert_expr in get_len, at tree.h:5954 Product: gcc Version: 11.0 Status: UNCONFIRMED Keywords: ice-on-invalid-code Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: haoxintu at gmail dot com Target Milestone: --- Hi, all. This invalid code makes GCC-trunk and GCC-10.2 ICE, and GCC-10 downwards versions compile it well without ICE. Input: //small.cc const int a; const long b; enum struct c; template <class> enum struct c : union enum class c { e = b, f = a }; enum class c {}; Command: g++ -fermissive -w small.cc Output: small.cc:5:15: internal compiler error: tree check: expected integer_cst, have view_convert_expr in get_len, at tree.h:5954 5 | enum class c {}; | ^ 0x7eb991 tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../gcc/tree.c:9687 0x8aeffa tree_check(tree_node const*, char const*, int, char const*, tree_code) ../../gcc/tree.h:3559 0x8aeffa wi::extended_tree<192>::get_len() const ../../gcc/tree.h:5954 0x8aeffa wi::int_traits<generic_wide_int<wi::extended_tree<192> > >::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<192> > const&) ../../gcc/wide-int.h:985 0x8aeffa wide_int_ref_storage<true, false>::wide_int_ref_storage<generic_wide_int<wi::extended_tree<192> > >(generic_wide_int<wi::extended_tree<192> > const&, unsigned int) ../../gcc/wide-int.h:1034 0x8aeffa generic_wide_int<wide_int_ref_storage<true, false> >::generic_wide_int<generic_wide_int<wi::extended_tree<192> > >(generic_wide_int<wi::extended_tree<192> > const&, unsigned int) ../../gcc/wide-int.h:790 0x8aeffa bool wi::lts_p<generic_wide_int<wi::extended_tree<192> >, generic_wide_int<wi::extended_tree<192> > >(generic_wide_int<wi::extended_tree<192> > const&, generic_wide_int<wi::extended_tree<192> > const&) ../../gcc/wide-int.h:1901 0x93bc08 wi::binary_traits<generic_wide_int<wi::extended_tree<192> >, generic_wide_int<wi::extended_tree<192> >, wi::int_traits<generic_wide_int<wi::extended_tree<192> > >::precision_type, wi::int_traits<generic_wide_int<wi::extended_tree<192> > >::precision_type>::signed_predicate_result operator< <generic_wide_int<wi::extended_tree<192> >, generic_wide_int<wi::extended_tree<192> > >(generic_wide_int<wi::extended_tree<192> > const&, generic_wide_int<wi::extended_tree<192> > const&) ../../gcc/wide-int.h:3248 0x93bc08 tree_int_cst_lt(tree_node const*, tree_node const*) ../../gcc/tree.h:6110 0x93bc08 finish_enum_value_list(tree_node*) ../../gcc/cp/decl.c:15573 0x9cc89b cp_parser_enum_specifier ../../gcc/cp/parser.c:19483 0x9cc89b cp_parser_type_specifier ../../gcc/cp/parser.c:17769 0x9cd17e cp_parser_decl_specifier_seq ../../gcc/cp/parser.c:14436 0x9cdf31 cp_parser_simple_declaration ../../gcc/cp/parser.c:13690 0x9f929e cp_parser_declaration ../../gcc/cp/parser.c:13510 0x9f998b cp_parser_translation_unit ../../gcc/cp/parser.c:4793 0x9f998b c_parse_file() ../../gcc/cp/parser.c:44081 0xb144fd c_common_parse_file() ../../gcc/c-family/c-opts.c:1188 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions. Reproduced in Godbolt : https://godbolt.org/z/YGPxsj Thanks, Haoxin