[PATCH] D133283: [DirectX backend] Support global ctor for DXILBitcodeWriter.
Xiang Li via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Sep 5 09:40:40 PDT 2022
python3kgae updated this revision to Diff 458033.
python3kgae added a comment.
Use CallBase to cover both CallInst and Invoke
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D133283/new/
https://reviews.llvm.org/D133283
Files:
llvm/lib/Target/DirectX/DXILPrepare.cpp
llvm/test/CodeGen/DirectX/strip-call-attrs.ll
Index: llvm/test/CodeGen/DirectX/strip-call-attrs.ll
===================================================================
--- /dev/null
+++ llvm/test/CodeGen/DirectX/strip-call-attrs.ll
@@ -0,0 +1,25 @@
+
+; RUN: opt -S -dxil-prepare < %s | FileCheck %s
+target triple = "dxil-unknown-unknown"
+
+ at f = internal unnamed_addr global float 0.000000e+00, align 4
+ at llvm.global_ctors = appending global [1 x { i32, ptr, ptr }] [{ i32, ptr, ptr } { i32 65535, ptr @_GLOBAL__sub_I_static_global.hlsl, ptr null }]
+
+; Make sure noundef is removed for function.
+; CHECK:declare float @"?init@@YAMXZ"()
+declare noundef float @"?init@@YAMXZ"() local_unnamed_addr #0
+
+; Make sure noundef is removed for call.
+; CHECK: %call.i = tail call float @"?init@@YAMXZ"()
+; Function Attrs: nounwind
+define internal void @_GLOBAL__sub_I_static_global.hlsl() #1 {
+entry:
+ %call.i = tail call noundef float @"?init@@YAMXZ"() #2
+ store float %call.i, ptr @f, align 4
+ ret void
+}
+
+attributes #0 = { "frame-pointer"="all" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
+attributes #1 = { nounwind "frame-pointer"="all" "min-legal-vector-width"="0" "no-trapping-math"="true" "stack-protector-buffer-size"="8" }
+attributes #2 = { nounwind }
+
Index: llvm/lib/Target/DirectX/DXILPrepare.cpp
===================================================================
--- llvm/lib/Target/DirectX/DXILPrepare.cpp
+++ llvm/lib/Target/DirectX/DXILPrepare.cpp
@@ -160,6 +160,13 @@
GEP->setOperand(0, NoOpBitcast);
continue;
}
+ if (auto *CB = dyn_cast<CallBase>(&I)) {
+ CB->removeFnAttrs(AttrMask);
+ CB->removeRetAttrs(AttrMask);
+ for (size_t Idx = 0, End = CB->arg_size(); Idx < End; ++Idx)
+ CB->removeParamAttrs(Idx, AttrMask);
+ continue;
+ }
}
}
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133283.458033.patch
Type: text/x-patch
Size: 1880 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220905/29b1dc47/attachment.bin>
More information about the llvm-commits
mailing list