diff options
| -rw-r--r-- | source/slang/slang-emit-spirv.cpp | 2 | ||||
| -rw-r--r-- | tests/spirv/global-pointer.slang | 14 |
2 files changed, 15 insertions, 1 deletions
diff --git a/source/slang/slang-emit-spirv.cpp b/source/slang/slang-emit-spirv.cpp index bb1f1378f..9088e959a 100644 --- a/source/slang/slang-emit-spirv.cpp +++ b/source/slang/slang-emit-spirv.cpp @@ -4572,7 +4572,7 @@ struct SPIRVEmitContext getSection(SpvLogicalSectionID::Annotations), nullptr, varInst, - (as<IRVar>(inst) ? SpvDecorationAliasedPointer : SpvDecorationAliased) + (inst->getOp() == kIROp_GlobalVar || inst->getOp() == kIROp_Var ? SpvDecorationAliasedPointer : SpvDecorationAliased) ); } } diff --git a/tests/spirv/global-pointer.slang b/tests/spirv/global-pointer.slang new file mode 100644 index 000000000..e373920eb --- /dev/null +++ b/tests/spirv/global-pointer.slang @@ -0,0 +1,14 @@ +//TEST:SIMPLE(filecheck=CHECK): -target spirv + +// CHECK: OpDecorate %g_Instance AliasedPointer + +static int* g_Instance = nullptr; + +[vk::push_constant] int* dest; + +[numthreads(1)] +void ComputeMain(int tid : SV_DispatchThreadID) { + // int* g_Instance = nullptr; + if (tid % 2 == 0) g_Instance = dest; + if (g_Instance) g_Instance[tid] = 123; +}
\ No newline at end of file |
