Only try folding constant array indexing if propagated.
The array folding logic generated an error when a constant array didn't
have an array of literal constants.
Change-Id: I48f58936cfa7e19e0f4026fb940654f20d9a9d5e
Reviewed-on: https://swiftshader-review.googlesource.com/15551
Tested-by: Nicolas Capens <nicolascapens@google.com>
Reviewed-by: Alexis Hétu <sugoi@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/src/OpenGL/compiler/ParseHelper.cpp b/src/OpenGL/compiler/ParseHelper.cpp
index d057364..00f4829 100644
--- a/src/OpenGL/compiler/ParseHelper.cpp
+++ b/src/OpenGL/compiler/ParseHelper.cpp
@@ -2474,7 +2474,7 @@
TIntermConstantUnion *indexConstantUnion = indexExpression->getAsConstantUnion();
- if(indexExpression->getQualifier() == EvqConstExpr && indexConstantUnion)
+ if(indexExpression->getQualifier() == EvqConstExpr && indexConstantUnion) // TODO: Qualifier check redundant?
{
int index = indexConstantUnion->getIConst(0);
if(index < 0)
@@ -2486,7 +2486,7 @@
recover();
index = 0;
}
- if(baseExpression->getType().getQualifier() == EvqConstExpr)
+ if(baseExpression->getType().getQualifier() == EvqConstExpr && baseExpression->getAsConstantUnion()) // TODO: Qualifier check redundant?
{
if(baseExpression->isArray())
{