https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106717
Bug ID: 106717 Summary: [13 Regression] ICE: tree check: expected integer_cst, have poly_int_cst in get_len, at tree.h:6247 Product: gcc Version: 13.0 Status: UNCONFIRMED Keywords: ice-on-valid-code Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- Target: aarch64-linux-gnu gcc 13.0.0 20220821 snapshot (g:d6a39c25c05c6ed5df8ce49eda719d17e40e29bb) ICEs when compiling the following testcase w/ -mcpu=neoverse-512tvb -O2: void foo (int *p) { int *a = p; int i; p[0] = 0; for (i = 0; i < 3; ++i) { ++*a; ++a; } p[1] = 0; } % aarch64-linux-gnu-gcc-13.0.0 -mcpu=neoverse-512tvb -O2 -c yhugtech.c during GIMPLE pass: slp yhugtech.c: In function 'foo': yhugtech.c:2:1: internal compiler error: tree check: expected integer_cst, have poly_int_cst in get_len, at tree.h:6247 2 | foo (int *p) | ^~~ 0x7ff2be tree_check_failed(tree_node const*, char const*, int, char const*, ...) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree.cc:8817 0x1d34223 tree_check(tree_node const*, char const*, int, char const*, tree_code) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree.h:3764 0x1d34223 wi::extended_tree<576>::get_len() const /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree.h:6247 0x1d34223 wi::int_traits<generic_wide_int<wi::extended_tree<576> > >::decompose(long*, unsigned int, generic_wide_int<wi::extended_tree<576> > const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/wide-int.h:985 0x1d34223 wide_int_ref_storage<true, false>::wide_int_ref_storage<generic_wide_int<wi::extended_tree<576> > >(generic_wide_int<wi::extended_tree<576> > const&, unsigned int) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/wide-int.h:1034 0x1d34223 generic_wide_int<wide_int_ref_storage<true, false> >::generic_wide_int<generic_wide_int<wi::extended_tree<576> > >(generic_wide_int<wi::extended_tree<576> > const&, unsigned int) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/wide-int.h:790 0x1d34223 bool wi::eq_p<generic_wide_int<wi::extended_tree<576> >, int>(generic_wide_int<wi::extended_tree<576> > const&, int const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/wide-int.h:1872 0x1d34223 bool wi::ne_p<generic_wide_int<wi::extended_tree<576> >, int>(generic_wide_int<wi::extended_tree<576> > const&, int const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/wide-int.h:1910 0x1d34223 wi::binary_traits<generic_wide_int<wi::extended_tree<576> >, int, wi::int_traits<generic_wide_int<wi::extended_tree<576> > >::precision_type, wi::int_traits<int>::precision_type>::predicate_result operator!=<generic_wide_int<wi::extended_tree<576> >, int>(generic_wide_int<wi::extended_tree<576> > const&, int const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/wide-int.h:3308 0x1d34223 if_nonpoly2<generic_wide_int<wi::extended_tree<576> >, int, bool, poly_int_traits<generic_wide_int<wi::extended_tree<576> > >::is_poly, poly_int_traits<int>::is_poly>::type maybe_ne<generic_wide_int<wi::extended_tree<576> >, int>(generic_wide_int<wi::extended_tree<576> > const&, int const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/poly-int.h:1313 0x1d34223 bool ranges_maybe_overlap_p<generic_wide_int<wi::extended_tree<576> >, generic_wide_int<wi::extended_tree<576> >, generic_wide_int<wi::extended_tree<576> >, generic_wide_int<wi::extended_tree<576> > >(generic_wide_int<wi::extended_tree<576> > const&, generic_wide_int<wi::extended_tree<576> > const&, generic_wide_int<wi::extended_tree<576> > const&, generic_wide_int<wi::extended_tree<576> > const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/poly-int.h:2635 0x1d34223 bool ranges_maybe_overlap_p<generic_wide_int<wi::extended_tree<576> >, generic_wide_int<wi::extended_tree<576> >, generic_wide_int<wi::extended_tree<576> >, generic_wide_int<wi::extended_tree<576> > >(generic_wide_int<wi::extended_tree<576> > const&, generic_wide_int<wi::extended_tree<576> > const&, generic_wide_int<wi::extended_tree<576> > const&, generic_wide_int<wi::extended_tree<576> > const&) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/poly-int.h:2629 0x1d27c8a dr_may_alias_p(data_reference const*, data_reference const*, loop*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree-data-ref.cc:2980 0x1d300f9 initialize_data_dependence_relation(data_reference*, data_reference*, vec<loop*, va_heap, vl_ptr>) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree-data-ref.cc:3469 0x1d488f9 vect_slp_analyze_node_dependences /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree-vect-data-refs.cc:747 0x1d4af64 vect_slp_analyze_instance_dependence(vec_info*, _slp_instance*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree-vect-data-refs.cc:855 0x12663fb vect_slp_analyze_bb_1 /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree-vect-slp.cc:5902 0x12663fb vect_slp_region /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree-vect-slp.cc:5977 0x1267d84 vect_slp_bbs /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree-vect-slp.cc:6168 0x12681c8 vect_slp_function(function*) /var/tmp/portage/cross-aarch64-linux-gnu/gcc-13.0.0_p20220821/work/gcc-13-20220821/gcc/tree-vect-slp.cc:6256