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.