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

--- Comment #6 from Richard Biener <rguenth at gcc dot gnu.org> ---
(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.

Reply via email to