[PATCH] D73641: [LoopFusion] Move instructions from FC1.GuardBlock to FC0.GuardBlock and from FC0.ExitBlock to FC1.ExitBlock when proven safe.

Shixiong Xu via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Mar 11 07:16:53 PST 2021


xusx595 added a comment.

It seems isSafeToMoveBefore() on basic blocks is quite limited. It doesn't handle cases like

for.body3.lr.ph:                                  ; preds = %for.cond1.preheader

  %mul4 = mul nsw i32 %j.0123, %N, !dbg !14
  %add20 = add nsw i32 %mul4, %j.0123, !dbg !14
  %arrayidx21 = getelementptr inbounds float, float* %A, i32 %add20, !dbg !14
  %arrayidx21.promoted = load float, float* %arrayidx21, align 4, !dbg !15, !tbaa !16

It stops at  '%arrayidx21 = getelementptr inbounds float, float* %A, i32 %add20, !dbg !14', which uses 'add20'.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D73641/new/

https://reviews.llvm.org/D73641



More information about the llvm-commits mailing list