/// LPPassManager manages FPPassManagers and CalLGraphSCCPasses.
LPPassManager::LPPassManager(int Depth)
- : FunctionPass((intptr_t)&ID), PMDataManager(Depth) {
+ : FunctionPass(&ID), PMDataManager(Depth) {
skipThisLoop = false;
redoThisLoop = false;
LI = NULL;
CurrentLoop = NULL;
}
-/// Delete loop from the loop queue and loop hierarcy (LoopInfo).
+/// Delete loop from the loop queue and loop hierarchy (LoopInfo).
void LPPassManager::deleteLoopFromQueue(Loop *L) {
if (Loop *ParentLoop = L->getParentLoop()) { // Not a top-level loop.
LI = &getAnalysis<LoopInfo>();
bool Changed = false;
+ // Collect inherited analysis from Module level pass manager.
+ populateInheritedAnalysis(TPM->activeStack);
+
// Populate Loop Queue
for (LoopInfo::iterator I = LI->begin(), E = LI->end(); I != E; ++I)
addLoopIntoQueue(*I, LQ);
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);
recordAvailableAnalysis(P);
removeDeadPasses(P, "", ON_LOOP_MSG);
+ // If dominator information is available then verify the info if requested.
+ verifyDomInfo(*LP, F);
+
if (skipThisLoop)
// Do not run other passes on this loop.
break;