diff options
author | Amara Emerson <aemerson@apple.com> | 2019-04-15 04:53:46 +0000 |
---|---|---|
committer | Amara Emerson <aemerson@apple.com> | 2019-04-15 04:53:46 +0000 |
commit | d189680baa07e4ed6300cf07c18a1cd0ee5f4be9 (patch) | |
tree | 737a13546d3c09b9769a8fc657eda16edaef7646 /llvm/lib/Target/ARM/ARMTargetMachine.cpp | |
parent | ae050d214b94e05f0079c08f2f3270b66cb92000 (diff) | |
download | bcm5719-llvm-d189680baa07e4ed6300cf07c18a1cd0ee5f4be9.tar.gz bcm5719-llvm-d189680baa07e4ed6300cf07c18a1cd0ee5f4be9.zip |
[GlobalISel] Introduce a CSEConfigBase class to allow targets to define their own CSE configs.
Because CodeGen can't depend on GlobalISel, we need a way to encapsulate the CSE
configs that can be passed between TargetPassConfig and the targets' custom
pass configs. This CSEConfigBase allows targets to create custom CSE configs
which is then used by the GISel passes for the CSEMIRBuilder.
This support will be used in a follow up commit to allow constant-only CSE for
-O0 compiles in D60580.
llvm-svn: 358368
Diffstat (limited to 'llvm/lib/Target/ARM/ARMTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/ARM/ARMTargetMachine.cpp | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/llvm/lib/Target/ARM/ARMTargetMachine.cpp b/llvm/lib/Target/ARM/ARMTargetMachine.cpp index d2663ac912d..3c38b4584e8 100644 --- a/llvm/lib/Target/ARM/ARMTargetMachine.cpp +++ b/llvm/lib/Target/ARM/ARMTargetMachine.cpp @@ -361,6 +361,8 @@ public: void addPreRegAlloc() override; void addPreSched2() override; void addPreEmitPass() override; + + std::unique_ptr<CSEConfigBase> getCSEConfig() const override; }; class ARMExecutionDomainFix : public ExecutionDomainFix { @@ -385,6 +387,10 @@ TargetPassConfig *ARMBaseTargetMachine::createPassConfig(PassManagerBase &PM) { return new ARMPassConfig(*this, PM); } +std::unique_ptr<CSEConfigBase> ARMPassConfig::getCSEConfig() const { + return getStandardCSEConfigForOpt(TM->getOptLevel()); +} + void ARMPassConfig::addIRPasses() { if (TM->Options.ThreadModel == ThreadModel::Single) addPass(createLowerAtomicPass()); |