mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-28 09:31:03 +00:00
Give NamedRegionTimer an Enabled flag, allowing all its clients to
switch from this: if (TimePassesIsEnabled) { NamedRegionTimer T(Name, GroupName); do_something(); } else { do_something(); // duplicate the code, this time without a timer! } to this: { NamedRegionTimer T(Name, GroupName, TimePassesIsEnabled); do_something(); } git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106285 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
27445f0375
commit
03c3dc7b68
@ -150,8 +150,10 @@ public:
|
||||
/// is primarily used for debugging and for hunting performance problems.
|
||||
///
|
||||
struct NamedRegionTimer : public TimeRegion {
|
||||
explicit NamedRegionTimer(StringRef Name);
|
||||
explicit NamedRegionTimer(StringRef Name, StringRef GroupName);
|
||||
explicit NamedRegionTimer(StringRef Name,
|
||||
bool Enabled = true);
|
||||
explicit NamedRegionTimer(StringRef Name, StringRef GroupName,
|
||||
bool Enabled = true);
|
||||
};
|
||||
|
||||
|
||||
|
@ -427,20 +427,12 @@ void AsmPrinter::EmitFunctionHeader() {
|
||||
|
||||
// Emit pre-function debug and/or EH information.
|
||||
if (DE) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName);
|
||||
DE->BeginFunction(MF);
|
||||
} else {
|
||||
DE->BeginFunction(MF);
|
||||
}
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
DE->BeginFunction(MF);
|
||||
}
|
||||
if (DD) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
DD->beginFunction(MF);
|
||||
} else {
|
||||
DD->beginFunction(MF);
|
||||
}
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
DD->beginFunction(MF);
|
||||
}
|
||||
}
|
||||
|
||||
@ -610,12 +602,8 @@ void AsmPrinter::EmitFunctionBody() {
|
||||
}
|
||||
|
||||
if (ShouldPrintDebugScopes) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
DD->beginScope(II);
|
||||
} else {
|
||||
DD->beginScope(II);
|
||||
}
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
DD->beginScope(II);
|
||||
}
|
||||
|
||||
if (isVerbose())
|
||||
@ -648,12 +636,8 @@ void AsmPrinter::EmitFunctionBody() {
|
||||
}
|
||||
|
||||
if (ShouldPrintDebugScopes) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
DD->endScope(II);
|
||||
} else {
|
||||
DD->endScope(II);
|
||||
}
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
DD->endScope(II);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -691,20 +675,12 @@ void AsmPrinter::EmitFunctionBody() {
|
||||
|
||||
// Emit post-function debug information.
|
||||
if (DD) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
DD->endFunction(MF);
|
||||
} else {
|
||||
DD->endFunction(MF);
|
||||
}
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
DD->endFunction(MF);
|
||||
}
|
||||
if (DE) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName);
|
||||
DE->EndFunction();
|
||||
} else {
|
||||
DE->EndFunction();
|
||||
}
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
DE->EndFunction();
|
||||
}
|
||||
MMI->EndFunction();
|
||||
|
||||
@ -729,19 +705,15 @@ bool AsmPrinter::doFinalization(Module &M) {
|
||||
|
||||
// Finalize debug and EH information.
|
||||
if (DE) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName);
|
||||
DE->EndModule();
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T(EHTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
DE->EndModule();
|
||||
}
|
||||
delete DE; DE = 0;
|
||||
}
|
||||
if (DD) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
DD->endModule();
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
DD->endModule();
|
||||
}
|
||||
delete DD; DD = 0;
|
||||
|
@ -322,11 +322,9 @@ DwarfDebug::DwarfDebug(AsmPrinter *A, Module *M)
|
||||
DwarfStrSectionSym = TextSectionSym = 0;
|
||||
DwarfDebugRangeSectionSym = DwarfDebugLocSectionSym = 0;
|
||||
FunctionBeginSym = FunctionEndSym = 0;
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName);
|
||||
beginModule(M);
|
||||
} else {
|
||||
beginModule(M);
|
||||
{
|
||||
NamedRegionTimer T(DbgTimerName, DWARFGroupName, TimePassesIsEnabled);
|
||||
beginModule(M);
|
||||
}
|
||||
}
|
||||
DwarfDebug::~DwarfDebug() {
|
||||
|
@ -443,10 +443,8 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
if (ViewDAGCombine1) CurDAG->viewGraph("dag-combine1 input for " + BlockName);
|
||||
|
||||
// Run the DAG combiner in pre-legalize mode.
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("DAG Combining 1", GroupName);
|
||||
CurDAG->Combine(Unrestricted, *AA, OptLevel);
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("DAG Combining 1", GroupName, TimePassesIsEnabled);
|
||||
CurDAG->Combine(Unrestricted, *AA, OptLevel);
|
||||
}
|
||||
|
||||
@ -459,10 +457,8 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
BlockName);
|
||||
|
||||
bool Changed;
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("Type Legalization", GroupName);
|
||||
Changed = CurDAG->LegalizeTypes();
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("Type Legalization", GroupName, TimePassesIsEnabled);
|
||||
Changed = CurDAG->LegalizeTypes();
|
||||
}
|
||||
|
||||
@ -474,10 +470,9 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
CurDAG->viewGraph("dag-combine-lt input for " + BlockName);
|
||||
|
||||
// Run the DAG combiner in post-type-legalize mode.
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("DAG Combining after legalize types", GroupName);
|
||||
CurDAG->Combine(NoIllegalTypes, *AA, OptLevel);
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("DAG Combining after legalize types", GroupName,
|
||||
TimePassesIsEnabled);
|
||||
CurDAG->Combine(NoIllegalTypes, *AA, OptLevel);
|
||||
}
|
||||
|
||||
@ -485,18 +480,14 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
DEBUG(CurDAG->dump());
|
||||
}
|
||||
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("Vector Legalization", GroupName);
|
||||
Changed = CurDAG->LegalizeVectors();
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("Vector Legalization", GroupName, TimePassesIsEnabled);
|
||||
Changed = CurDAG->LegalizeVectors();
|
||||
}
|
||||
|
||||
if (Changed) {
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("Type Legalization 2", GroupName);
|
||||
CurDAG->LegalizeTypes();
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("Type Legalization 2", GroupName, TimePassesIsEnabled);
|
||||
CurDAG->LegalizeTypes();
|
||||
}
|
||||
|
||||
@ -504,10 +495,9 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
CurDAG->viewGraph("dag-combine-lv input for " + BlockName);
|
||||
|
||||
// Run the DAG combiner in post-type-legalize mode.
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("DAG Combining after legalize vectors", GroupName);
|
||||
CurDAG->Combine(NoIllegalOperations, *AA, OptLevel);
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("DAG Combining after legalize vectors", GroupName,
|
||||
TimePassesIsEnabled);
|
||||
CurDAG->Combine(NoIllegalOperations, *AA, OptLevel);
|
||||
}
|
||||
|
||||
@ -517,10 +507,8 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
|
||||
if (ViewLegalizeDAGs) CurDAG->viewGraph("legalize input for " + BlockName);
|
||||
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("DAG Legalization", GroupName);
|
||||
CurDAG->Legalize(OptLevel);
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("DAG Legalization", GroupName, TimePassesIsEnabled);
|
||||
CurDAG->Legalize(OptLevel);
|
||||
}
|
||||
|
||||
@ -530,10 +518,8 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
if (ViewDAGCombine2) CurDAG->viewGraph("dag-combine2 input for " + BlockName);
|
||||
|
||||
// Run the DAG combiner in post-legalize mode.
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("DAG Combining 2", GroupName);
|
||||
CurDAG->Combine(NoIllegalOperations, *AA, OptLevel);
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("DAG Combining 2", GroupName, TimePassesIsEnabled);
|
||||
CurDAG->Combine(NoIllegalOperations, *AA, OptLevel);
|
||||
}
|
||||
|
||||
@ -547,10 +533,8 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
|
||||
// Third, instruction select all of the operations to machine code, adding the
|
||||
// code to the MachineBasicBlock.
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("Instruction Selection", GroupName);
|
||||
DoInstructionSelection();
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("Instruction Selection", GroupName, TimePassesIsEnabled);
|
||||
DoInstructionSelection();
|
||||
}
|
||||
|
||||
@ -561,10 +545,9 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
|
||||
// Schedule machine code.
|
||||
ScheduleDAGSDNodes *Scheduler = CreateScheduler();
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("Instruction Scheduling", GroupName);
|
||||
Scheduler->Run(CurDAG, BB, BB->end());
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("Instruction Scheduling", GroupName,
|
||||
TimePassesIsEnabled);
|
||||
Scheduler->Run(CurDAG, BB, BB->end());
|
||||
}
|
||||
|
||||
@ -572,18 +555,15 @@ MachineBasicBlock *SelectionDAGISel::CodeGenAndEmitDAG(MachineBasicBlock *BB) {
|
||||
|
||||
// Emit machine code to BB. This can change 'BB' to the last block being
|
||||
// inserted into.
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("Instruction Creation", GroupName);
|
||||
BB = Scheduler->EmitSchedule();
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("Instruction Creation", GroupName, TimePassesIsEnabled);
|
||||
BB = Scheduler->EmitSchedule();
|
||||
}
|
||||
|
||||
// Free the scheduler state.
|
||||
if (TimePassesIsEnabled) {
|
||||
NamedRegionTimer T("Instruction Scheduling Cleanup", GroupName);
|
||||
delete Scheduler;
|
||||
} else {
|
||||
{
|
||||
NamedRegionTimer T("Instruction Scheduling Cleanup", GroupName,
|
||||
TimePassesIsEnabled);
|
||||
delete Scheduler;
|
||||
}
|
||||
|
||||
|
@ -236,11 +236,13 @@ static Timer &getNamedRegionTimer(StringRef Name) {
|
||||
return T;
|
||||
}
|
||||
|
||||
NamedRegionTimer::NamedRegionTimer(StringRef Name)
|
||||
: TimeRegion(getNamedRegionTimer(Name)) {}
|
||||
NamedRegionTimer::NamedRegionTimer(StringRef Name,
|
||||
bool Enabled)
|
||||
: TimeRegion(!Enabled ? 0 : &getNamedRegionTimer(Name)) {}
|
||||
|
||||
NamedRegionTimer::NamedRegionTimer(StringRef Name, StringRef GroupName)
|
||||
: TimeRegion(NamedGroupedTimers->get(Name, GroupName)) {}
|
||||
NamedRegionTimer::NamedRegionTimer(StringRef Name, StringRef GroupName,
|
||||
bool Enabled)
|
||||
: TimeRegion(!Enabled ? 0 : &NamedGroupedTimers->get(Name, GroupName)) {}
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// TimerGroup Implementation
|
||||
|
Loading…
x
Reference in New Issue
Block a user