aboutsummaryrefslogtreecommitdiff
path: root/llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp
diff options
context:
space:
mode:
authorDaniil Kovalev <dkovalev@accesssoftek.com>2024-09-19 12:17:58 +0300
committerGitHub <noreply@github.com>2024-09-19 12:17:58 +0300
commit3d5e8e4693a51cd3ba336cec0c1a17fe389828a7 (patch)
tree433bf65036dc00f4f44dc791c3742bd61da10f9e /llvm/lib/CodeGen/AssignmentTrackingAnalysis.cpp
parentbb5e66e31b2a5dbb2930728ff94281fd805f2d14 (diff)
downloadllvm-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