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

--- Comment #7 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
(In reply to Richard Biener from comment #6)
> (In reply to Tamar Christina from comment #5)
> > The given example is an easy one to drop, but I wonder what would happen if
> > the block had other instructions too
> > 
> > void foo(double * restrict a, double * restrict b, int n){
> >   int i;
> >   for(i=0; i<n; ++i){
> >     if (i % 1024 == 0)
> >       {
> >         __builtin_prefetch(&(b[i+1024]));
> >         a[i] = a[i] + b[i];
> >       }
> >   }
> > }
> > 
> > would block if-conversion if we don't drop it early enough.
> 
> I'd simply ignore prefetches during if-conversion analysis and drop them
> during transform.

Yeah that's what we did in r15-1211-gadcc815a01ae009d2768b6afb546e357bd37bbd2
though.  So I guess this is just a missing case during analysis.

Reply via email to