[llvm] r221044 - IR: Restore the old behavior of getDISubprogram
David Majnemer
david.majnemer at gmail.com
Sat Nov 1 00:57:14 PDT 2014
Author: majnemer
Date: Sat Nov 1 02:57:14 2014
New Revision: 221044
URL: http://llvm.org/viewvc/llvm-project?rev=221044&view=rev
Log:
IR: Restore the old behavior of getDISubprogram
getDISubprogram was mistakenly thought to contain a bug: we thought we
might need to try harder if we found a DebugLoc we didn't find.
Modified:
llvm/trunk/lib/IR/DebugInfo.cpp
Modified: llvm/trunk/lib/IR/DebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=221044&r1=221043&r2=221044&view=diff
==============================================================================
--- llvm/trunk/lib/IR/DebugInfo.cpp (original)
+++ llvm/trunk/lib/IR/DebugInfo.cpp Sat Nov 1 02:57:14 2014
@@ -914,17 +914,16 @@ DISubprogram llvm::getDISubprogram(const
DISubprogram llvm::getDISubprogram(const Function *F) {
// We look for the first instr that has a debug annotation leading back to F.
- const LLVMContext &Ctx = F->getParent()->getContext();
for (auto &BB : *F) {
- for (auto &Inst : BB.getInstList()) {
- DebugLoc DLoc = Inst.getDebugLoc();
- if (DLoc.isUnknown())
- continue;
- const MDNode *Scope = DLoc.getScopeNode(Ctx);
- DISubprogram Subprogram = getDISubprogram(Scope);
- if (Subprogram.describes(F))
- return Subprogram;
- }
+ auto Inst = std::find_if(BB.begin(), BB.end(), [](const Instruction &Inst) {
+ return !Inst.getDebugLoc().isUnknown();
+ });
+ if (Inst == BB.end())
+ continue;
+ DebugLoc DLoc = Inst->getDebugLoc();
+ const MDNode *Scope = DLoc.getScopeNode(F->getParent()->getContext());
+ DISubprogram Subprogram = getDISubprogram(Scope);
+ return Subprogram.describes(F) ? Subprogram : DISubprogram();
}
return DISubprogram();
More information about the llvm-commits
mailing list