diff options
author | Yuanfang Chen <yuanfang.chen@sony.com> | 2019-09-30 17:54:50 +0000 |
---|---|---|
committer | Yuanfang Chen <yuanfang.chen@sony.com> | 2019-09-30 17:54:50 +0000 |
commit | cc382cf72736294a409a4d79db11f0cbc3cc5ae1 (patch) | |
tree | 5df52deed41d3beb88986a18cc5d2e2f29820977 /llvm/tools/llvm-exegesis/lib/Assembler.cpp | |
parent | 72131161a41908298270ec45834fd032cb0fa947 (diff) | |
download | bcm5719-llvm-cc382cf72736294a409a4d79db11f0cbc3cc5ae1.tar.gz bcm5719-llvm-cc382cf72736294a409a4d79db11f0cbc3cc5ae1.zip |
[NewPM] Port MachineModuleInfo to the new pass manager.
Existing clients are converted to use MachineModuleInfoWrapperPass. The
new interface is for defining a new pass manager API in CodeGen.
Reviewers: fedor.sergeev, philip.pfaffe, chandlerc, arsenm
Reviewed By: arsenm, fedor.sergeev
Differential Revision: https://reviews.llvm.org/D64183
llvm-svn: 373240
Diffstat (limited to 'llvm/tools/llvm-exegesis/lib/Assembler.cpp')
-rw-r--r-- | llvm/tools/llvm-exegesis/lib/Assembler.cpp | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/Assembler.cpp b/llvm/tools/llvm-exegesis/lib/Assembler.cpp index 4ee5f4bc2fd..229bf36da6b 100644 --- a/llvm/tools/llvm-exegesis/lib/Assembler.cpp +++ b/llvm/tools/llvm-exegesis/lib/Assembler.cpp @@ -163,11 +163,11 @@ llvm::BitVector getFunctionReservedRegs(const llvm::TargetMachine &TM) { std::unique_ptr<llvm::Module> Module = createModule(Context, TM.createDataLayout()); // TODO: This only works for targets implementing LLVMTargetMachine. - const LLVMTargetMachine &LLVMTM = static_cast<const LLVMTargetMachine&>(TM); - std::unique_ptr<llvm::MachineModuleInfo> MMI = - std::make_unique<llvm::MachineModuleInfo>(&LLVMTM); - llvm::MachineFunction &MF = - createVoidVoidPtrMachineFunction(FunctionID, Module.get(), MMI.get()); + const LLVMTargetMachine &LLVMTM = static_cast<const LLVMTargetMachine &>(TM); + std::unique_ptr<llvm::MachineModuleInfoWrapperPass> MMIWP = + std::make_unique<llvm::MachineModuleInfoWrapperPass>(&LLVMTM); + llvm::MachineFunction &MF = createVoidVoidPtrMachineFunction( + FunctionID, Module.get(), &MMIWP.get()->getMMI()); // Saving reserved registers for client. return MF.getSubtarget().getRegisterInfo()->getReservedRegs(MF); } @@ -182,10 +182,10 @@ void assembleToStream(const ExegesisTarget &ET, std::make_unique<llvm::LLVMContext>(); std::unique_ptr<llvm::Module> Module = createModule(Context, TM->createDataLayout()); - std::unique_ptr<llvm::MachineModuleInfo> MMI = - std::make_unique<llvm::MachineModuleInfo>(TM.get()); - llvm::MachineFunction &MF = - createVoidVoidPtrMachineFunction(FunctionID, Module.get(), MMI.get()); + std::unique_ptr<llvm::MachineModuleInfoWrapperPass> MMIWP = + std::make_unique<llvm::MachineModuleInfoWrapperPass>(TM.get()); + llvm::MachineFunction &MF = createVoidVoidPtrMachineFunction( + FunctionID, Module.get(), &MMIWP.get()->getMMI()); // We need to instruct the passes that we're done with SSA and virtual // registers. @@ -221,7 +221,7 @@ void assembleToStream(const ExegesisTarget &ET, MF.getRegInfo().freezeReservedRegs(MF); // We create the pass manager, run the passes to populate AsmBuffer. - llvm::MCContext &MCContext = MMI->getContext(); + llvm::MCContext &MCContext = MMIWP->getMMI().getContext(); llvm::legacy::PassManager PM; llvm::TargetLibraryInfoImpl TLII(llvm::Triple(Module->getTargetTriple())); @@ -229,7 +229,7 @@ void assembleToStream(const ExegesisTarget &ET, llvm::TargetPassConfig *TPC = TM->createPassConfig(PM); PM.add(TPC); - PM.add(MMI.release()); + PM.add(MMIWP.release()); TPC->printAndVerify("MachineFunctionGenerator::assemble"); // Add target-specific passes. ET.addTargetSpecificPasses(PM); |