This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Fix vectorizer fallout


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  <rguenther@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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]