Revert "Debug info: Let dbg.values inserted by LowerDbgDeclare inherit the location"
[opencl/llvm.git] / lib / Transforms / Utils / Local.cpp
index 9199ed791272cb2d5be5f6cea22cbbebae5375dc..e2ba0473fd15a161cc89d1c7976ab9c56160a65b 100644 (file)
@@ -995,7 +995,14 @@ bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
     DbgVal = Builder.insertDbgValueIntrinsic(ExtendedArg, 0, DIVar, SI);
   else
     DbgVal = Builder.insertDbgValueIntrinsic(SI->getOperand(0), 0, DIVar, SI);
-  DbgVal->setDebugLoc(DDI->getDebugLoc());
+
+  // Propagate any debug metadata from the store onto the dbg.value.
+  DebugLoc SIDL = SI->getDebugLoc();
+  if (!SIDL.isUnknown())
+    DbgVal->setDebugLoc(SIDL);
+  // Otherwise propagate debug metadata from dbg.declare.
+  else
+    DbgVal->setDebugLoc(DDI->getDebugLoc());
   return true;
 }
 
@@ -1015,7 +1022,14 @@ bool llvm::ConvertDebugDeclareToDebugValue(DbgDeclareInst *DDI,
   Instruction *DbgVal =
     Builder.insertDbgValueIntrinsic(LI->getOperand(0), 0,
                                     DIVar, LI);
-  DbgVal->setDebugLoc(DDI->getDebugLoc());
+
+  // Propagate any debug metadata from the store onto the dbg.value.
+  DebugLoc LIDL = LI->getDebugLoc();
+  if (!LIDL.isUnknown())
+    DbgVal->setDebugLoc(LIDL);
+  // Otherwise propagate debug metadata from dbg.declare.
+  else
+    DbgVal->setDebugLoc(DDI->getDebugLoc());
   return true;
 }
 
@@ -1054,7 +1068,7 @@ bool llvm::LowerDbgDeclare(Function &F) {
          auto DbgVal =
            DIB.insertDbgValueIntrinsic(AI, 0,
                                        DIVariable(DDI->getVariable()), I);
-         DbgVal->setDebugLoc(DDI->getDebugLoc());
+         DbgVal->setDebugLoc(I->getDebugLoc());
        }
       DDI->eraseFromParent();
     }