diff options
author | Akira Hatanaka <ahatanaka@mips.com> | 2013-10-07 19:13:53 +0000 |
---|---|---|
committer | Akira Hatanaka <ahatanaka@mips.com> | 2013-10-07 19:13:53 +0000 |
commit | 3c0d6afeec38ea0a0e1fc903f5fe6ad9ca673bf4 (patch) | |
tree | f6de7b0776f3aaa9bf85375a3ecd502f35def1c9 /llvm/lib/Target/Mips/MipsTargetMachine.cpp | |
parent | 7b5e15945098e9ac16ca94b8cabb8ea7450a1131 (diff) | |
download | llvm-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.cpp | 8 |
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>(); |