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();
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
// 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);
if (Changed)
dumpPassInfo(P, MODIFICATION_MSG, ON_CG_MSG, "");
- dumpAnalysisSetInfo("Preserved", P, AnUsage.getPreservedSet());
+ dumpPreservedSet(P);
verifyPreservedAnalysis(P);
removeNotPreservedAnalysis(P);
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);
if (Changed)
dumpPassInfo(P, MODIFICATION_MSG, ON_LOOP_MSG, "");
- dumpAnalysisSetInfo("Preserved", P, AnUsage.getPreservedSet());
+ dumpPreservedSet(P);
verifyPreservedAnalysis(LP);
removeNotPreservedAnalysis(P);
}
}
-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.
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);
if (Changed)
dumpPassInfo(BP, MODIFICATION_MSG, ON_BASICBLOCK_MSG,
I->getNameStart());
- dumpAnalysisSetInfo("Preserved", BP, AnUsage.getPreservedSet());
+ dumpPreservedSet(BP);
verifyPreservedAnalysis(BP);
removeNotPreservedAnalysis(BP);
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);
if (Changed)
dumpPassInfo(FP, MODIFICATION_MSG, ON_FUNCTION_MSG, F.getNameStart());
- dumpAnalysisSetInfo("Preserved", FP, AnUsage.getPreservedSet());
+ dumpPreservedSet(FP);
verifyPreservedAnalysis(FP);
removeNotPreservedAnalysis(FP);
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);
if (Changed)
dumpPassInfo(MP, MODIFICATION_MSG, ON_MODULE_MSG,
M.getModuleIdentifier().c_str());
- dumpAnalysisSetInfo("Preserved", MP, AnUsage.getPreservedSet());
+ dumpPreservedSet(MP);
verifyPreservedAnalysis(MP);
removeNotPreservedAnalysis(MP);