diff options
author | Simon Dardis <simon.dardis@imgtec.com> | 2016-08-18 13:22:43 +0000 |
---|---|---|
committer | Simon Dardis <simon.dardis@imgtec.com> | 2016-08-18 13:22:43 +0000 |
commit | ea3431598e552fdfb7cd69f92fecc661d64fa2b1 (patch) | |
tree | 7d3f9520e0b820906b5f64c905f34612d766a221 /llvm/lib/Target/Mips/MipsInstrInfo.cpp | |
parent | 83f6bbc1546fbc7736efb8c13d2590f5c3fd3647 (diff) | |
download | bcm5719-llvm-ea3431598e552fdfb7cd69f92fecc661d64fa2b1.tar.gz bcm5719-llvm-ea3431598e552fdfb7cd69f92fecc661d64fa2b1.zip |
[mips] Correct tail call encoding for MIPSR6
r277708 enabled tails calls for MIPS but used the 'jr' instruction when the
jump target was held in a register. For MIPSR6, 'jalr $zero, $reg' should
have been used. Additionally, add missing patterns for external and global
symbols for tail calls.
Reviewers: dsanders, vkalintiris
Differential Review: https://reviews.llvm.org/D23301
llvm-svn: 279064
Diffstat (limited to 'llvm/lib/Target/Mips/MipsInstrInfo.cpp')
-rw-r--r-- | llvm/lib/Target/Mips/MipsInstrInfo.cpp | 7 |
1 files changed, 3 insertions, 4 deletions
diff --git a/llvm/lib/Target/Mips/MipsInstrInfo.cpp b/llvm/lib/Target/Mips/MipsInstrInfo.cpp index aedb8a46c6f..35ddbf221e8 100644 --- a/llvm/lib/Target/Mips/MipsInstrInfo.cpp +++ b/llvm/lib/Target/Mips/MipsInstrInfo.cpp @@ -282,7 +282,7 @@ unsigned MipsInstrInfo::getEquivalentCompactForm( case Mips::JR: case Mips::PseudoReturn: case Mips::PseudoIndirectBranch: - case Mips::TAILCALLREG_MM: + case Mips::TAILCALLREG: canUseShortMicroMipsCTI = true; break; } @@ -363,8 +363,7 @@ unsigned MipsInstrInfo::getEquivalentCompactForm( case Mips::JR: case Mips::PseudoReturn: case Mips::PseudoIndirectBranch: - case Mips::TAILCALLREG_MM: - case Mips::TAILCALLREG_R6: + case Mips::TAILCALLREG: if (canUseShortMicroMipsCTI) return Mips::JRC16_MM; return Mips::JIC; @@ -373,7 +372,7 @@ unsigned MipsInstrInfo::getEquivalentCompactForm( case Mips::JR64: case Mips::PseudoReturn64: case Mips::PseudoIndirectBranch64: - case Mips::TAILCALLREG64_R6: + case Mips::TAILCALLREG64: return Mips::JIC64; case Mips::JALR64Pseudo: return Mips::JIALC64; |