On Thu, 21 Mar 2013, Richard Biener wrote: > On Wed, 20 Mar 2013, David Edelsohn wrote: > > > The gfortran testsuite on PowerPC now produces a number of new ICEs > > when vectorization is enabled: > > > > /tmp/20130320/gcc/testsuite/gfortran/../../gfortran > > -B/tmp/20130320/gcc/testsuite/gfortran/../../ > > -B/tmp/20130320/powerpc-ibm-aix7.1.0.0/./libgfortran/ > > /nasfarm/dje/src/src/gcc/testsuite/gfortran.fortran-torture/execute/scalarize2.f90 > > -fno-diagnostics-show-caret -w -O2 -ftree-vectorize -maltivec > > > > /nasfarm/dje/src/src/gcc/testsuite/gfortran.fortran-torture/execute/scalarize2.f90: > > In function 'main': > > /nasfarm/dje/src/src/gcc/testsuite/gfortran.fortran-torture/execute/scalarize2.f90:23:0: > > internal compiler error: tree check: expected ssa_name, have var_decl > > in verify_ssa, at tree-ssa.c:1008 > > > > similarly for > > > > nasfarm/dje/src/src/gcc/testsuite/gfortran.dg/vect/vect-2.f90: In > > function 'foo': > > /nasfarm/dje/src/src/gcc/testsuite/gfortran.dg/vect/vect-2.f90:4:0: > > internal compiler error: tree check: expected ssa_name, have var_decl > > in verify_ssa, at tree-ssa.c:1008 > > The reporter of the original fallout reported sth similar for ARM > but I wasn't able to reproduce with a cross and then he wasn't either. > > This one I can reproduce, thus, investigating.
I am testing the following (in this case the realign-load prologue setup isn't setting any virtual operands and thus triggering a virtual SSA update by renaming). Richard. 2013-03-21 Richard Biener <rguent...@suse.de> * tree-vect-loop-manip.c (slpeel_tree_peel_loop_to_edge): Update virtual SSA form. Index: gcc/tree-vect-loop-manip.c =================================================================== *** gcc/tree-vect-loop-manip.c (revision 196860) --- gcc/tree-vect-loop-manip.c (working copy) *************** slpeel_tree_peel_loop_to_edge (struct lo *** 1057,1062 **** --- 1057,1071 ---- if (!slpeel_can_duplicate_loop_p (loop, e)) return NULL; + /* We might have a queued need to update virtual SSA form. As we + delete the update SSA machinery below after doing a regular + incremental SSA update during loop copying make sure we don't + lose that fact. + ??? Needing to update virtual SSA form by renaming is unfortunate + but not all of the vectorizer code inserting new loads / stores + properly assigns virtual operands to those statements. */ + update_ssa (TODO_update_ssa_only_virtuals); + /* If the loop has a virtual PHI, but exit bb doesn't, create a virtual PHI in the exit bb and rename all the uses after the loop. This simplifies the *guard[12] routines, which assume loop closed SSA form for all PHIs