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

--- Comment #8 from rguenther at suse dot de <rguenther at suse dot de> ---
On Thu, 8 May 2025, tnfchris at gcc dot gnu.org wrote:

> 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.

That didn't touch if-conversion at all.

Reply via email to