diff options
| author | Clement Courbet <courbet@google.com> | 2018-06-20 11:54:35 +0000 |
|---|---|---|
| committer | Clement Courbet <courbet@google.com> | 2018-06-20 11:54:35 +0000 |
| commit | 6fd00e32e54835a850b9cc872f82cf866e6527bb (patch) | |
| tree | 64fadd646a0e0196c23f9301de376feb81f552f1 /llvm/tools/llvm-exegesis/lib/Assembler.cpp | |
| parent | bd1077e2bc7edb2368ac4947b15d6763ac967869 (diff) | |
| download | bcm5719-llvm-6fd00e32e54835a850b9cc872f82cf866e6527bb.tar.gz bcm5719-llvm-6fd00e32e54835a850b9cc872f82cf866e6527bb.zip | |
[llvm-exegesis] Add mechanism to add target-specific passes.
Summary:
createX86FloatingPointStackifierPass is disabled until we handle
TracksLiveness correctly.
Reviewers: gchatelet
Subscribers: mgorny, tschuett, llvm-commits
Differential Revision: https://reviews.llvm.org/D48360
llvm-svn: 335117
Diffstat (limited to 'llvm/tools/llvm-exegesis/lib/Assembler.cpp')
| -rw-r--r-- | llvm/tools/llvm-exegesis/lib/Assembler.cpp | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/llvm/tools/llvm-exegesis/lib/Assembler.cpp b/llvm/tools/llvm-exegesis/lib/Assembler.cpp index 30723e584ce..05a13dbe9a1 100644 --- a/llvm/tools/llvm-exegesis/lib/Assembler.cpp +++ b/llvm/tools/llvm-exegesis/lib/Assembler.cpp @@ -9,6 +9,7 @@ #include "Assembler.h" +#include "Target.h" #include "llvm/CodeGen/GlobalISel/CallLowering.h" #include "llvm/CodeGen/GlobalISel/MachineIRBuilder.h" #include "llvm/CodeGen/MachineInstrBuilder.h" @@ -139,6 +140,8 @@ void assembleToStream(std::unique_ptr<llvm::LLVMTargetMachine> TM, auto &Properties = MF.getProperties(); Properties.set(llvm::MachineFunctionProperties::Property::NoVRegs); Properties.reset(llvm::MachineFunctionProperties::Property::IsSSA); + // FIXME: Remove this when we assign all used registers as config step. This + // essentially disables checks that used registers are def'ed somewhere. Properties.reset(llvm::MachineFunctionProperties::Property::TracksLiveness); // prologue/epilogue pass needs the reserved registers to be frozen, this // is usually done by the SelectionDAGISel pass. @@ -158,6 +161,11 @@ void assembleToStream(std::unique_ptr<llvm::LLVMTargetMachine> TM, PM.add(TPC); PM.add(MMI.release()); TPC->printAndVerify("MachineFunctionGenerator::assemble"); + // Add target-specific passes. + if (const auto *ET = ExegesisTarget::lookup(TM->getTargetTriple())) { + ET->addTargetSpecificPasses(PM); + TPC->printAndVerify("After ExegesisTarget::addTargetSpecificPasses"); + } // Adding the following passes: // - machineverifier: checks that the MachineFunction is well formed. // - prologepilog: saves and restore callee saved registers. |

