[PATCH] D65464: [LoopFusion] Add ability to fuse guarded loops
Whitney via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Tue Jul 30 12:08:38 PDT 2019
Whitney added inline comments.
================
Comment at: llvm/lib/Transforms/Scalar/LoopFuse.cpp:741
+ "guards. Not Fusing.\n");
+ NonIdenticalGuards++;
+ continue;
----------------
reportLoopFusion<OptimizationRemarkMissed>(*FC0, *FC1,NonIdenticalGuards);
================
Comment at: llvm/lib/Transforms/Scalar/LoopFuse.cpp:761
+ "block. Not fusing.\n");
+ NonEmptyExitBlock++;
+ continue;
----------------
reportLoopFusion<OptimizationRemarkMissed>(*FC0, *FC1, NonEmptyExitBlock);
================
Comment at: llvm/lib/Transforms/Scalar/LoopFuse.cpp:768
+ "block. Not fusing.\n");
+ NonEmptyGuardBlock++;
+ continue;
----------------
reportLoopFusion<OptimizationRemarkMissed>(*FC0, *FC1, NonEmptyGuardBlock);
================
Comment at: llvm/lib/Transforms/Scalar/LoopFuse.cpp:1057
+ if (FC0CmpInst->isIdenticalTo(FC1CmpInst))
+ return true;
+
----------------
what if FC0 guard first successor is FC0 Loop, but FC1 guard second successor is FC1 Loop?
================
Comment at: llvm/lib/Transforms/Scalar/LoopFuse.cpp:1089
+ bool isEmptyExitBlock(const FusionCandidate &FC) const {
+ return FC.ExitBlock->size() == 1;
+ }
----------------
Do we need to assert FC.ExitBlock != nullptr?
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D65464/new/
https://reviews.llvm.org/D65464
More information about the llvm-commits
mailing list