[Bug tree-optimization/70729] Loop marked with omp simd pragma is not vectorized

rguenther at suse dot de gcc-bugzilla@gcc.gnu.org
Wed Apr 20 10:02:00 GMT 2016


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70729

--- Comment #7 from rguenther at suse dot de <rguenther at suse dot de> ---
On Tue, 19 Apr 2016, ienkovich at gcc dot gnu.org wrote:

> https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70729
> 
> Ilya Enkovich <ienkovich at gcc dot gnu.org> changed:
> 
>            What    |Removed                     |Added
> ----------------------------------------------------------------------------
>                  CC|                            |ienkovich at gcc dot gnu.org
> 
> --- Comment #5 from Ilya Enkovich <ienkovich at gcc dot gnu.org> ---
> (In reply to Richard Biener from comment #2)
> > Index: gcc/tree-ssa-loop-im.c
> > ===================================================================
> > --- gcc/tree-ssa-loop-im.c      (revision 235201)
> > +++ gcc/tree-ssa-loop-im.c      (working copy)
> > @@ -2198,6 +2198,9 @@ ref_indep_loop_p (struct loop *loop, im_
> >  {
> >    gcc_checking_assert (MEM_ANALYZABLE (ref));
> >  
> > +  if (loop->safelen == INT_MAX)
> > +    return true;
> > +
> >    return ref_indep_loop_p_2 (loop, ref, false);
> >  }
> >  
> > 
> > fixes this.  But better abstract loop->safelen == INT_MAX into a predicate
> > in cfgloop.h.
> > 
> 
> I believe any nonzero value should be good enough.

Any positive value I suppose.  But yes, if the reference address
is invariant then if safelen is > 0 it doesn't conflict with any
iteration.

I will test a patch.


More information about the Gcc-bugs mailing list