summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source/slang/slang-ir-spirv-legalize.cpp3
-rw-r--r--tests/spirv/array-of-array.slang12
2 files changed, 13 insertions, 2 deletions
diff --git a/source/slang/slang-ir-spirv-legalize.cpp b/source/slang/slang-ir-spirv-legalize.cpp
index 474ebc71c..62829f553 100644
--- a/source/slang/slang-ir-spirv-legalize.cpp
+++ b/source/slang/slang-ir-spirv-legalize.cpp
@@ -258,8 +258,7 @@ struct SPIRVLegalizationContext : public SourceEmitterBase
}
for (auto i : instsToRemove)
- if (!i->hasUses())
- i->removeAndDeallocate();
+ i->removeAndDeallocate();
}
// Returns true if the given type that should be decorated as in `UniformConstant` address space.
diff --git a/tests/spirv/array-of-array.slang b/tests/spirv/array-of-array.slang
new file mode 100644
index 000000000..de1f70e7f
--- /dev/null
+++ b/tests/spirv/array-of-array.slang
@@ -0,0 +1,12 @@
+//TEST:SIMPLE(filecheck=CHECK):-target spirv -entry main -stage compute -emit-spirv-directly -skip-spirv-validation
+
+Texture2D texArray[3][4][5];
+RWStructuredBuffer<float4> outputBuffer;
+
+// CHECK: OpEntryPoint
+
+[shader("compute")]
+void main(uint3 tid : SV_DispatchThreadID)
+{
+ outputBuffer[0] = texArray[tid.x][tid.y][tid.z].Load(int3(1,2,3));
+}