https://gcc.gnu.org/bugzilla/show_bug.cgi?id=99121
Bug ID: 99121 Summary: [9/10/11 Regression] ICE tree check: expected integer_cst, have var_decl in get_len, at tree.h:6037 Product: gcc Version: 11.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: gs...@t-online.de Target Milestone: --- Changed between 20180708 and 20180722 at -O2+ : $ cat z1.c void f (int); void g (int n) { int a[n][0]; f (((int *) a)[0]); } $ gcc-9-20180708 -c z1.c -Wall -O2 $ gcc-11-20210214 -c z1.c -Wall -O1 $ $ gcc-11-20210214 -c z1.c -Wall -O2 during GIMPLE pass: vrp z1.c: In function 'g': z1.c:2:6: internal compiler error: tree check: expected integer_cst, have var_decl in get_len, at tree.h:6037 2 | void g (int n) | ^ 0x6305f8 tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../gcc/tree.c:9814 0xa1a34d tree_check(tree_node const*, char const*, int, char const*, tree_code) ../../gcc/tree.h:3605 0xa1a34d wi::extended_tree<128>::get_len() const ../../gcc/tree.h:6037 0xa1a34d wi::int_traits<generic_wide_int<wi::extended_tree<128> > >::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<128> > const&) ../../gcc/wide-int.h:985 0xa1a34d 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) ../../gcc/wide-int.h:1034 0xa1a34d 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) ../../gcc/wide-int.h:790 0xa1a34d wi::binary_traits<generic_wide_int<wi::extended_tree<128> >, generic_wide_int<wi::extended_tree<128> >, wi::int_traits<generic_wide_int<wi::extended_tree<128> > >::precision_type, wi::int_traits<generic_wide_int<wi::extended_tree<128> > >::precision_type>::result_type wi::sub<generic_wide_int<wi::extended_tree<128> >, generic_wide_int<wi::extended_tree<128> > >(generic_wide_int<wi::extended_tree<128> > const&, generic_wide_int<wi::extended_tree<128> > const&) ../../gcc/wide-int.h:2512 0x17b934c wi::binary_traits<generic_wide_int<wi::extended_tree<128> >, generic_wide_int<wi::extended_tree<128> >, wi::int_traits<generic_wide_int<wi::extended_tree<128> > >::precision_type, wi::int_traits<generic_wide_int<wi::extended_tree<128> > >::precision_type>::operator_result operator-<generic_wide_int<wi::extended_tree<128> >, generic_wide_int<wi::extended_tree<128> > >(generic_wide_int<wi::extended_tree<128> > const&, generic_wide_int<wi::extended_tree<128> > const&) ../../gcc/wide-int.h:3297 0x17b934c array_bounds_checker::check_mem_ref(unsigned int, tree_node*, bool) ../../gcc/gimple-array-bounds.cc:620 0x17b9c19 array_bounds_checker::check_array_bounds(tree_node**, int*, void*) ../../gcc/gimple-array-bounds.cc:909 0x109bde3 walk_tree_1(tree_node**, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*, tree_node* (*)(tree_node**, int*, tree_node* (*)(tree_node**, int*, void*), void*, hash_set<tree_node*, false, default_hash_traits<tree_node*> >*)) ../../gcc/tree.c:12099 0xa2bff3 walk_gimple_op(gimple*, tree_node* (*)(tree_node**, int*, void*), walk_stmt_info*) ../../gcc/gimple-walk.c:202 0x17b5201 check_array_bounds_dom_walker::before_dom_children(basic_block_def*) ../../gcc/gimple-array-bounds.cc:966 0x179f077 dom_walker::walk(basic_block_def*) ../../gcc/domwalk.c:309 0x17b721a array_bounds_checker::check() ../../gcc/gimple-array-bounds.cc:980 0x1069181 execute_vrp ../../gcc/tree-vrp.c:4517