On Fri, May 31, 2013 at 3:21 PM, Toon Moene <t...@moene.org> wrote: > On 05/31/2013 10:20 AM, Richard Biener wrote: > >> So - I doubt that you both do not get any ICEs and more performance. > > > I added the second suggested patch: > > Index: tree-vect-loop-manip.c > =================================================================== > --- tree-vect-loop-manip.c (revision 199454) > +++ tree-vect-loop-manip.c (working copy) > @@ -985,7 +985,7 @@ > > /* All loops have an outer scope; the only case loop->outer is NULL > is for > the function itself. */ > || !loop_outer (loop) > - || loop->num_nodes != 2 > +/* || loop->num_nodes != 2 */ > > || !empty_block_p (loop->latch) > || !single_exit (loop) > /* Verify that new loop exit condition can be trivially modified. */ > > And I still get no ICE sicking 3.5 million lines of Fortran on this > compiler. This is pretty suspicious - it might well be that checks further > down will prohibit vectorization to do anything on loops like > > SUBROUTINE XYZ(A, B, N) > DIMENSION A(N), B(N) > DO I = 1, N > IF (A(I) > 0.0) THEN > A(I) = B(I) / A(I) > ELSE > A(I) = B(I) > ENDIF > ENDDO > END
Well, you can easily look at the dumps. If the above is not if-converted then we'll likely say that we cannot vectorize the GIMPLE_COND statement. Richard.