forked from OSchip/llvm-project
Don't call getAnalysisUsage unless -debug-pass is enabled. This speeds
up the passmgr by avoiding useless work. llvm-svn: 54528
This commit is contained in:
parent
6bd44afc2f
commit
4c493d9a58
|
@ -308,8 +308,8 @@ public:
|
|||
void dumpPassArguments() const;
|
||||
void dumpPassInfo(Pass *P, enum PassDebuggingString S1,
|
||||
enum PassDebuggingString S2, const char *Msg);
|
||||
void dumpAnalysisSetInfo(const char *Msg, Pass *P,
|
||||
const AnalysisUsage::VectorType &Set) const;
|
||||
void dumpRequiredSet(const Pass *P) const;
|
||||
void dumpPreservedSet(const Pass *P) const;
|
||||
|
||||
virtual unsigned getNumContainedPasses() const {
|
||||
return (unsigned)PassVector.size();
|
||||
|
@ -346,6 +346,9 @@ protected:
|
|||
std::map<AnalysisID, Pass *> *InheritedAnalysis[PMT_Last];
|
||||
|
||||
private:
|
||||
void dumpAnalysisUsage(const char *Msg, const Pass *P,
|
||||
const AnalysisUsage::VectorType &Set) const;
|
||||
|
||||
// Set of available Analysis. This information is used while scheduling
|
||||
// pass. If a pass requires an analysis which is not not available then
|
||||
// equired analysis pass is scheduled to run before the pass itself is
|
||||
|
|
|
@ -91,11 +91,9 @@ bool CGPassManager::runOnModule(Module &M) {
|
|||
// Run all passes on current SCC
|
||||
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
||||
Pass *P = getContainedPass(Index);
|
||||
AnalysisUsage AnUsage;
|
||||
P->getAnalysisUsage(AnUsage);
|
||||
|
||||
dumpPassInfo(P, EXECUTION_MSG, ON_CG_MSG, "");
|
||||
dumpAnalysisSetInfo("Required", P, AnUsage.getRequiredSet());
|
||||
dumpRequiredSet(P);
|
||||
|
||||
initializeAnalysisImpl(P);
|
||||
|
||||
|
@ -120,7 +118,7 @@ bool CGPassManager::runOnModule(Module &M) {
|
|||
|
||||
if (Changed)
|
||||
dumpPassInfo(P, MODIFICATION_MSG, ON_CG_MSG, "");
|
||||
dumpAnalysisSetInfo("Preserved", P, AnUsage.getPreservedSet());
|
||||
dumpPreservedSet(P);
|
||||
|
||||
verifyPreservedAnalysis(P);
|
||||
removeNotPreservedAnalysis(P);
|
||||
|
|
|
@ -214,11 +214,9 @@ bool LPPassManager::runOnFunction(Function &F) {
|
|||
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
||||
|
||||
Pass *P = getContainedPass(Index);
|
||||
AnalysisUsage AnUsage;
|
||||
P->getAnalysisUsage(AnUsage);
|
||||
|
||||
dumpPassInfo(P, EXECUTION_MSG, ON_LOOP_MSG, "");
|
||||
dumpAnalysisSetInfo("Required", P, AnUsage.getRequiredSet());
|
||||
dumpRequiredSet(P);
|
||||
|
||||
initializeAnalysisImpl(P);
|
||||
|
||||
|
@ -230,7 +228,7 @@ bool LPPassManager::runOnFunction(Function &F) {
|
|||
|
||||
if (Changed)
|
||||
dumpPassInfo(P, MODIFICATION_MSG, ON_LOOP_MSG, "");
|
||||
dumpAnalysisSetInfo("Preserved", P, AnUsage.getPreservedSet());
|
||||
dumpPreservedSet(P);
|
||||
|
||||
verifyPreservedAnalysis(LP);
|
||||
removeNotPreservedAnalysis(P);
|
||||
|
|
|
@ -954,17 +954,38 @@ void PMDataManager::dumpPassInfo(Pass *P, enum PassDebuggingString S1,
|
|||
}
|
||||
}
|
||||
|
||||
void PMDataManager::dumpAnalysisSetInfo(const char *Msg, Pass *P,
|
||||
void PMDataManager::dumpRequiredSet(const Pass *P)
|
||||
const {
|
||||
if (PassDebugging < Details)
|
||||
return;
|
||||
|
||||
AnalysisUsage analysisUsage;
|
||||
P->getAnalysisUsage(analysisUsage);
|
||||
dumpAnalysisUsage("Required", P, analysisUsage.getRequiredSet());
|
||||
}
|
||||
|
||||
void PMDataManager::dumpPreservedSet(const Pass *P)
|
||||
const {
|
||||
if (PassDebugging < Details)
|
||||
return;
|
||||
|
||||
AnalysisUsage analysisUsage;
|
||||
P->getAnalysisUsage(analysisUsage);
|
||||
dumpAnalysisUsage("Preserved", P, analysisUsage.getPreservedSet());
|
||||
}
|
||||
|
||||
void PMDataManager::dumpAnalysisUsage(const char *Msg, const Pass *P,
|
||||
const AnalysisUsage::VectorType &Set)
|
||||
const {
|
||||
if (PassDebugging >= Details && !Set.empty()) {
|
||||
cerr << (void*)P << std::string(getDepth()*2+3, ' ') << Msg << " Analyses:";
|
||||
for (unsigned i = 0; i != Set.size(); ++i) {
|
||||
if (i) cerr << ",";
|
||||
cerr << " " << Set[i]->getPassName();
|
||||
}
|
||||
cerr << "\n";
|
||||
}
|
||||
assert(PassDebugging >= Details);
|
||||
if (Set.empty())
|
||||
return;
|
||||
cerr << (void*)P << std::string(getDepth()*2+3, ' ') << Msg << " Analyses:";
|
||||
for (unsigned i = 0; i != Set.size(); ++i) {
|
||||
if (i) cerr << ",";
|
||||
cerr << " " << Set[i]->getPassName();
|
||||
}
|
||||
cerr << "\n";
|
||||
}
|
||||
|
||||
/// Add RequiredPass into list of lower level passes required by pass P.
|
||||
|
@ -1031,11 +1052,9 @@ BBPassManager::runOnFunction(Function &F) {
|
|||
for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I)
|
||||
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
||||
BasicBlockPass *BP = getContainedPass(Index);
|
||||
AnalysisUsage AnUsage;
|
||||
BP->getAnalysisUsage(AnUsage);
|
||||
|
||||
dumpPassInfo(BP, EXECUTION_MSG, ON_BASICBLOCK_MSG, I->getNameStart());
|
||||
dumpAnalysisSetInfo("Required", BP, AnUsage.getRequiredSet());
|
||||
dumpRequiredSet(BP);
|
||||
|
||||
initializeAnalysisImpl(BP);
|
||||
|
||||
|
@ -1046,7 +1065,7 @@ BBPassManager::runOnFunction(Function &F) {
|
|||
if (Changed)
|
||||
dumpPassInfo(BP, MODIFICATION_MSG, ON_BASICBLOCK_MSG,
|
||||
I->getNameStart());
|
||||
dumpAnalysisSetInfo("Preserved", BP, AnUsage.getPreservedSet());
|
||||
dumpPreservedSet(BP);
|
||||
|
||||
verifyPreservedAnalysis(BP);
|
||||
removeNotPreservedAnalysis(BP);
|
||||
|
@ -1232,11 +1251,8 @@ bool FPPassManager::runOnFunction(Function &F) {
|
|||
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
||||
FunctionPass *FP = getContainedPass(Index);
|
||||
|
||||
AnalysisUsage AnUsage;
|
||||
FP->getAnalysisUsage(AnUsage);
|
||||
|
||||
dumpPassInfo(FP, EXECUTION_MSG, ON_FUNCTION_MSG, F.getNameStart());
|
||||
dumpAnalysisSetInfo("Required", FP, AnUsage.getRequiredSet());
|
||||
dumpRequiredSet(FP);
|
||||
|
||||
initializeAnalysisImpl(FP);
|
||||
|
||||
|
@ -1246,7 +1262,7 @@ bool FPPassManager::runOnFunction(Function &F) {
|
|||
|
||||
if (Changed)
|
||||
dumpPassInfo(FP, MODIFICATION_MSG, ON_FUNCTION_MSG, F.getNameStart());
|
||||
dumpAnalysisSetInfo("Preserved", FP, AnUsage.getPreservedSet());
|
||||
dumpPreservedSet(FP);
|
||||
|
||||
verifyPreservedAnalysis(FP);
|
||||
removeNotPreservedAnalysis(FP);
|
||||
|
@ -1304,12 +1320,9 @@ MPPassManager::runOnModule(Module &M) {
|
|||
for (unsigned Index = 0; Index < getNumContainedPasses(); ++Index) {
|
||||
ModulePass *MP = getContainedPass(Index);
|
||||
|
||||
AnalysisUsage AnUsage;
|
||||
MP->getAnalysisUsage(AnUsage);
|
||||
|
||||
dumpPassInfo(MP, EXECUTION_MSG, ON_MODULE_MSG,
|
||||
M.getModuleIdentifier().c_str());
|
||||
dumpAnalysisSetInfo("Required", MP, AnUsage.getRequiredSet());
|
||||
dumpRequiredSet(MP);
|
||||
|
||||
initializeAnalysisImpl(MP);
|
||||
|
||||
|
@ -1320,7 +1333,7 @@ MPPassManager::runOnModule(Module &M) {
|
|||
if (Changed)
|
||||
dumpPassInfo(MP, MODIFICATION_MSG, ON_MODULE_MSG,
|
||||
M.getModuleIdentifier().c_str());
|
||||
dumpAnalysisSetInfo("Preserved", MP, AnUsage.getPreservedSet());
|
||||
dumpPreservedSet(MP);
|
||||
|
||||
verifyPreservedAnalysis(MP);
|
||||
removeNotPreservedAnalysis(MP);
|
||||
|
|
Loading…
Reference in New Issue