[Bug c++/85136] New: ICE with array as template variable
reichelt at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Mar 30 20:34:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=85136
Bug ID: 85136
Summary: ICE with array as template variable
Product: gcc
Version: 8.0
Status: UNCONFIRMED
Keywords: ice-on-valid-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 valid code snippet triggers an ICE since GCC 5.1.0
(when variable templates were introduced):
================================================
enum { e };
template<int> const int x[] = { [e] = 0 };
================================================
bug.cc:3:41: internal compiler error: tree check: expected integer_cst, have
nop_expr in get_len, at tree.h:5572
template<int> const int x[] = { [e] = 0 };
^
0x78c8a6 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
../../gcc/gcc/tree.c:9322
0x67da95 tree_check(tree_node const*, char const*, int, char const*, tree_code)
../../gcc/gcc/tree.h:3391
0x67da95 wi::extended_tree<192>::get_len() const
../../gcc/gcc/tree.h:5572
0x67da95 wi::int_traits<generic_wide_int<wi::extended_tree<192> >
>::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<192> >
const&)
../../gcc/gcc/wide-int.h:934
0x67da95 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/gcc/wide-int.h:983
0x67da95 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/gcc/wide-int.h:758
0x67da95 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/gcc/wide-int.h:1849
0x67da95 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/gcc/wide-int.h:3170
0x67da95 tree_int_cst_lt(tree_node const*, tree_node const*)
../../gcc/gcc/tree.h:5728
0x67da95 complete_array_type(tree_node**, tree_node*, bool)
../../gcc/gcc/c-family/c-common.c:6363
0x887821 cp_complete_array_type(tree_node**, tree_node*, bool)
../../gcc/gcc/cp/decl.c:8369
0x887a4e maybe_deduce_size_from_array_init
../../gcc/gcc/cp/decl.c:5474
0x8a047c cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int)
../../gcc/gcc/cp/decl.c:7030
0x93c9fb cp_parser_init_declarator
../../gcc/gcc/cp/parser.c:19741
0x942fca cp_parser_single_declaration
../../gcc/gcc/cp/parser.c:27303
0x94310c cp_parser_template_declaration_after_parameters
../../gcc/gcc/cp/parser.c:26905
0x9439cc cp_parser_explicit_template_declaration
../../gcc/gcc/cp/parser.c:27142
0x9439cc cp_parser_template_declaration_after_export
../../gcc/gcc/cp/parser.c:27161
0x948d69 cp_parser_declaration
../../gcc/gcc/cp/parser.c:12731
0x949051 cp_parser_declaration_seq_opt
../../gcc/gcc/cp/parser.c:12658
Please submit a full bug report, [etc.]
More information about the Gcc-bugs
mailing list