From 0acaefaf9d67786ffbc8700d8b65711fbb5f1e99 Mon Sep 17 00:00:00 2001 From: Patrik Hagglund Date: Thu, 16 Jun 2016 10:48:54 +0000 Subject: PR27938: Don't remove valid DebugLoc in Scalarizer Added checks to make sure the Scalarizer::transferMetadata() don't remove valid debug locations from instructions. This is important as the verifier pass require that e.g. inlinable callsites have a valid debug location. https://llvm.org/bugs/show_bug.cgi?id=27938 Patch by Karl-Johan Karlsson Reviewers: dblaikie Differential Revision: http://reviews.llvm.org/D20807 llvm-svn: 272884 --- llvm/lib/Transforms/Scalar/Scalarizer.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'llvm/lib/Transforms/Scalar/Scalarizer.cpp') diff --git a/llvm/lib/Transforms/Scalar/Scalarizer.cpp b/llvm/lib/Transforms/Scalar/Scalarizer.cpp index 3f6fd8f..5e6df0d 100644 --- a/llvm/lib/Transforms/Scalar/Scalarizer.cpp +++ b/llvm/lib/Transforms/Scalar/Scalarizer.cpp @@ -341,7 +341,8 @@ void Scalarizer::transferMetadata(Instruction *Op, const ValueVector &CV) { MI != ME; ++MI) if (canTransferMetadata(MI->first)) New->setMetadata(MI->first, MI->second); - New->setDebugLoc(Op->getDebugLoc()); + if (Op->getDebugLoc() && !New->getDebugLoc()) + New->setDebugLoc(Op->getDebugLoc()); } } } -- cgit v1.1