aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/Target/Mips/MipsTargetMachine.cpp
diff options
context:
space:
mode:
authorAkira Hatanaka <ahatanaka@mips.com>2013-10-07 19:13:53 +0000
committerAkira Hatanaka <ahatanaka@mips.com>2013-10-07 19:13:53 +0000
commit3c0d6afeec38ea0a0e1fc903f5fe6ad9ca673bf4 (patch)
treef6de7b0776f3aaa9bf85375a3ecd502f35def1c9 /llvm/lib/Target/Mips/MipsTargetMachine.cpp
parent7b5e15945098e9ac16ca94b8cabb8ea7450a1131 (diff)
downloadllvm-3c0d6afeec38ea0a0e1fc903f5fe6ad9ca673bf4.zip
llvm-3c0d6afeec38ea0a0e1fc903f5fe6ad9ca673bf4.tar.gz
llvm-3c0d6afeec38ea0a0e1fc903f5fe6ad9ca673bf4.tar.bz2
[mips] Disable tail merging when long branch pass is enabled.
llvm-svn: 192124
Diffstat (limited to 'llvm/lib/Target/Mips/MipsTargetMachine.cpp')
-rw-r--r--llvm/lib/Target/Mips/MipsTargetMachine.cpp8
1 files changed, 7 insertions, 1 deletions
diff --git a/llvm/lib/Target/Mips/MipsTargetMachine.cpp b/llvm/lib/Target/Mips/MipsTargetMachine.cpp
index 06f78e0..5046c1b 100644
--- a/llvm/lib/Target/Mips/MipsTargetMachine.cpp
+++ b/llvm/lib/Target/Mips/MipsTargetMachine.cpp
@@ -135,7 +135,13 @@ namespace {
class MipsPassConfig : public TargetPassConfig {
public:
MipsPassConfig(MipsTargetMachine *TM, PassManagerBase &PM)
- : TargetPassConfig(TM, PM) {}
+ : TargetPassConfig(TM, PM) {
+ // The current implementation of long branch pass requires a scratch
+ // register ($at) to be available before branch instructions. Tail merging
+ // can break this requirement, so disable it when long branch pass is
+ // enabled.
+ EnableTailMerge = !getMipsSubtarget().enableLongBranchPass();
+ }
MipsTargetMachine &getMipsTargetMachine() const {
return getTM<MipsTargetMachine>();