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()) {