Lines Matching defs:P

89     Pass *P, Module &M, int64_t Delta, unsigned CountBefore,
96 if (P->getAsPMDataManager())
150 R << DiagnosticInfoOptimizationBase::Argument("Pass", P->getPassName())
160 std::string PassName = P->getPassName().str();
215 OS << P->getPassName() << "'";
260 void add(Pass *P) {
261 schedulePass(P);
414 /// Add RequiredPass into list of lower level passes required by pass P.
415 /// RequiredPass is run on the fly by Pass Manager when P requests it
417 void addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass) override;
480 void add(Pass *P) {
481 schedulePass(P);
563 /// Set pass P as the last user of the given analysis passes.
565 PMTopLevelManager::setLastUser(ArrayRef<Pass*> AnalysisPasses, Pass *P) {
567 if (P->getResolver())
568 PDepth = P->getResolver()->getPMDataManager().getDepth();
571 // Record P as the new last user of AP.
575 LastUserOfAP = P;
576 InversedLastUser[P].insert(AP);
578 if (P == AP)
599 setLastUser(LastUses, P);
603 if (P->getResolver())
604 setLastUser(LastPMUses, P->getResolver()->getPMDataManager().getAsPass());
606 // If AP is the last user of other passes then make P last user of
610 LastUser[L] = P;
611 InversedLastUser[P].insert(LastUsedByAP.begin(), LastUsedByAP.end());
616 /// Collect passes whose last user is P
618 Pass *P) {
619 auto DMI = InversedLastUser.find(P);
627 AnalysisUsage *PMTopLevelManager::findAnalysisUsage(Pass *P) {
629 auto DMI = AnUsageMap.find(P);
640 P->getAnalysisUsage(AU);
654 AnUsageMap[P] = &Node->AU;
660 /// Schedule pass P for execution. Make sure that passes required by
661 /// P are run before P is run. Update analysis info maintained by
663 void PMTopLevelManager::schedulePass(Pass *P) {
669 P->preparePassManager(activeStack);
671 // If P is an analysis pass and it is available then do not
674 const PassInfo *PI = findAnalysisPassInfo(P->getPassID());
675 if (PI && PI->isAnalysis() && findAnalysisPass(P->getPassID())) {
677 AnUsageMap.erase(P);
678 delete P;
682 AnalysisUsage *AnUsage = findAnalysisUsage(P);
696 // Pass P is not in the global PassRegistry
697 dbgs() << "Pass '" << P->getPassName() << "' is not initialized." << "\n";
716 if (P->getPotentialPassManagerType () ==
720 else if (P->getPotentialPassManagerType () >
736 if (ImmutablePass *IP = P->getAsImmutablePass()) {
737 // P is a immutable pass and it will be managed by this
741 P->setResolver(AR);
742 DM->initializeAnalysisImpl(P);
750 P->createPrinterPass(dbgs(), ("*** IR Dump Before " + P->getPassName() +
757 P->assignPassManager(activeStack, getTopLevelPassManagerType());
761 P->createPrinterPass(dbgs(), ("*** IR Dump After " + P->getPassName() +
774 if (Pass *P = ImmutablePassMap.lookup(AID))
775 return P;
779 if (Pass *P = PassManager->findAnalysisPass(AID, false))
780 return P;
784 if (Pass *P = IndirectPassManager->findAnalysisPass(AID, false))
785 return P;
801 void PMTopLevelManager::addImmutablePass(ImmutablePass *P) {
802 P->initializePass();
803 ImmutablePasses.push_back(P);
808 AnalysisID AID = P->getPassID();
809 ImmutablePassMap[AID] = P;
816 ImmutablePassMap[ImmPI->getTypeInfo()] = P;
843 for (ImmutablePass *P : ImmutablePasses)
844 if (const PassInfo *PI = findAnalysisPassInfo(P->getPassID())) {
868 for (ImmutablePass *P : ImmutablePasses)
869 delete P;
875 /// Augement AvailableAnalysis by adding analysis made available by pass P.
876 void PMDataManager::recordAvailableAnalysis(Pass *P) {
877 AnalysisID PI = P->getPassID();
879 AvailableAnalysis[PI] = P;
888 AvailableAnalysis[PI->getTypeInfo()] = P;
891 // Return true if P preserves high level analysis used by other
893 bool PMDataManager::preserveHigherLevelAnalysis(Pass *P) {
894 AnalysisUsage *AnUsage = TPM->findAnalysisUsage(P);
908 /// verifyPreservedAnalysis -- Verify analysis preserved by pass P.
909 void PMDataManager::verifyPreservedAnalysis(Pass *P) {
914 AnalysisUsage *AnUsage = TPM->findAnalysisUsage(P);
926 /// Remove Analysis not preserved by Pass P
927 void PMDataManager::removeNotPreservedAnalysis(Pass *P) {
928 AnalysisUsage *AnUsage = TPM->findAnalysisUsage(P);
941 dbgs() << " -- '" << P->getPassName() << "' is not preserving '";
948 // Check inherited analysis also. If P is not preserving analysis
963 dbgs() << " -- '" << P->getPassName() << "' is not preserving '";
973 void PMDataManager::removeDeadPasses(Pass *P, StringRef Msg,
982 TPM->collectLastUses(DeadPasses, P);
985 dbgs() << " -*- '" << P->getPassName();
990 for (Pass *P : DeadPasses)
991 freePass(P, Msg, DBG_STR);
994 void PMDataManager::freePass(Pass *P, StringRef Msg,
996 dumpPassInfo(P, FREEING_MSG, DBG_STR, Msg);
1000 PassManagerPrettyStackEntry X(P);
1001 TimeRegion PassTimer(getPassTimer(P));
1003 P->releaseMemory();
1006 AnalysisID PI = P->getPassID();
1016 if (Pos != AvailableAnalysis.end() && Pos->second == P)
1022 /// Add pass P into the PassVector. Update
1024 void PMDataManager::add(Pass *P, bool ProcessAnalysis) {
1025 // This manager is going to manage pass P. Set up analysis resolver
1028 P->setResolver(AR);
1036 PassVector.push_back(P);
1047 collectRequiredAndUsedAnalyses(UsedPasses, ReqAnalysisNotAvailable, P);
1066 // Set P as P's last user until someone starts using P.
1067 // However, if P is a Pass Manager then it does not need
1069 if (!P->getAsPMDataManager())
1070 LastUses.push_back(P);
1071 TPM->setLastUser(LastUses, P);
1083 this->addLowerLevelRequiredPass(P, AnalysisPass);
1088 removeNotPreservedAnalysis(P);
1089 recordAvailableAnalysis(P);
1092 PassVector.push_back(P);
1097 /// pass P and are available. Populate RP_NotAvail with analysis
1098 /// pass that are required by pass P but are not available.
1101 Pass *P) {
1102 AnalysisUsage *AnUsage = TPM->findAnalysisUsage(P);
1120 void PMDataManager::initializeAnalysisImpl(Pass *P) {
1121 AnalysisUsage *AnUsage = TPM->findAnalysisUsage(P);
1129 AnalysisResolver *AR = P->getResolver();
1152 // Print list of passes that are last used by P.
1153 void PMDataManager::dumpLastUses(Pass *P, unsigned Offset) const{
1163 TPM->collectLastUses(LUses, P);
1165 for (Pass *P : LUses) {
1167 P->dumpPassStructure(0);
1172 for (Pass *P : PassVector) {
1173 if (PMDataManager *PMD = P->getAsPMDataManager())
1177 TPM->findAnalysisPassInfo(P->getPassID()))
1183 void PMDataManager::dumpPassInfo(Pass *P, enum PassDebuggingString S1,
1192 dbgs() << "Executing Pass '" << P->getPassName();
1195 dbgs() << "Made Modification '" << P->getPassName();
1198 dbgs() << " Freeing Pass '" << P->getPassName();
1224 void PMDataManager::dumpRequiredSet(const Pass *P) const {
1229 P->getAnalysisUsage(analysisUsage);
1230 dumpAnalysisUsage("Required", P, analysisUsage.getRequiredSet());
1233 void PMDataManager::dumpPreservedSet(const Pass *P) const {
1238 P->getAnalysisUsage(analysisUsage);
1239 dumpAnalysisUsage("Preserved", P, analysisUsage.getPreservedSet());
1242 void PMDataManager::dumpUsedSet(const Pass *P) const {
1247 P->getAnalysisUsage(analysisUsage);
1248 dumpAnalysisUsage("Used", P, analysisUsage.getUsedSet());
1251 void PMDataManager::dumpAnalysisUsage(StringRef Msg, const Pass *P,
1256 dbgs() << (const void*)P << std::string(getDepth()*2+3, ' ') << Msg << " Analyses:";
1271 /// Add RequiredPass into list of lower level passes required by pass P.
1272 /// RequiredPass is run on the fly by Pass Manager when P requests it
1275 void PMDataManager::addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass) {
1292 dbgs() << "' required by '" << P->getPassName() << "'\n";
1297 std::tuple<Pass *, bool> PMDataManager::getOnTheFlyPass(Pass *P, AnalysisID PI,
1304 for (Pass *P : PassVector)
1305 delete P;
1316 AnalysisResolver::findImplPass(Pass *P, AnalysisID AnalysisPI, Function &F) {
1317 return PM.getOnTheFlyPass(P, AnalysisPI, F);
1340 void FunctionPassManager::add(Pass *P) {
1341 FPM->add(P);
1605 /// Add RequiredPass into list of lower level passes required by pass P.
1606 /// RequiredPass is run on the fly by Pass Manager when P requests it
1608 void MPPassManager::addLowerLevelRequiredPass(Pass *P, Pass *RequiredPass) {
1610 assert(P->getPotentialPassManagerType() == PMT_ModulePassManager &&
1612 assert((P->getPotentialPassManagerType() <
1616 legacy::FunctionPassManagerImpl *FPP = OnTheFlyManagers[P];
1622 OnTheFlyManagers[P] = FPP;
1638 // Register P as the last user of FoundPass or RequiredPass.
1641 FPP->setLastUser(LU, P);
1675 void PassManager::add(Pass *P) {
1676 PM->add(P);