https://github.com/joaosaffran updated 
https://github.com/llvm/llvm-project/pull/179600

>From 120e4db1dd9903e9191e1134d893144eab41f8e8 Mon Sep 17 00:00:00 2001
From: Joao Saffran <[email protected]>
Date: Tue, 3 Feb 2026 19:03:50 -0800
Subject: [PATCH 1/2] add SROA, remove optnone and add test

---
 .../intermediate-stores-removed-when-O0.hlsl     | 16 ++++++++++++++++
 llvm/lib/Target/DirectX/DirectXTargetMachine.cpp |  4 +++-
 2 files changed, 19 insertions(+), 1 deletion(-)
 create mode 100644 
clang/test/CodeGenHLSL/intermediate-stores-removed-when-O0.hlsl

diff --git a/clang/test/CodeGenHLSL/intermediate-stores-removed-when-O0.hlsl 
b/clang/test/CodeGenHLSL/intermediate-stores-removed-when-O0.hlsl
new file mode 100644
index 0000000000000..79cfa31228f75
--- /dev/null
+++ b/clang/test/CodeGenHLSL/intermediate-stores-removed-when-O0.hlsl
@@ -0,0 +1,16 @@
+// RUN: not %clang_cc1 -triple dxilv1.7-unknown-shadermodel6.7-compute -O0 -S 
-hlsl-entry main -finclude-default-header -o - -x hlsl %s 2>&1
+
+
+// Issue caused by issue https://github.com/llvm/llvm-project/issues/168604
+// CHECK: error: Unsupported intrinsic llvm.experimental.noalias.scope.decl 
for DXIL lowering
+
+// CHECK-NOT: Load of {{.*}} is not a global resource handle
+
+RWBuffer<int> In : register(u0);
+RWBuffer<int> Out : register(u1);
+
+[numthreads(1,1,1)]
+void main(uint GI : SV_GroupIndex) {
+    Out[GI] = In[GI];
+}
+
diff --git a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp 
b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
index c0a92f92e1fba..67a28ada3c736 100644
--- a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
+++ b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp
@@ -70,6 +70,7 @@ LLVMInitializeDirectXTarget() {
   initializeDXContainerGlobalsPass(*PR);
   initializeGlobalDCELegacyPassPass(*PR);
   initializeDXILOpLoweringLegacyPass(*PR);
+  initializeSROALegacyPassPass(*PR);
   initializeDXILResourceAccessLegacyPass(*PR);
   initializeDXILResourceImplicitBindingLegacyPass(*PR);
   initializeDXILTranslateMetadataLegacyPass(*PR);
@@ -121,6 +122,7 @@ class DirectXPassConfig : public TargetPassConfig {
     DxilScalarOptions.ScalarizeLoadStore = true;
     addPass(createScalarizerPass(DxilScalarOptions));
     addPass(createDXILFlattenArraysLegacyPass());
+    addPass(createSROAPass());
     addPass(createDXILForwardHandleAccessesLegacyPass());
     addPass(createDeadStoreEliminationPass());
     addPass(createDXILLegalizeLegacyPass());
@@ -147,7 +149,7 @@ DirectXTargetMachine::DirectXTargetMachine(const Target &T, 
const Triple &TT,
 
 DirectXTargetMachine::~DirectXTargetMachine() {}
 
-void DirectXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB) {
+void DirectXTargetMachine::registerPassBuilderCallbacks(PassBuilder &PB){
 #define GET_PASS_REGISTRY "DirectXPassRegistry.def"
 #include "llvm/Passes/TargetPassRegistry.inc"
 }

>From a2196c2fe0048d5827de0652e558ace479fc3022 Mon Sep 17 00:00:00 2001
From: Joao Saffran <[email protected]>
Date: Thu, 5 Feb 2026 10:45:38 -0800
Subject: [PATCH 2/2] fix llc-pipeline.ll test

---
 llvm/test/CodeGen/DirectX/llc-pipeline.ll | 1 +
 1 file changed, 1 insertion(+)

diff --git a/llvm/test/CodeGen/DirectX/llc-pipeline.ll 
b/llvm/test/CodeGen/DirectX/llc-pipeline.ll
index 0af783a778812..a4a3f8f56b530 100644
--- a/llvm/test/CodeGen/DirectX/llc-pipeline.ll
+++ b/llvm/test/CodeGen/DirectX/llc-pipeline.ll
@@ -28,6 +28,7 @@
 ; CHECK-NEXT:   DXIL Array Flattener
 ; CHECK-NEXT:   FunctionPass Manager
 ; CHECK-NEXT:     Dominator Tree Construction
+; CHECK-NEXT:     SROA
 ; CHECK-NEXT:     DXIL Forward Handle Accesses
 ; CHECK-NEXT:     Dominator Tree Construction
 ; CHECK-NEXT:     Basic Alias Analysis (stateless AA impl)

_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to