diff options
author | Yuanfang Chen <yuanfang.chen@sony.com> | 2020-08-07 11:59:58 -0700 |
---|---|---|
committer | Yuanfang Chen <yuanfang.chen@sony.com> | 2020-08-07 11:59:58 -0700 |
commit | 320eab2d558fde0b61437e9b9075bfd301c2c474 (patch) | |
tree | dca9a8e7e6e0d7618611b14be5b9a7a58300c87c /llvm/lib/CodeGen/MachinePassManager.cpp | |
parent | 2a01d7f7b6487b87bfb4722d53fcba30129ded13 (diff) | |
download | llvm-320eab2d558fde0b61437e9b9075bfd301c2c474.zip llvm-320eab2d558fde0b61437e9b9075bfd301c2c474.tar.gz llvm-320eab2d558fde0b61437e9b9075bfd301c2c474.tar.bz2 |
Revert "[NewPM][CodeGen] Introduce machine pass and machine pass manager"
This reverts commit 911565d1085d9447363fe8ad041817436c4998fe.
Broke some non-Linux bots.
Diffstat (limited to 'llvm/lib/CodeGen/MachinePassManager.cpp')
-rw-r--r-- | llvm/lib/CodeGen/MachinePassManager.cpp | 103 |
1 files changed, 0 insertions, 103 deletions
diff --git a/llvm/lib/CodeGen/MachinePassManager.cpp b/llvm/lib/CodeGen/MachinePassManager.cpp deleted file mode 100644 index 654d97f..0000000 --- a/llvm/lib/CodeGen/MachinePassManager.cpp +++ /dev/null @@ -1,103 +0,0 @@ -//===---------- MachinePassManager.cpp ------------------------------------===// -// -// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. -// See https://llvm.org/LICENSE.txt for license information. -// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception -// -//===----------------------------------------------------------------------===// -// -// This file contains the pass management machinery for machine functions. -// -//===----------------------------------------------------------------------===// - -#include "llvm/CodeGen/MachinePassManager.h" -#include "llvm/CodeGen/MachineModuleInfo.h" -#include "llvm/IR/PassManagerImpl.h" - -using namespace llvm; - -namespace llvm { -template class AllAnalysesOn<MachineFunction>; -template class AnalysisManager<MachineFunction>; -template class PassManager<MachineFunction>; - -Error MachineFunctionPassManager::run(Module &M, - MachineFunctionAnalysisManager &MFAM) { - // MachineModuleAnalysis is a module analysis pass that is never invalidated - // because we don't run any module pass in codegen pipeline. This is very - // important because the codegen state is stored in MMI which is the analysis - // result of MachineModuleAnalysis. MMI should not be recomputed. - auto &MMI = MFAM.getResult<MachineModuleAnalysis>(M); - - assert(!RequireCodeGenSCCOrder && "not implemented"); - - if (DebugLogging) { - dbgs() << "Starting " << getTypeName<MachineFunction>() - << " pass manager run.\n"; - } - - for (auto &F : InitializationFuncs) { - if (auto Err = F(M, MFAM)) - return Err; - } - - unsigned Idx = 0; - size_t Size = Passes.size(); - do { - // Run machine module passes - for (; MachineModulePasses.count(Idx) && Idx != Size; ++Idx) { - if (DebugLogging) - dbgs() << "Running pass: " << Passes[Idx]->name() << " on " - << M.getName() << '\n'; - if (auto Err = MachineModulePasses.at(Idx)(M, MFAM)) - return Err; - } - - // Finish running all passes. - if (Idx == Size) - break; - - // Run machine function passes - - // Get index range of machine function passes. - unsigned Begin = Idx; - for (; !MachineModulePasses.count(Idx) && Idx != Size; ++Idx) - ; - - for (Function &F : M) { - // Do not codegen any 'available_externally' functions at all, they have - // definitions outside the translation unit. - if (F.hasAvailableExternallyLinkage()) - continue; - - MachineFunction &MF = MMI.getOrCreateMachineFunction(F); - PassInstrumentation PI = MFAM.getResult<PassInstrumentationAnalysis>(MF); - - for (unsigned I = Begin, E = Idx; I != E; ++I) { - auto *P = Passes[I].get(); - - if (!PI.runBeforePass<MachineFunction>(*P, MF)) - continue; - - // TODO: EmitSizeRemarks - PreservedAnalyses PassPA = P->run(MF, MFAM); - PI.runAfterPass(*P, MF); - MFAM.invalidate(MF, PassPA); - } - } - } while (true); - - for (auto &F : FinalizationFuncs) { - if (auto Err = F(M, MFAM)) - return Err; - } - - if (DebugLogging) { - dbgs() << "Finished " << getTypeName<MachineFunction>() - << " pass manager run.\n"; - } - - return Error::success(); -} - -} // namespace llvm |