https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113163
--- Comment #5 from Tobias Burnus <burnus at gcc dot gnu.org> ---
While higher at the call stack:
#3 0x000000000148714f in vect_transform_loop
(loop_vinfo=loop_vinfo@entry=0x350f2a0,
loop_vectorized_call=loop_vectorized_call@entry=0x0)
at src/gcc-mainline/gcc/tree-vect-loop.cc:11911
11911 epilogue = vect_do_peeling (loop_vinfo, niters, nitersm1,
&niters_vector,
(gdb) p debug_tree(niters)
<integer_cst 0x7ffff7bb2030 type <integer_type 0x7ffff7b5e3f0> constant 6>
One level down:
#2 0x0000000001498154 in vect_do_peeling
(loop_vinfo=loop_vinfo@entry=0x350f2a0, niters=<optimized out>,
niters@entry=0x7ffff7bb2030,
nitersm1=nitersm1@entry=0x7ffff7bb2c78,
niters_vector=niters_vector@entry=0x7fffffffda60,
step_vector=step_vector@entry=0x7fffffffda68,
niters_vector_mult_vf_var=niters_vector_mult_vf_var@entry=0x7fffffffda70,
th=<optimized out>, check_profitability=<optimized out>,
niters_no_overflow=<optimized out>, advance=<optimized out>)
at src/gcc-mainline/gcc/tree-vect-loop-manip.cc:3399
3399 vect_update_ivs_after_vectorizer (loop_vinfo,
niters_vector_mult_vf,
where niters_vector_mult_vf is ssa_name that fails in the assert.
The variable seems to be generated a few lines up in the same function (line
3375 and following):
if (!integer_onep (*step_vector))
{
/* On exit from the loop we will have an easy way of calcalating
NITERS_VECTOR / STEP * STEP. Install a dummy definition
until then. */
niters_vector_mult_vf = make_ssa_name (TREE_TYPE (*niters_vector));
SSA_NAME_DEF_STMT (niters_vector_mult_vf) = gimple_build_nop ();
*niters_vector_mult_vf_var = niters_vector_mult_vf;
}
else
vect_gen_vector_loop_niters_mult_vf (loop_vinfo, *niters_vector,
&niters_vector_mult_vf);