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.