From: Fangrui Song Date: Thu, 28 Nov 2019 22:00:12 +0000 (-0800) Subject: [LegacyPassManager] Simplify FunctionPass::assignPassManager X-Git-Tag: llvmorg-11-init~3261 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4adddbd8ad4f71e8ce4cb4a38c755b126c5e9eff;p=platform%2Fupstream%2Fllvm.git [LegacyPassManager] Simplify FunctionPass::assignPassManager And make it clear the parameter PreferredType is unused for FunctionPass. --- diff --git a/llvm/lib/IR/LegacyPassManager.cpp b/llvm/lib/IR/LegacyPassManager.cpp index f3c1372..90239bb 100644 --- a/llvm/lib/IR/LegacyPassManager.cpp +++ b/llvm/lib/IR/LegacyPassManager.cpp @@ -1786,36 +1786,32 @@ void ModulePass::assignPassManager(PMStack &PMS, /// Find appropriate Function Pass Manager or Call Graph Pass Manager /// in the PM Stack and add self into that manager. void FunctionPass::assignPassManager(PMStack &PMS, - PassManagerType PreferredType) { + PassManagerType /*PreferredType*/) { // Find Function Pass Manager - while (PMS.top()->getPassManagerType() > PMT_FunctionPassManager) + PMDataManager *PM; + while (PM = PMS.top(), PM->getPassManagerType() > PMT_FunctionPassManager) PMS.pop(); // Create new Function Pass Manager if needed. - FPPassManager *FPP; - if (PMS.top()->getPassManagerType() == PMT_FunctionPassManager) { - FPP = (FPPassManager *)PMS.top(); - } else { - PMDataManager *PMD = PMS.top(); - + if (PM->getPassManagerType() != PMT_FunctionPassManager) { // [1] Create new Function Pass Manager - FPP = new FPPassManager(); + auto *FPP = new FPPassManager; FPP->populateInheritedAnalysis(PMS); // [2] Set up new manager's top level manager - PMTopLevelManager *TPM = PMD->getTopLevelManager(); - TPM->addIndirectPassManager(FPP); + PM->getTopLevelManager()->addIndirectPassManager(FPP); // [3] Assign manager to manage this new manager. This may create // and push new managers into PMS - FPP->assignPassManager(PMS, PMD->getPassManagerType()); + FPP->assignPassManager(PMS, PM->getPassManagerType()); // [4] Push new manager into PMS PMS.push(FPP); + PM = FPP; } // Assign FPP as the manager of this pass. - FPP->add(this); + PM->add(this); } PassManagerBase::~PassManagerBase() {}