summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--source/slang/slang-check-decl.cpp1
-rw-r--r--source/slang/slang-check-expr.cpp1
-rw-r--r--tests/compute/groupshared.slang4
3 files changed, 5 insertions, 1 deletions
diff --git a/source/slang/slang-check-decl.cpp b/source/slang/slang-check-decl.cpp
index e7c2a5853..8c11e538d 100644
--- a/source/slang/slang-check-decl.cpp
+++ b/source/slang/slang-check-decl.cpp
@@ -1017,6 +1017,7 @@ namespace Slang
// We need to ensure that any variable doesn't introduce
// a constant with a circular definition.
//
+ varDecl->setCheckState(DeclCheckState::Checked);
_validateCircularVarDefinition(varDecl);
}
else
diff --git a/source/slang/slang-check-expr.cpp b/source/slang/slang-check-expr.cpp
index 39fd7d1dd..47f5436c5 100644
--- a/source/slang/slang-check-expr.cpp
+++ b/source/slang/slang-check-expr.cpp
@@ -858,6 +858,7 @@ namespace Slang
if(!initExpr)
return nullptr;
+ ensureDecl(declRef.decl, DeclCheckState::Checked);
ConstantFoldingCircularityInfo newCircularityInfo(decl, circularityInfo);
return tryConstantFoldExpr(initExpr, &newCircularityInfo);
}
diff --git a/tests/compute/groupshared.slang b/tests/compute/groupshared.slang
index 2ebf325ab..ec7e055c5 100644
--- a/tests/compute/groupshared.slang
+++ b/tests/compute/groupshared.slang
@@ -8,7 +8,9 @@
//TEST_INPUT:ubuffer(data=[0 0 0 0], stride=4):out, name=gBuffer
RWStructuredBuffer<int> gBuffer;
-#define THREAD_COUNT 4
+static const int A = 4;
+static const int B = 1;
+static const int THREAD_COUNT = A * B;
groupshared int gA[THREAD_COUNT];
int test(int val)