diff options
Diffstat (limited to 'llvm/lib/Target/Sparc/SparcTargetMachine.cpp')
| -rw-r--r-- | llvm/lib/Target/Sparc/SparcTargetMachine.cpp | 8 | 
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/Sparc/SparcTargetMachine.cpp b/llvm/lib/Target/Sparc/SparcTargetMachine.cpp index 58faaafc29d6..577dc1351de9 100644 --- a/llvm/lib/Target/Sparc/SparcTargetMachine.cpp +++ b/llvm/lib/Target/Sparc/SparcTargetMachine.cpp @@ -17,7 +17,6 @@  #include "TargetInfo/SparcTargetInfo.h"  #include "llvm/CodeGen/Passes.h"  #include "llvm/CodeGen/TargetPassConfig.h" -#include "llvm/IR/LegacyPassManager.h"  #include "llvm/MC/TargetRegistry.h"  #include <optional>  using namespace llvm; @@ -32,6 +31,10 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeSparcTarget() {    initializeSparcDAGToDAGISelPass(PR);  } +static cl::opt<bool> +    BranchRelaxation("sparc-enable-branch-relax", cl::Hidden, cl::init(true), +                     cl::desc("Relax out of range conditional branches")); +  static std::string computeDataLayout(const Triple &T, bool is64Bit) {    // Sparc is typically big endian, but some are little.    std::string Ret = T.getArch() == Triple::sparcel ? "e" : "E"; @@ -182,6 +185,9 @@ bool SparcPassConfig::addInstSelector() {  }  void SparcPassConfig::addPreEmitPass(){ +  if (BranchRelaxation) +    addPass(&BranchRelaxationPassID); +    addPass(createSparcDelaySlotFillerPass());    if (this->getSparcTargetMachine().getSubtargetImpl()->insertNOPLoad())  | 
