36 lines · plain
1; RUN: llc -O2 --mtriple=bpfel %s -o - | FileCheck %s2 3; Generated from the following C code:4;5; extern int foo(void) __attribute__((bpf_fastcall));6;7; int bar(int a) {8; foo();9; return a;10; }11;12; Using the following command:13;14; clang --target=bpf -emit-llvm -O2 -S -o - t.c15;16; (unnecessary attrs removed maually)17 18; Check that function marked with bpf_fastcall does not clobber W1-W5.19 20define dso_local i32 @bar(i32 %a) {21entry:22 %call = tail call i32 @foo() #023 ret i32 %a24}25 26; CHECK: # %bb.0:27; CHECK-NEXT: *(u64 *)(r10 - 8) = r128; CHECK-NEXT: call foo29; CHECK-NEXT: r1 = *(u64 *)(r10 - 8)30; CHECK-NEXT: w0 = w131; CHECK-NEXT: exit32 33declare dso_local i32 @foo() #034 35attributes #0 = { "bpf_fastcall" }36