[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