diff options
author | Daniil Kovalev <dkovalev@accesssoftek.com> | 2024-09-19 12:17:58 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-09-19 12:17:58 +0300 |
commit | 3d5e8e4693a51cd3ba336cec0c1a17fe389828a7 (patch) | |
tree | 433bf65036dc00f4f44dc791c3742bd61da10f9e /llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp | |
parent | bb5e66e31b2a5dbb2930728ff94281fd805f2d14 (diff) | |
download | llvm-3d5e8e4693a51cd3ba336cec0c1a17fe389828a7.zip llvm-3d5e8e4693a51cd3ba336cec0c1a17fe389828a7.tar.gz llvm-3d5e8e4693a51cd3ba336cec0c1a17fe389828a7.tar.bz2 |
[PAC][CodeGen] Do not emit trivial 'mov xN, xN' on tail call (#109100)
Under some conditions, a trivial `mov xN xN` instruction was emitted on
tail calls. Consider the following code:
```
class Test {
public:
virtual void f() {}
};
void call_f(Test *t) {
t->f();
}
```
Correponding assembly:
```
_Z6call_fP4Test:
ldr x16, [x0]
mov x17, x0
movk x17, #6503, lsl #48
autda x16, x17
ldr x1, [x16]
=====> mov x16, x16
movk x16, #54167, lsl #48
braa x1, x16
```
This patch makes such movs being omitted.
Co-authored-by: Anatoly Trosinenko <atrosinenko@accesssoftek.com>
Diffstat (limited to 'llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp')
0 files changed, 0 insertions, 0 deletions