[PATCH] D156497: [BPF] Emit UNDEF rather than constant 0
Tamir Duberstein via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 14 11:42:18 PDT 2023
tamird updated this revision to Diff 550041.
tamird added a comment.
Remove tests, rewrite commit message.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D156497/new/
https://reviews.llvm.org/D156497
Files:
llvm/lib/Target/BPF/BPFISelLowering.cpp
llvm/test/CodeGen/BPF/struct_ret1.ll
llvm/test/CodeGen/BPF/struct_ret2.ll
llvm/test/CodeGen/BPF/struct_ret3.ll
Index: llvm/test/CodeGen/BPF/struct_ret3.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/BPF/struct_ret3.ll
@@ -0,0 +1,11 @@
+; RUN: not llc -march=bpf < %s 2> %t1
+; RUN: FileCheck %s < %t1
+; CHECK: error: <unknown>:0:0: in function baz void (ptr): aggregate returns are not supported
+
+%struct.B = type { [100 x i64] }
+
+; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
+define dso_local void @baz(ptr noalias nocapture sret(%struct.B) align 8 %agg.result) local_unnamed_addr #0 {
+entry:
+ ret void
+}
Index: llvm/test/CodeGen/BPF/struct_ret2.ll
===================================================================
--- llvm/test/CodeGen/BPF/struct_ret2.ll
+++ llvm/test/CodeGen/BPF/struct_ret2.ll
@@ -1,6 +1,6 @@
; RUN: not llc -march=bpf < %s 2> %t1
; RUN: FileCheck %s < %t1
-; CHECK: only small returns
+; CHECK: only small returns are supported
; Function Attrs: nounwind uwtable
define { i64, i32 } @foo(i32 %a, i32 %b, i32 %c) #0 {
Index: llvm/test/CodeGen/BPF/struct_ret1.ll
===================================================================
--- llvm/test/CodeGen/BPF/struct_ret1.ll
+++ llvm/test/CodeGen/BPF/struct_ret1.ll
@@ -15,13 +15,3 @@
%.fca.1.insert = insertvalue { i64, i32 } %.fca.0.insert, i32 %retval.sroa.2.0.copyload, 1
ret { i64, i32 } %.fca.1.insert
}
-
-; CHECK: error: <unknown>:0:0: in function baz void (ptr): aggregate returns are not supported
-
-%struct.B = type { [100 x i64] }
-
-; Function Attrs: mustprogress nofree norecurse nosync nounwind willreturn memory(none)
-define dso_local void @baz(ptr noalias nocapture sret(%struct.B) align 8 %agg.result) local_unnamed_addr #0 {
-entry:
- ret void
-}
Index: llvm/lib/Target/BPF/BPFISelLowering.cpp
===================================================================
--- llvm/lib/Target/BPF/BPFISelLowering.cpp
+++ llvm/lib/Target/BPF/BPFISelLowering.cpp
@@ -368,7 +368,7 @@
HasMemArgs = true;
else
report_fatal_error("unhandled argument location");
- InVals.push_back(DAG.getConstant(0, DL, VA.getLocVT()));
+ InVals.push_back(DAG.getUNDEF(VA.getLocVT()));
}
}
if (HasMemArgs)
@@ -532,7 +532,7 @@
return DAG.getNode(Opc, DL, MVT::Other, Chain);
}
- // Analize return values.
+ // Analyze return values.
CCInfo.AnalyzeReturn(Outs, getHasAlu32() ? RetCC_BPF32 : RetCC_BPF64);
SDValue Glue;
@@ -572,9 +572,9 @@
CCState CCInfo(CallConv, IsVarArg, MF, RVLocs, *DAG.getContext());
if (Ins.size() > 1) {
- fail(DL, DAG, "only small returns supported");
+ fail(DL, DAG, "only small returns are supported");
for (auto &In : Ins)
- InVals.push_back(DAG.getConstant(0, DL, In.VT));
+ InVals.push_back(DAG.getUNDEF(In.VT));
return DAG.getCopyFromReg(Chain, DL, 1, Ins[0].VT, InGlue).getValue(1);
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D156497.550041.patch
Type: text/x-patch
Size: 2892 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20230814/b15566f7/attachment.bin>
More information about the llvm-commits
mailing list