diff options
Diffstat (limited to 'llvm/lib/CodeGen')
| -rw-r--r-- | llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp | 20 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/GlobalISel/Legalizer.cpp | 3 | ||||
| -rw-r--r-- | llvm/lib/CodeGen/TargetPassConfig.cpp | 5 | 
4 files changed, 23 insertions, 8 deletions
diff --git a/llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp b/llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp index aaf09c8c938..a87ef20a3be 100644 --- a/llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp +++ b/llvm/lib/CodeGen/GlobalISel/CSEInfo.cpp @@ -27,8 +27,8 @@ void UniqueMachineInstr::Profile(FoldingSetNodeID &ID) {  }  /// ----------------------------------------- -/// --------- CSEConfig ---------- /// -bool CSEConfig::shouldCSEOpc(unsigned Opc) { +/// --------- CSEConfigFull ---------- /// +bool CSEConfigFull::shouldCSEOpc(unsigned Opc) {    switch (Opc) {    default:      break; @@ -60,6 +60,17 @@ bool CSEConfig::shouldCSEOpc(unsigned Opc) {  bool CSEConfigConstantOnly::shouldCSEOpc(unsigned Opc) {    return Opc == TargetOpcode::G_CONSTANT;  } + +std::unique_ptr<CSEConfigBase> +llvm::getStandardCSEConfigForOpt(CodeGenOpt::Level Level) { +  std::unique_ptr<CSEConfigBase> Config; +  if (Level == CodeGenOpt::None) +    Config = make_unique<CSEConfigBase>(); +  else +    Config = make_unique<CSEConfigFull>(); +  return Config; +} +  /// -----------------------------------------  /// -------- GISelCSEInfo -------------// @@ -348,8 +359,9 @@ const GISelInstProfileBuilder &GISelInstProfileBuilder::addNodeIDMachineOperand(    return *this;  } -GISelCSEInfo &GISelCSEAnalysisWrapper::get(std::unique_ptr<CSEConfig> CSEOpt, -                                           bool Recompute) { +GISelCSEInfo & +GISelCSEAnalysisWrapper::get(std::unique_ptr<CSEConfigBase> CSEOpt, +                             bool Recompute) {    if (!AlreadyComputed || Recompute) {      Info.setCSEConfig(std::move(CSEOpt));      Info.analyze(*MF); diff --git a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp index 290d592339f..2e268ed27a9 100644 --- a/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp +++ b/llvm/lib/CodeGen/GlobalISel/IRTranslator.cpp @@ -1729,8 +1729,7 @@ bool IRTranslator::runOnMachineFunction(MachineFunction &CurMF) {    if (EnableCSE) {      EntryBuilder = make_unique<CSEMIRBuilder>(CurMF); -    std::unique_ptr<CSEConfig> Config = make_unique<CSEConfig>(); -    CSEInfo = &Wrapper.get(std::move(Config)); +    CSEInfo = &Wrapper.get(TPC->getCSEConfig());      EntryBuilder->setCSEInfo(CSEInfo);      CurBuilder = make_unique<CSEMIRBuilder>(CurMF);      CurBuilder->setCSEInfo(CSEInfo); diff --git a/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp b/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp index 4db86761cdb..efdae5790ab 100644 --- a/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp +++ b/llvm/lib/CodeGen/GlobalISel/Legalizer.cpp @@ -170,8 +170,7 @@ bool Legalizer::runOnMachineFunction(MachineFunction &MF) {    if (EnableCSE) {      MIRBuilder = make_unique<CSEMIRBuilder>(); -    std::unique_ptr<CSEConfig> Config = make_unique<CSEConfig>(); -    CSEInfo = &Wrapper.get(std::move(Config)); +    CSEInfo = &Wrapper.get(TPC.getCSEConfig());      MIRBuilder->setCSEInfo(CSEInfo);    } else      MIRBuilder = make_unique<MachineIRBuilder>(); diff --git a/llvm/lib/CodeGen/TargetPassConfig.cpp b/llvm/lib/CodeGen/TargetPassConfig.cpp index 8ddde4b8f99..e5c7ceff112 100644 --- a/llvm/lib/CodeGen/TargetPassConfig.cpp +++ b/llvm/lib/CodeGen/TargetPassConfig.cpp @@ -22,6 +22,7 @@  #include "llvm/Analysis/ScopedNoAliasAA.h"  #include "llvm/Analysis/TargetTransformInfo.h"  #include "llvm/Analysis/TypeBasedAliasAnalysis.h" +#include "llvm/CodeGen/CSEConfigBase.h"  #include "llvm/CodeGen/MachineFunctionPass.h"  #include "llvm/CodeGen/MachinePassRegistry.h"  #include "llvm/CodeGen/Passes.h" @@ -1227,3 +1228,7 @@ bool TargetPassConfig::reportDiagnosticWhenGlobalISelFallback() const {  bool TargetPassConfig::isGISelCSEEnabled() const {    return getOptLevel() != CodeGenOpt::Level::None;  } + +std::unique_ptr<CSEConfigBase> TargetPassConfig::getCSEConfig() const { +  return make_unique<CSEConfigBase>(); +}  | 

