[llvm] [DebugInfo][LoopLoadElim] Fix missing debug location updates (PR #91839)

Shan Huang via llvm-commits llvm-commits at lists.llvm.org
Tue May 14 19:02:29 PDT 2024


================
@@ -462,14 +466,20 @@ class LoadEliminationForLoop {
            "The type sizes should match!");
 
     Value *StoreValue = Cand.Store->getValueOperand();
-    if (LoadType != StoreType)
+    if (LoadType != StoreType) {
       StoreValue = CastInst::CreateBitOrPointerCast(StoreValue, LoadType,
                                                     "store_forward_cast",
                                                     Cand.Store->getIterator());
+      // Because it casts the old `load` value and is used by the new `phi`
+      // which replaces the old `load`, we give the `load`'s debug location
+      // to it.
+      cast<Instruction>(StoreValue)->setDebugLoc(Cand.Load->getDebugLoc());
+    }
 
     PHI->addIncoming(StoreValue, L->getLoopLatch());
 
     Cand.Load->replaceAllUsesWith(PHI);
+    PHI->setDebugLoc(Cand.Load->getDebugLoc());
----------------
Apochens wrote:

Hmm, should we ping other guys again? 🤔

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


More information about the llvm-commits mailing list