diff options
Diffstat (limited to 'gfx/angle/src/compiler/translator/UnfoldShortCircuitAST.cpp')
-rwxr-xr-x | gfx/angle/src/compiler/translator/UnfoldShortCircuitAST.cpp | 17 |
1 files changed, 7 insertions, 10 deletions
diff --git a/gfx/angle/src/compiler/translator/UnfoldShortCircuitAST.cpp b/gfx/angle/src/compiler/translator/UnfoldShortCircuitAST.cpp index b6a355a13..3ef555fc8 100755 --- a/gfx/angle/src/compiler/translator/UnfoldShortCircuitAST.cpp +++ b/gfx/angle/src/compiler/translator/UnfoldShortCircuitAST.cpp @@ -6,37 +6,36 @@ #include "compiler/translator/UnfoldShortCircuitAST.h" -namespace sh -{ - namespace { // "x || y" is equivalent to "x ? true : y". -TIntermTernary *UnfoldOR(TIntermTyped *x, TIntermTyped *y) +TIntermSelection *UnfoldOR(TIntermTyped *x, TIntermTyped *y) { + const TType boolType(EbtBool, EbpUndefined); TConstantUnion *u = new TConstantUnion; u->setBConst(true); TIntermConstantUnion *trueNode = new TIntermConstantUnion( u, TType(EbtBool, EbpUndefined, EvqConst, 1)); - return new TIntermTernary(x, trueNode, y); + return new TIntermSelection(x, trueNode, y, boolType); } // "x && y" is equivalent to "x ? y : false". -TIntermTernary *UnfoldAND(TIntermTyped *x, TIntermTyped *y) +TIntermSelection *UnfoldAND(TIntermTyped *x, TIntermTyped *y) { + const TType boolType(EbtBool, EbpUndefined); TConstantUnion *u = new TConstantUnion; u->setBConst(false); TIntermConstantUnion *falseNode = new TIntermConstantUnion( u, TType(EbtBool, EbpUndefined, EvqConst, 1)); - return new TIntermTernary(x, y, falseNode); + return new TIntermSelection(x, y, falseNode, boolType); } } // namespace anonymous bool UnfoldShortCircuitAST::visitBinary(Visit visit, TIntermBinary *node) { - TIntermTernary *replacement = nullptr; + TIntermSelection *replacement = NULL; switch (node->getOp()) { @@ -55,5 +54,3 @@ bool UnfoldShortCircuitAST::visitBinary(Visit visit, TIntermBinary *node) } return true; } - -} // namespace sh |