diff --git a/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp b/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp index 729989884d..14e1657753 100644 --- a/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp +++ b/tools/clang/lib/Parse/ParseCXXInlineMethods.cpp @@ -521,6 +521,7 @@ void Parser::ParseLexedMethodDef(LexedMethod &LM) { // Parse the method body. Function body parsing code is similar enough // to be re-used for method bodies as well. ParseScope FnScope(this, Scope::FnScope|Scope::DeclScope); + Actions.CleanupVarDeclMarking(); Actions.ActOnStartOfFunctionDef(getCurScope(), LM.D); if (Tok.is(tok::kw_try)) { diff --git a/tools/clang/test/CodeGenSPIRV/ex40-lexed-inline-method-odr-use-crash.hlsl b/tools/clang/test/CodeGenSPIRV/ex40-lexed-inline-method-odr-use-crash.hlsl new file mode 100644 index 0000000000..6de3539deb --- /dev/null +++ b/tools/clang/test/CodeGenSPIRV/ex40-lexed-inline-method-odr-use-crash.hlsl @@ -0,0 +1,15 @@ +// RUN: %dxc -HV 2021 -spirv -T cs_6_8 -E main -O0 -fspv-target-env=vulkan1.3 %s -Fo %t.spv + +struct Bindings { + const static uint Mask = 0; +}; + +const static uint SessionDSIndex = 0; +[[vk::binding(Bindings::Mask, SessionDSIndex)]] RWTexture2DArray gMask; + +struct Trigger { + void accumulate() {} +}; + +[numthreads(1, 1, 1)] +void main(uint3 tid : SV_DispatchThreadID) {}