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);

Reply via email to