Commit 5d507bc5 by Nicolas Capens Committed by Nicolas Capens

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/15551Tested-by: 's avatarNicolas Capens <nicolascapens@google.com> Reviewed-by: 's avatarAlexis Hétu <sugoi@google.com> Reviewed-by: 's avatarNicolas Capens <nicolascapens@google.com>
parent 9c010dd6
...@@ -2474,7 +2474,7 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression, co ...@@ -2474,7 +2474,7 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression, co
TIntermConstantUnion *indexConstantUnion = indexExpression->getAsConstantUnion(); TIntermConstantUnion *indexConstantUnion = indexExpression->getAsConstantUnion();
if(indexExpression->getQualifier() == EvqConstExpr && indexConstantUnion) if(indexExpression->getQualifier() == EvqConstExpr && indexConstantUnion) // TODO: Qualifier check redundant?
{ {
int index = indexConstantUnion->getIConst(0); int index = indexConstantUnion->getIConst(0);
if(index < 0) if(index < 0)
...@@ -2486,7 +2486,7 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression, co ...@@ -2486,7 +2486,7 @@ TIntermTyped *TParseContext::addIndexExpression(TIntermTyped *baseExpression, co
recover(); recover();
index = 0; index = 0;
} }
if(baseExpression->getType().getQualifier() == EvqConstExpr) if(baseExpression->getType().getQualifier() == EvqConstExpr && baseExpression->getAsConstantUnion()) // TODO: Qualifier check redundant?
{ {
if(baseExpression->isArray()) if(baseExpression->isArray())
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment