While printing "interesting" breakpoint locations for debug info quality test harness, focus only on entry block's terminator for now.

llvm-svn: 124610
This commit is contained in:
Devang Patel 2011-01-31 21:36:24 +00:00
parent dd88dbf9d2
commit b07ec831cf
1 changed files with 12 additions and 27 deletions

View File

@ -349,34 +349,19 @@ struct BreakpointPrinter : public FunctionPass {
}
virtual bool runOnFunction(Function &F) {
for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I) {
BasicBlock::const_iterator BI = I->end();
--BI;
do {
const Instruction *In = BI;
const DebugLoc DL = In->getDebugLoc();
if (!DL.isUnknown()) {
DIScope S(DL.getScope(getGlobalContext()));
Out << S.getFilename() << " " << DL.getLine() << "\n";
break;
}
--BI;
} while (BI != I->begin());
break;
}
BasicBlock &EntryBB = F.getEntryBlock();
for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I) {
BasicBlock *BB = I;
if (BB == &EntryBB) continue;
for (BasicBlock::iterator BI = I->begin(), BE = I->end(); BI != BE; ++BI)
if (CallInst *CI = dyn_cast<CallInst>(BI)) {
const DebugLoc DL = CI->getDebugLoc();
if (!DL.isUnknown()) {
DIScope S(DL.getScope(getGlobalContext()));
Out << S.getFilename() << " " << DL.getLine() << "\n";
}
}
}
BasicBlock::const_iterator BI = EntryBB.end();
--BI;
do {
const Instruction *In = BI;
const DebugLoc DL = In->getDebugLoc();
if (!DL.isUnknown()) {
DIScope S(DL.getScope(getGlobalContext()));
Out << S.getFilename() << " " << DL.getLine() << "\n";
break;
}
--BI;
} while (BI != EntryBB.begin());
return false;
}