diff options
author | eddyz87 <eddyz87@gmail.com> | 2024-10-01 21:20:22 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-10-01 21:20:22 +0300 |
commit | 2fca0effb4e1cbb620b7f21e9b867198ba20028a (patch) | |
tree | ad65b38465719a2f1bd0bfbfe5234e8b524ca201 /llvm/unittests/Support/KnownBitsTest.cpp | |
parent | f957d080e9e9702ea9519d795f549e2bc37e3067 (diff) | |
download | llvm-2fca0effb4e1cbb620b7f21e9b867198ba20028a.zip llvm-2fca0effb4e1cbb620b7f21e9b867198ba20028a.tar.gz llvm-2fca0effb4e1cbb620b7f21e9b867198ba20028a.tar.bz2 |
[BPF] fix sub-register handling for bpf_fastcall (#110618)
bpf_fastcall induced spill/fill pairs should be generated for
sub-register as well as for sub-registers. At the moment this is not the
case, e.g.:
$ cat t.c
extern int foo(void) __attribute__((bpf_fastcall));
int bar(int a) {
foo();
return a;
}
$ clang --target=bpf -mcpu=v3 -O2 -S t.c -o -
...
call foo
w0 = w1
exit
Modify BPFMIPeephole.cpp:collectBPFFastCalls() to check sub-registers
liveness and thus produce correct code for example above:
*(u64 *)(r10 - 8) = r1
call foo
r1 = *(u64 *)(r10 - 8)
w0 = w1
exit
Diffstat (limited to 'llvm/unittests/Support/KnownBitsTest.cpp')
0 files changed, 0 insertions, 0 deletions