forked from OSchip/llvm-project
Add simple counter to count no. of basic blocks without any line number information. At -O0, these basic block coule cause less than optimial debugging experience.
llvm-svn: 117307
This commit is contained in:
parent
8e09a72f13
commit
a86114b961
|
@ -30,6 +30,7 @@
|
|||
#include "llvm/Target/TargetRegisterInfo.h"
|
||||
#include "llvm/Target/TargetOptions.h"
|
||||
#include "llvm/Analysis/DebugInfo.h"
|
||||
#include "llvm/ADT/Statistic.h"
|
||||
#include "llvm/ADT/STLExtras.h"
|
||||
#include "llvm/ADT/StringExtras.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
|
@ -52,6 +53,8 @@ static cl::opt<bool> UnknownLocations("use-unknown-locations", cl::Hidden,
|
|||
cl::desc("Make an absense of debug location information explicit."),
|
||||
cl::init(false));
|
||||
|
||||
STATISTIC(BlocksWithoutLineNo, "Number of blocks without any line number");
|
||||
|
||||
namespace {
|
||||
const char *DWARFGroupName = "DWARF Emission";
|
||||
const char *DbgTimerName = "DWARF Debug Writer";
|
||||
|
@ -2770,12 +2773,37 @@ static DebugLoc FindFirstDebugLoc(const MachineFunction *MF) {
|
|||
return DebugLoc();
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
/// CheckLineNumbers - Count basicblocks whose instructions do not have any
|
||||
/// line number information.
|
||||
static void CheckLineNumbers(const MachineFunction *MF) {
|
||||
for (MachineFunction::const_iterator I = MF->begin(), E = MF->end();
|
||||
I != E; ++I) {
|
||||
bool FoundLineNo = false;
|
||||
for (MachineBasicBlock::const_iterator II = I->begin(), IE = I->end();
|
||||
II != IE; ++II) {
|
||||
const MachineInstr *MI = II;
|
||||
if (!MI->getDebugLoc().isUnknown()) {
|
||||
FoundLineNo = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!FoundLineNo)
|
||||
++BlocksWithoutLineNo;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
/// beginFunction - Gather pre-function debug information. Assumes being
|
||||
/// emitted immediately after the function entry point.
|
||||
void DwarfDebug::beginFunction(const MachineFunction *MF) {
|
||||
if (!MMI->hasDebugInfo()) return;
|
||||
if (!extractScopeInformation()) return;
|
||||
|
||||
#ifndef NDEBUG
|
||||
CheckLineNumbers(MF);
|
||||
#endif
|
||||
|
||||
FunctionBeginSym = Asm->GetTempSymbol("func_begin",
|
||||
Asm->getFunctionNumber());
|
||||
// Assumes in correct section after the entry point.
|
||||
|
|
Loading…
Reference in New Issue