mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-11-01 15:11:24 +00:00
Move TimingInfo into PassManagers.h so that other libs can use it.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@33626 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
d683ef6655
commit
b05ef6a8eb
@ -12,6 +12,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/PassManager.h"
|
||||
#include "llvm/Support/Timer.h"
|
||||
|
||||
using namespace llvm;
|
||||
class llvm::PMDataManager;
|
||||
@ -323,5 +324,53 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// TimingInfo Class - This class is used to calculate information about the
|
||||
// amount of time each pass takes to execute. This only happens when
|
||||
// -time-passes is enabled on the command line.
|
||||
//
|
||||
|
||||
class TimingInfo {
|
||||
std::map<Pass*, Timer> TimingData;
|
||||
TimerGroup TG;
|
||||
|
||||
public:
|
||||
// Use 'create' member to get this.
|
||||
TimingInfo() : TG("... Pass execution timing report ...") {}
|
||||
|
||||
// TimingDtor - Print out information about timing information
|
||||
~TimingInfo() {
|
||||
// Delete all of the timers...
|
||||
TimingData.clear();
|
||||
// TimerGroup is deleted next, printing the report.
|
||||
}
|
||||
|
||||
// createTheTimeInfo - This method either initializes the TheTimeInfo pointer
|
||||
// to a non null value (if the -time-passes option is enabled) or it leaves it
|
||||
// null. It may be called multiple times.
|
||||
static void createTheTimeInfo();
|
||||
|
||||
void passStarted(Pass *P) {
|
||||
|
||||
if (dynamic_cast<PMDataManager *>(P))
|
||||
return;
|
||||
|
||||
std::map<Pass*, Timer>::iterator I = TimingData.find(P);
|
||||
if (I == TimingData.end())
|
||||
I=TimingData.insert(std::make_pair(P, Timer(P->getPassName(), TG))).first;
|
||||
I->second.startTimer();
|
||||
}
|
||||
void passEnded(Pass *P) {
|
||||
|
||||
if (dynamic_cast<PMDataManager *>(P))
|
||||
return;
|
||||
|
||||
std::map<Pass*, Timer>::iterator I = TimingData.find(P);
|
||||
assert (I != TimingData.end() && "passStarted/passEnded not nested right!");
|
||||
I->second.stopTimer();
|
||||
}
|
||||
};
|
||||
|
||||
extern TimingInfo *getTheTimeInfo();
|
||||
}
|
||||
|
||||
|
@ -14,7 +14,6 @@
|
||||
|
||||
#include "llvm/PassManagers.h"
|
||||
#include "llvm/Support/CommandLine.h"
|
||||
#include "llvm/Support/Timer.h"
|
||||
#include "llvm/Module.h"
|
||||
#include "llvm/ModuleProvider.h"
|
||||
#include "llvm/Support/Streams.h"
|
||||
@ -259,60 +258,13 @@ public:
|
||||
|
||||
};
|
||||
|
||||
} // End of llvm namespace
|
||||
|
||||
namespace {
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// TimingInfo Class - This class is used to calculate information about the
|
||||
// amount of time each pass takes to execute. This only happens when
|
||||
// -time-passes is enabled on the command line.
|
||||
//
|
||||
|
||||
class VISIBILITY_HIDDEN TimingInfo {
|
||||
std::map<Pass*, Timer> TimingData;
|
||||
TimerGroup TG;
|
||||
|
||||
public:
|
||||
// Use 'create' member to get this.
|
||||
TimingInfo() : TG("... Pass execution timing report ...") {}
|
||||
|
||||
// TimingDtor - Print out information about timing information
|
||||
~TimingInfo() {
|
||||
// Delete all of the timers...
|
||||
TimingData.clear();
|
||||
// TimerGroup is deleted next, printing the report.
|
||||
}
|
||||
|
||||
// createTheTimeInfo - This method either initializes the TheTimeInfo pointer
|
||||
// to a non null value (if the -time-passes option is enabled) or it leaves it
|
||||
// null. It may be called multiple times.
|
||||
static void createTheTimeInfo();
|
||||
|
||||
void passStarted(Pass *P) {
|
||||
|
||||
if (dynamic_cast<PMDataManager *>(P))
|
||||
return;
|
||||
|
||||
std::map<Pass*, Timer>::iterator I = TimingData.find(P);
|
||||
if (I == TimingData.end())
|
||||
I=TimingData.insert(std::make_pair(P, Timer(P->getPassName(), TG))).first;
|
||||
I->second.startTimer();
|
||||
}
|
||||
void passEnded(Pass *P) {
|
||||
|
||||
if (dynamic_cast<PMDataManager *>(P))
|
||||
return;
|
||||
|
||||
std::map<Pass*, Timer>::iterator I = TimingData.find(P);
|
||||
assert (I != TimingData.end() && "passStarted/passEnded not nested right!");
|
||||
I->second.stopTimer();
|
||||
}
|
||||
};
|
||||
|
||||
static TimingInfo *TheTimeInfo;
|
||||
|
||||
} // End of anon namespace
|
||||
TimingInfo *getTheTimeInfo() {
|
||||
return TheTimeInfo;
|
||||
}
|
||||
|
||||
} // End of llvm namespace
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
// PMTopLevelManager implementation
|
||||
|
Loading…
Reference in New Issue
Block a user