diff options
| author | Ahmed Bougacha <ahmed@bougacha.org> | 2019-06-25 18:44:39 -0700 |
|---|---|---|
| committer | Ahmed Bougacha <ahmed@bougacha.org> | 2019-11-13 10:38:11 -0800 |
| commit | 7313d7d6188a0ea1cebe3aa5ec27d53f4ccc1286 (patch) | |
| tree | 2c00817e457c81ef737ba360b4ab314ece76a67b /llvm/lib | |
| parent | 643ac6c0420b70571ef0fc0f65ab66e736eea225 (diff) | |
| download | bcm5719-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.td | 1 |
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; |

