diff options
author | Patrik Hagglund <patrik.h.hagglund@ericsson.com> | 2016-06-16 10:48:54 +0000 |
---|---|---|
committer | Patrik Hagglund <patrik.h.hagglund@ericsson.com> | 2016-06-16 10:48:54 +0000 |
commit | 0acaefaf9d67786ffbc8700d8b65711fbb5f1e99 (patch) | |
tree | 8a61428ae5def7c243cff4b94996b67f05a01bd3 /llvm/lib/Transforms/Scalar/Scalarizer.cpp | |
parent | 4798eb6d592f7447fd5b6d8085ad287718997939 (diff) | |
download | bcm5719-llvm-0acaefaf9d67786ffbc8700d8b65711fbb5f1e99.tar.gz bcm5719-llvm-0acaefaf9d67786ffbc8700d8b65711fbb5f1e99.zip |
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
Diffstat (limited to 'llvm/lib/Transforms/Scalar/Scalarizer.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/Scalarizer.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/Scalarizer.cpp b/llvm/lib/Transforms/Scalar/Scalarizer.cpp index 3f6fd8fa1a7..5e6df0ddf6d 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()); } } } |