mirror of
https://github.com/RPCSX/llvm.git
synced 2024-11-30 07:00:45 +00:00
DebugInfoFinder::processModule was foiling my plot by
materializing an MDNode for every debugloc. don't do that! :) "clang -g -S t.c" really no longer makes mdnodes for location tuples now. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100224 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
42f95ca96b
commit
28a9bf67e2
@ -1146,16 +1146,31 @@ Instruction *DIFactory::InsertDbgValueIntrinsic(Value *V, uint64_t Offset,
|
||||
|
||||
/// processModule - Process entire module and collect debug info.
|
||||
void DebugInfoFinder::processModule(Module &M) {
|
||||
unsigned MDDbgKind = M.getMDKindID("dbg");
|
||||
|
||||
for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
|
||||
for (Function::iterator FI = (*I).begin(), FE = (*I).end(); FI != FE; ++FI)
|
||||
for (BasicBlock::iterator BI = (*FI).begin(), BE = (*FI).end(); BI != BE;
|
||||
++BI) {
|
||||
if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(BI))
|
||||
if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(BI)) {
|
||||
processDeclare(DDI);
|
||||
else if (MDNode *L = BI->getMetadata(MDDbgKind))
|
||||
processLocation(DILocation(L));
|
||||
continue;
|
||||
}
|
||||
|
||||
DebugLoc Loc = BI->getDebugLoc();
|
||||
if (Loc.isUnknown())
|
||||
continue;
|
||||
|
||||
LLVMContext &Ctx = BI->getContext();
|
||||
DIDescriptor Scope(Loc.getScope(Ctx));
|
||||
|
||||
if (Scope.isCompileUnit())
|
||||
addCompileUnit(DICompileUnit(Scope.getNode()));
|
||||
else if (Scope.isSubprogram())
|
||||
processSubprogram(DISubprogram(Scope.getNode()));
|
||||
else if (Scope.isLexicalBlock())
|
||||
processLexicalBlock(DILexicalBlock(Scope.getNode()));
|
||||
|
||||
if (MDNode *IA = Loc.getInlinedAt(Ctx))
|
||||
processLocation(DILocation(IA));
|
||||
}
|
||||
|
||||
NamedMDNode *NMD = M.getNamedMetadata("llvm.dbg.gv");
|
||||
|
Loading…
Reference in New Issue
Block a user