[PATCH] D133279: [DirectX backend] Remove Attribute not for DXIL on CallInst

Xiang Li via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Sep 13 13:46:23 PDT 2022


This revision was automatically updated to reflect the committed changes.
python3kgae marked an inline comment as done.
Closed by commit rG1e3d4c43442f: [DirectX backend] Remove Attribute not for DXIL on CallInst (authored by python3kgae).
Herald added a subscriber: mgorny.

Changed prior to commit:
  https://reviews.llvm.org/D133279?vs=458036&id=459867#toc

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D133279/new/

https://reviews.llvm.org/D133279

Files:
  llvm/lib/Target/DirectX/CMakeLists.txt
  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;
+          }
         }
       }
     }
Index: llvm/lib/Target/DirectX/CMakeLists.txt
===================================================================
--- llvm/lib/Target/DirectX/CMakeLists.txt
+++ llvm/lib/Target/DirectX/CMakeLists.txt
@@ -24,7 +24,9 @@
   PointerTypeAnalysis.cpp
 
   LINK_COMPONENTS
+  AsmPrinter
   Core
+  SelectionDAG
   Support
   DirectXInfo
   DXILBitWriter


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D133279.459867.patch
Type: text/x-patch
Size: 2227 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20220913/d5f67c77/attachment.bin>


More information about the llvm-commits mailing list