[llvm] [MachineLICM] Allow hoisting loads from invariant address (PR #70796)

David Sherwood via llvm-commits llvm-commits at lists.llvm.org
Thu Nov 9 09:11:33 PST 2023


================
@@ -369,6 +377,36 @@ bool MachineLICMBase::runOnMachineFunction(MachineFunction &MF) {
   AA = &getAnalysis<AAResultsWrapperPass>().getAAResults();
 
   SmallVector<MachineLoop *, 8> Worklist(MLI->begin(), MLI->end());
+
+  // Initialize `AllowedToHoistLoads' if needed.
+  if (HoistConstLoads) {
+    auto TmpWorklist = Worklist;
+    // Initialize all loops with true values
+    while (!TmpWorklist.empty()) {
+      auto *L = TmpWorklist.pop_back_val();
+      AllowedToHoistLoads[L] = true;
+      TmpWorklist.insert(TmpWorklist.end(), L->getSubLoops().begin(),
----------------
david-arm wrote:

Oh, does MLI not already include subloops? I was hoping you could get away with just:

```
for (auto *L : Worklist) {
  AllowedToHoistLoads[L] = true;
}
```

It's quite likely that was a bogus assumption. :)

https://github.com/llvm/llvm-project/pull/70796


More information about the llvm-commits mailing list