diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp index 4ced80f496d1be..4ccb96d49e0ad9 100644 --- a/llvm/lib/CodeGen/TargetPassConfig.cpp +++ b/llvm/lib/CodeGen/TargetPassConfig.cpp @@ -735,21 +735,21 @@ void TargetPassConfig::addPass(Pass *P) { if (StopBefore == PassID && StopBeforeCount++ == StopBeforeInstanceNum) Stopped = true; if (Started && !Stopped) { - if (AddingMachinePasses) + if (AddingMachinePasses) { + // Construct banner message before PM->add() as that may delete the pass. + std::string Banner = + std::string("After ") + std::string(P->getPassName()); addMachinePrePasses(); - std::string Banner; - // Construct banner message before PM->add() as that may delete the pass. - if (AddingMachinePasses) - Banner = std::string("After ") + std::string(P->getPassName()); - PM->add(P); - if (AddingMachinePasses) + PM->add(P); addMachinePostPasses(Banner); + } else { + PM->add(P); + } // Add the passes after the pass P if there is any. - for (const auto &IP : Impl->InsertedPasses) { + for (const auto &IP : Impl->InsertedPasses) if (IP.TargetPassID == PassID) addPass(IP.getInsertedPass()); - } } else { delete P; }