On Fri, Nov 11, 2011 at 06:57:58PM +0200, Ira Rosen wrote:
> On 11 November 2011 17:32, Jakub Jelinek <ja...@redhat.com> wrote:
> > 2011-11-11  Jakub Jelinek  <ja...@redhat.com>
> >
> >        PR tree-optimization/51058
> >        * tree-vect-slp.c (vect_remove_slp_scalar_calls): New function.
> >        (vect_schedule_slp): Call it.
> >        * tree-vect-stmts.c (vectorizable_call): If slp_node != NULL,
> >        don't replace scalar calls with clearing of their lhs here.
> 
> I think it's rhs.

I think it is lhs.  The scalar call is
  lhs = __builtin_copysign (arg1, arg2);
etc. and we transform it to
  lhs = 0.0;

> > --- gcc/testsuite/gfortran.fortran-torture/compile/pr51058.f90.jj       
> > 2011-11-11 13:26:14.665615842 +0100
> > +++ gcc/testsuite/gfortran.fortran-torture/compile/pr51058.f90  2011-11-11 
> > 13:25:50.000000000 +0100
> > @@ -0,0 +1,18 @@
> > +! PR tree-optimization/51058
> > +! { dg-do compile }
> > +subroutine pr51058(n, u, v, w, z)
> > +  double precision :: x(3,-2:16384), y(3,-2:16384), b, u, v, w, z
> > +  integer :: i, n
> > +  common /c/ x, y
> > +  do i = 1, n
> > +    b = u * int(x(1,i)) + sign(z,x(1,i))
> > +    x(1,i) = x(1,i) - b
> > +    y(1,i) = y(1,i) - b
> > +    b = v * int(x(2,i)) + sign(z,x(2,i))
> > +    x(2,i) = x(2,i) - b
> > +    y(2,i) = y(2,i) - b
> > +    b = w * int(x(3,i)) + sign(z,x(3,i))
> > +    x(3,i) = x(3,i) - b
> > +    y(3,i) = y(3,i) - b
> > +  end do
> > +end subroutine
> 
> Please add
> ! { dg-final { cleanup-tree-dump "vect" } }
> 
> OK otherwise.

This is not a /vect/ testcase, but fortran torture.  I guess
if you really want I could move it over to gfortran.dg/vect/ instead,
then the ! { dg-final { cleanup-tree-dump "vect" } }
would be indeed needed there.

        Jakub

Reply via email to