mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-28 00:50:37 +00:00
In debug output, clearly list new instructions without DebugLoc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130957 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
51a04adc5e
commit
ef7b4685f1
@ -51,7 +51,6 @@ namespace llvm {
|
||||
unsigned NumDbgLineLost, NumDbgValueLost;
|
||||
std::string PassName;
|
||||
Function *TheFn;
|
||||
std::set<unsigned> LineNos;
|
||||
std::set<MDNode *> DbgVariables;
|
||||
std::set<Instruction *> MissingDebugLoc;
|
||||
};
|
||||
@ -60,32 +59,13 @@ namespace llvm {
|
||||
//===----------------------------------------------------------------------===//
|
||||
// DebugInfoProbeImpl
|
||||
|
||||
static void collect(Function &F, std::set<unsigned> &Lines) {
|
||||
for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
|
||||
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end();
|
||||
BI != BE; ++BI) {
|
||||
const DebugLoc &DL = BI->getDebugLoc();
|
||||
unsigned LineNo = 0;
|
||||
if (!DL.isUnknown()) {
|
||||
if (MDNode *N = DL.getInlinedAt(F.getContext()))
|
||||
LineNo = DebugLoc::getFromDILocation(N).getLine();
|
||||
else
|
||||
LineNo = DL.getLine();
|
||||
|
||||
Lines.insert(LineNo);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// initialize - Collect information before running an optimization pass.
|
||||
void DebugInfoProbeImpl::initialize(StringRef PName, Function &F) {
|
||||
if (!EnableDebugInfoProbe) return;
|
||||
PassName = PName;
|
||||
|
||||
LineNos.clear();
|
||||
DbgVariables.clear();
|
||||
TheFn = &F;
|
||||
collect(F, LineNos);
|
||||
|
||||
for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
|
||||
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end();
|
||||
@ -130,30 +110,16 @@ void DebugInfoProbeImpl::report() {
|
||||
/// must be used after initialization.
|
||||
void DebugInfoProbeImpl::finalize(Function &F) {
|
||||
if (!EnableDebugInfoProbe) return;
|
||||
std::set<unsigned> LineNos2;
|
||||
collect(F, LineNos2);
|
||||
assert (TheFn == &F && "Invalid function to measure!");
|
||||
|
||||
for (std::set<unsigned>::iterator I = LineNos.begin(),
|
||||
E = LineNos.end(); I != E; ++I) {
|
||||
unsigned LineNo = *I;
|
||||
if (LineNos2.count(LineNo) == 0) {
|
||||
DEBUG(dbgs()
|
||||
<< "DebugInfoProbe("
|
||||
<< PassName
|
||||
<< "): Losing dbg info for source line "
|
||||
<< LineNo << "\n");
|
||||
++NumDbgLineLost;
|
||||
}
|
||||
}
|
||||
|
||||
std::set<MDNode *>DbgVariables2;
|
||||
for (Function::iterator FI = F.begin(), FE = F.end(); FI != FE; ++FI)
|
||||
for (BasicBlock::iterator BI = FI->begin(), BE = FI->end();
|
||||
BI != BE; ++BI) {
|
||||
if (BI->getDebugLoc().isUnknown() &&
|
||||
MissingDebugLoc.count(BI) == 0) {
|
||||
DEBUG(dbgs() << "DebugInfoProbe(" << PassName << "): --- ");
|
||||
++NumDbgLineLost;
|
||||
DEBUG(dbgs() << "DebugInfoProbe (" << PassName << "): --- ");
|
||||
DEBUG(BI->print(dbgs()));
|
||||
DEBUG(dbgs() << "\n");
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user