summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorAhmed Bougacha <ahmed@bougacha.org>2019-06-25 18:44:39 -0700
committerAhmed Bougacha <ahmed@bougacha.org>2019-11-13 10:38:11 -0800
commit7313d7d6188a0ea1cebe3aa5ec27d53f4ccc1286 (patch)
tree2c00817e457c81ef737ba360b4ab314ece76a67b /llvm/lib
parent643ac6c0420b70571ef0fc0f65ab66e736eea225 (diff)
downloadbcm5719-llvm-7313d7d6188a0ea1cebe3aa5ec27d53f4ccc1286.tar.gz
bcm5719-llvm-7313d7d6188a0ea1cebe3aa5ec27d53f4ccc1286.zip
[AArch64][v8.3a] Add missing imp-defs on RETA*.
RETA always implicitly uses LR, unlike RET which merely has an alias that defaults it to LR. Additionally, RETA implicitly uses SP as well, which it uses as a discriminator to authenticate LR. This isn't usually noticeable, because RET_ReallyLR is used in most of the backend. However, the post-RA scheduler, if enabled, will cause miscompiles if the imp-uses are missing. While there, fix a typo in the lone affected testcase.
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/AArch64/AArch64InstrFormats.td1
1 files changed, 1 insertions, 0 deletions
diff --git a/llvm/lib/Target/AArch64/AArch64InstrFormats.td b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
index 7317b15990d..17f5277af9e 100644
--- a/llvm/lib/Target/AArch64/AArch64InstrFormats.td
+++ b/llvm/lib/Target/AArch64/AArch64InstrFormats.td
@@ -1427,6 +1427,7 @@ class AuthOneOperand<bits<3> opc, bits<1> M, string asm>
let Inst{9-5} = Rn;
}
+let Uses = [LR,SP] in
class AuthReturn<bits<3> op, bits<1> M, string asm>
: AuthBase<M, (outs), (ins), asm, "", []> {
let Inst{24} = 0;
OpenPOWER on IntegriCloud