https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86988
Bug ID: 86988
Summary: [7/9 Regression] ICE: tree check: expected
integer_cst, have var_decl in get_len, at tree.h:5563
Product: gcc
Version: 9.0
Status: UNCONFIRMED
Keywords: ice-on-valid-code
Severity: normal
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: marxin at gcc dot gnu.org
CC: jason at gcc dot gnu.org, msebor at gcc dot gnu.org
Target Milestone: ---
Starting from r246662 we ICE on:
$ gcc /home/marxin/Programming/gcc/gcc/testsuite/g++.dg/ext/vla19.C
-Warray-bounds -O2 -c
during GIMPLE pass: vrp
/home/marxin/Programming/gcc/gcc/testsuite/g++.dg/ext/vla19.C: In function
‘void foo()’:
/home/marxin/Programming/gcc/gcc/testsuite/g++.dg/ext/vla19.C:8:1: internal
compiler error: tree check: expected integer_cst, have var_decl in get_len, at
tree.h:5563
8 | foo ()
| ^~~
0x7870e4 tree_check_failed(tree_node const*, char const*, int, char const*,
...)
/home/marxin/Programming/gcc/gcc/tree.c:9351
0x1153cd7 tree_check(tree_node const*, char const*, int, char const*,
tree_code)
/home/marxin/Programming/gcc/gcc/tree.h:3376
0x1153cd7 wi::extended_tree<128>::get_len() const
/home/marxin/Programming/gcc/gcc/tree.h:5563
0x1153cd7 wi::int_traits<generic_wide_int<wi::extended_tree<128> >
>::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<128> >
const&)
/home/marxin/Programming/gcc/gcc/wide-int.h:964
0x1153cd7 wide_int_ref_storage<true,
false>::wide_int_ref_storage<generic_wide_int<wi::extended_tree<128> >
>(generic_wide_int<wi::extended_tree<128> > const&, unsigned int)
/home/marxin/Programming/gcc/gcc/wide-int.h:1013
0x1153cd7 generic_wide_int<wide_int_ref_storage<true, false>
>::generic_wide_int<generic_wide_int<wi::extended_tree<128> >
>(generic_wide_int<wi::extended_tree<128> > const&, unsigned int)
/home/marxin/Programming/gcc/gcc/wide-int.h:788
0x1153cd7 wi::binary_traits<generic_wide_int<wi::extended_tree<128> >, int,
wi::int_traits<generic_wide_int<wi::extended_tree<128> > >::precision_type,
wi::int_traits<int>::precision_type>::result_type
wi::add<generic_wide_int<wi::extended_tree<128> >,
int>(generic_wide_int<wi::extended_tree<128> > const&, int const&)
/home/marxin/Programming/gcc/gcc/wide-int.h:2402
0x1146a85 wi::binary_traits<generic_wide_int<wi::extended_tree<128> >, int,
wi::int_traits<generic_wide_int<wi::extended_tree<128> > >::precision_type,
wi::int_traits<int>::precision_type>::operator_result
operator+<generic_wide_int<wi::extended_tree<128> >,
int>(generic_wide_int<wi::extended_tree<128> > const&, int const&)
/home/marxin/Programming/gcc/gcc/wide-int.h:3273
0x1146a85 vrp_prop::check_mem_ref(unsigned int, tree_node*, bool)
/home/marxin/Programming/gcc/gcc/tree-vrp.c:4690
0x1146cd9 check_array_bounds
/home/marxin/Programming/gcc/gcc/tree-vrp.c:4897
0x117486b walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*),
void*, hash_set<tree_node*, default_hash_traits<tree_node*> >*, tree_node*
(*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*,
hash_set<tree_node*, default_hash_traits<tree_node*> >*))
/home/marxin/Programming/gcc/gcc/tree.c:11484
0xc6e850 walk_gimple_op(gimple*, tree_node* (*)(tree_node**, int*, void*),
walk_stmt_info*)
/home/marxin/Programming/gcc/gcc/gimple-walk.c:202
0x113e5f1 check_array_bounds_dom_walker::before_dom_children(basic_block_def*)
/home/marxin/Programming/gcc/gcc/tree-vrp.c:4950
0x1677567 dom_walker::walk(basic_block_def*)
/home/marxin/Programming/gcc/gcc/domwalk.c:353
0x114235c vrp_prop::check_all_array_refs()
/home/marxin/Programming/gcc/gcc/tree-vrp.c:4967
0x1143e52 vrp_prop::vrp_finalize(bool)
/home/marxin/Programming/gcc/gcc/tree-vrp.c:6743
0x1151e6e execute_vrp
/home/marxin/Programming/gcc/gcc/tree-vrp.c:6816
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.
GCC 8 branch is fine, it again appeared in r263511.