From: Yonghong Song Date: Mon, 21 Oct 2019 03:22:03 +0000 (+0000) Subject: [BPF] fix indirect call assembly code X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=adc79ba5dbc5860b7c848229a7485f0ab477896a;p=llvm [BPF] fix indirect call assembly code Currently, for indirect call, the assembly code printed out as callx This is not right, it should be callx Fixed the issue with proper format. Differential Revision: https://reviews.llvm.org/D69229 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@375386 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/Target/BPF/BPFInstrInfo.td b/lib/Target/BPF/BPFInstrInfo.td index c44702a78ec..ae5a82a9930 100644 --- a/lib/Target/BPF/BPFInstrInfo.td +++ b/lib/Target/BPF/BPFInstrInfo.td @@ -473,7 +473,7 @@ class CALL class CALLX : TYPE_ALU_JMP { bits<32> BrDst; diff --git a/test/CodeGen/BPF/callx.ll b/test/CodeGen/BPF/callx.ll new file mode 100644 index 00000000000..bb31e118985 --- /dev/null +++ b/test/CodeGen/BPF/callx.ll @@ -0,0 +1,20 @@ +; RUN: llc < %s -march=bpfel | FileCheck %s +; source: +; int test(int (*f)(void)) { return f(); } + +; Function Attrs: nounwind +define dso_local i32 @test(i32 ()* nocapture %f) local_unnamed_addr #0 { +entry: + %call = tail call i32 %f() #1 +; CHECK: callx r{{[0-9]+}} + ret i32 %call +} + +attributes #0 = { nounwind "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "frame-pointer"="all" "less-precise-fpmad"="false" "min-legal-vector-width"="0" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } +attributes #1 = { nounwind } + +!llvm.module.flags = !{!0} +!llvm.ident = !{!1} + +!0 = !{i32 1, !"wchar_size", i32 4} +!1 = !{!"clang version 10.0.0 (https://github.com/llvm/llvm-project.git 7015a5c54b53d8d2297a3aa38bc32aab167bdcfc)"}