diff options
| -rw-r--r-- | source/slang/slang-ir-spirv-legalize.cpp | 1 | ||||
| -rw-r--r-- | tests/spirv/pointer-bug-3.slang | 10 |
2 files changed, 11 insertions, 0 deletions
diff --git a/source/slang/slang-ir-spirv-legalize.cpp b/source/slang/slang-ir-spirv-legalize.cpp index 2f392a178..311ff0e89 100644 --- a/source/slang/slang-ir-spirv-legalize.cpp +++ b/source/slang/slang-ir-spirv-legalize.cpp @@ -182,6 +182,7 @@ struct SPIRVLegalizationContext : public SourceEmitterBase IRBuilder builder(cbParamInst); builder.setInsertBefore(cbParamInst); auto structType = builder.createStructType(); + addToWorkList(structType); StringBuilder sb; sb << "cbuffer_"; getTypeNameHint(sb, innerType); diff --git a/tests/spirv/pointer-bug-3.slang b/tests/spirv/pointer-bug-3.slang new file mode 100644 index 000000000..60fa70a6e --- /dev/null +++ b/tests/spirv/pointer-bug-3.slang @@ -0,0 +1,10 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv -emit-spirv-directly -O0 + +[[vk::push_constant]] float4 *positions; +[shader("vertex")] +float4 main() +{ + return positions[0]; +} +// NOT %cbuffer__t = OpTypeStruct %_ptr_Function_v4float +// CHECK: %cbuffer__t = OpTypeStruct %_ptr_PhysicalStorageBuffer_v4float |
