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

--- Comment #9 from Tamar Christina <tnfchris at gcc dot gnu.org> ---
(In reply to rguent...@suse.de from comment #8)
> 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.

Oh, indeed, my bad. I had confused the change for the masked SIMD calls with
that one in my head :)

Reply via email to