summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp')
-rwxr-xr-xgfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp11
1 files changed, 8 insertions, 3 deletions
diff --git a/gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp b/gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp
index c5ff7b36b..b78c2059e 100755
--- a/gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp
+++ b/gfx/angle/src/compiler/translator/ExpandIntegerPowExpressions.cpp
@@ -116,7 +116,7 @@ bool Traverser::visitAggregate(Visit visit, TIntermAggregate *node)
TIntermTyped *lhs = sequence->at(0)->getAsTyped();
ASSERT(lhs);
- TIntermDeclaration *init = createTempInitDeclaration(lhs);
+ TIntermAggregate *init = createTempInitDeclaration(lhs);
TIntermTyped *current = createTempSymbol(lhs->getType());
insertStatementInParentBlock(init);
@@ -124,7 +124,10 @@ bool Traverser::visitAggregate(Visit visit, TIntermAggregate *node)
// Create a chain of n-1 multiples.
for (int i = 1; i < n; ++i)
{
- TIntermBinary *mul = new TIntermBinary(EOpMul, current, createTempSymbol(lhs->getType()));
+ TIntermBinary *mul = new TIntermBinary(EOpMul);
+ mul->setLeft(current);
+ mul->setRight(createTempSymbol(lhs->getType()));
+ mul->setType(node->getType());
mul->setLine(node->getLine());
current = mul;
}
@@ -135,7 +138,9 @@ bool Traverser::visitAggregate(Visit visit, TIntermAggregate *node)
TConstantUnion *oneVal = new TConstantUnion();
oneVal->setFConst(1.0f);
TIntermConstantUnion *oneNode = new TIntermConstantUnion(oneVal, node->getType());
- TIntermBinary *div = new TIntermBinary(EOpDiv, oneNode, current);
+ TIntermBinary *div = new TIntermBinary(EOpDiv);
+ div->setLeft(oneNode);
+ div->setRight(current);
current = div;
}