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

Reply via email to