mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-17 17:06:59 +00:00
Use the "NamedGroupTimer" class to categorize DWARF emission better.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@100616 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
a592e671ee
commit
5f017e8086
@ -39,6 +39,11 @@
|
||||
#include "llvm/System/Path.h"
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
const char *DWARFGroupName = "DWARF Emission";
|
||||
const char *DbgTimerName = "DWARF Debug Writer";
|
||||
} // end anonymous namespace
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
/// Configuration values for initial hash set sizes (log2).
|
||||
@ -305,22 +310,17 @@ DbgScope::~DbgScope() {
|
||||
DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
|
||||
: Asm(A), MMI(Asm->MMI), ModuleCU(0),
|
||||
AbbreviationsSet(InitAbbreviationsSetSize),
|
||||
CurrentFnDbgScope(0), DebugTimer(0) {
|
||||
CurrentFnDbgScope(0) {
|
||||
NextStringPoolNumber = 0;
|
||||
|
||||
DwarfFrameSectionSym = DwarfInfoSectionSym = DwarfAbbrevSectionSym = 0;
|
||||
DwarfStrSectionSym = TextSectionSym = 0;
|
||||
|
||||
if (TimePassesIsEnabled)
|
||||
DebugTimer = new Timer("Dwarf Debug Writer");
|
||||
|
||||
beginModule(M);
|
||||
}
|
||||
DwarfDebug::~DwarfDebug() {
|
||||
for (unsigned j = 0, M = DIEBlocks.size(); j < M; ++j)
|
||||
DIEBlocks[j]->~DIEBlock();
|
||||
|
||||
delete DebugTimer;
|
||||
}
|
||||
|
||||
MCSymbol *DwarfDebug::getStringPoolEntry(StringRef Str) {
|
||||
@ -1844,7 +1844,7 @@ void DwarfDebug::constructSubprogramDIE(MDNode *N) {
|
||||
/// content. Create global DIEs and emit initial debug info sections.
|
||||
/// This is inovked by the target AsmPrinter.
|
||||
void DwarfDebug::beginModule(Module *M) {
|
||||
TimeRegion Timer(DebugTimer);
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
|
||||
DebugInfoFinder DbgFinder;
|
||||
DbgFinder.processModule(*M);
|
||||
@ -1908,10 +1908,8 @@ void DwarfDebug::beginModule(Module *M) {
|
||||
/// endModule - Emit all Dwarf sections that should come after the content.
|
||||
///
|
||||
void DwarfDebug::endModule() {
|
||||
if (!ModuleCU)
|
||||
return;
|
||||
|
||||
TimeRegion Timer(DebugTimer);
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
if (!ModuleCU) return;
|
||||
|
||||
// Attach DW_AT_inline attribute with inlined subprogram DIEs.
|
||||
for (SmallPtrSet<DIE *, 4>::iterator AI = InlinedSubprogramDIEs.begin(),
|
||||
@ -2309,11 +2307,10 @@ bool DwarfDebug::extractScopeInformation() {
|
||||
/// 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;
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
|
||||
TimeRegion Timer(DebugTimer);
|
||||
if (!extractScopeInformation())
|
||||
return;
|
||||
if (!MMI->hasDebugInfo()) return;
|
||||
if (!extractScopeInformation()) return;
|
||||
|
||||
collectVariableInfo();
|
||||
|
||||
@ -2344,10 +2341,9 @@ void DwarfDebug::beginFunction(const MachineFunction *MF) {
|
||||
/// endFunction - Gather and emit post-function debug information.
|
||||
///
|
||||
void DwarfDebug::endFunction(const MachineFunction *MF) {
|
||||
if (!MMI->hasDebugInfo() ||
|
||||
DbgScopeMap.empty()) return;
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
|
||||
TimeRegion Timer(DebugTimer);
|
||||
if (!MMI->hasDebugInfo() || DbgScopeMap.empty()) return;
|
||||
|
||||
if (CurrentFnDbgScope) {
|
||||
// Define end label for subprogram.
|
||||
@ -2393,7 +2389,7 @@ void DwarfDebug::endFunction(const MachineFunction *MF) {
|
||||
/// unique label that was emitted and which provides correspondence to
|
||||
/// the source line list.
|
||||
MCSymbol *DwarfDebug::recordSourceLine(unsigned Line, unsigned Col, MDNode *S) {
|
||||
TimeRegion Timer(DebugTimer);
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
|
||||
StringRef Dir;
|
||||
StringRef Fn;
|
||||
@ -2429,7 +2425,7 @@ MCSymbol *DwarfDebug::recordSourceLine(unsigned Line, unsigned Col, MDNode *S) {
|
||||
/// well.
|
||||
unsigned DwarfDebug::getOrCreateSourceID(const std::string &DirName,
|
||||
const std::string &FileName) {
|
||||
TimeRegion Timer(DebugTimer);
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
return GetOrCreateSourceID(DirName.c_str(), FileName.c_str());
|
||||
}
|
||||
|
||||
|
@ -33,7 +33,6 @@ class MachineFrameInfo;
|
||||
class MachineLocation;
|
||||
class MachineModuleInfo;
|
||||
class MCAsmInfo;
|
||||
class Timer;
|
||||
class DIEAbbrev;
|
||||
class DIE;
|
||||
class DIEBlock;
|
||||
@ -208,9 +207,6 @@ class DwarfDebug {
|
||||
/// label location to indicate scope boundries in dwarf debug info.
|
||||
DebugLoc PrevInstLoc;
|
||||
|
||||
/// DebugTimer - Timer for the Dwarf debug writer.
|
||||
Timer *DebugTimer;
|
||||
|
||||
struct FunctionDebugFrameInfo {
|
||||
unsigned Number;
|
||||
std::vector<MachineMove> Moves;
|
||||
|
@ -39,17 +39,16 @@
|
||||
#include "llvm/ADT/Twine.h"
|
||||
using namespace llvm;
|
||||
|
||||
namespace {
|
||||
const char *DWARFGroupName = "DWARF Emission";
|
||||
const char *EHTimerName = "DWARF Exception Writer";
|
||||
} // end anonymous namespace
|
||||
|
||||
DwarfException::DwarfException(AsmPrinter *A)
|
||||
: Asm(A), MMI(Asm->MMI), shouldEmitTable(false), shouldEmitMoves(false),
|
||||
shouldEmitTableModule(false), shouldEmitMovesModule(false),
|
||||
ExceptionTimer(0) {
|
||||
if (TimePassesIsEnabled)
|
||||
ExceptionTimer = new Timer("DWARF Exception Writer");
|
||||
}
|
||||
shouldEmitTableModule(false), shouldEmitMovesModule(false) {}
|
||||
|
||||
DwarfException::~DwarfException() {
|
||||
delete ExceptionTimer;
|
||||
}
|
||||
DwarfException::~DwarfException() {}
|
||||
|
||||
/// EmitCIE - Emit a Common Information Entry (CIE). This holds information that
|
||||
/// is shared among many Frame Description Entries. There is at least one CIE
|
||||
@ -897,14 +896,14 @@ void DwarfException::EmitExceptionTable() {
|
||||
/// EndModule - Emit all exception information that should come after the
|
||||
/// content.
|
||||
void DwarfException::EndModule() {
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName);
|
||||
|
||||
if (Asm->MAI->getExceptionHandlingType() != ExceptionHandling::Dwarf)
|
||||
return;
|
||||
|
||||
if (!shouldEmitMovesModule && !shouldEmitTableModule)
|
||||
return;
|
||||
|
||||
TimeRegion Timer(ExceptionTimer);
|
||||
|
||||
const std::vector<Function *> Personalities = MMI->getPersonalities();
|
||||
|
||||
for (unsigned I = 0, E = Personalities.size(); I < E; ++I)
|
||||
@ -918,7 +917,7 @@ void DwarfException::EndModule() {
|
||||
/// BeginFunction - Gather pre-function exception information. Assumes it's
|
||||
/// being emitted immediately after the function entry point.
|
||||
void DwarfException::BeginFunction(const MachineFunction *MF) {
|
||||
TimeRegion Timer(ExceptionTimer);
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName);
|
||||
shouldEmitTable = shouldEmitMoves = false;
|
||||
|
||||
// If any landing pads survive, we need an EH table.
|
||||
@ -940,9 +939,9 @@ void DwarfException::BeginFunction(const MachineFunction *MF) {
|
||||
/// EndFunction - Gather and emit post-function exception information.
|
||||
///
|
||||
void DwarfException::EndFunction() {
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName);
|
||||
if (!shouldEmitMoves && !shouldEmitTable) return;
|
||||
|
||||
TimeRegion Timer(ExceptionTimer);
|
||||
Asm->OutStreamer.EmitLabel(Asm->GetTempSymbol("eh_func_end",
|
||||
Asm->getFunctionNumber()));
|
||||
|
||||
|
@ -28,7 +28,6 @@ class MachineFunction;
|
||||
class MCAsmInfo;
|
||||
class MCExpr;
|
||||
class MCSymbol;
|
||||
class Timer;
|
||||
class Function;
|
||||
class AsmPrinter;
|
||||
|
||||
@ -82,9 +81,6 @@ class DwarfException {
|
||||
/// should be emitted.
|
||||
bool shouldEmitMovesModule;
|
||||
|
||||
/// ExceptionTimer - Timer for the Dwarf exception writer.
|
||||
Timer *ExceptionTimer;
|
||||
|
||||
/// EmitCIE - Emit a Common Information Entry (CIE). This holds information
|
||||
/// that is shared among many Frame Description Entries. There is at least
|
||||
/// one CIE in every non-empty .debug_frame section.
|
||||
|
Loading…
Reference in New Issue
Block a user