summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-exegesis/lib/Assembler.cpp
diff options
context:
space:
mode:
authorYuanfang Chen <yuanfang.chen@sony.com>2019-09-30 17:54:50 +0000
committerYuanfang Chen <yuanfang.chen@sony.com>2019-09-30 17:54:50 +0000
commitcc382cf72736294a409a4d79db11f0cbc3cc5ae1 (patch)
tree5df52deed41d3beb88986a18cc5d2e2f29820977 /llvm/tools/llvm-exegesis/lib/Assembler.cpp
parent72131161a41908298270ec45834fd032cb0fa947 (diff)
downloadbcm5719-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.cpp22
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);
OpenPOWER on IntegriCloud