From 4f2ecd53a9daaf88bb7d075745eefb6e2e4741e0 Mon Sep 17 00:00:00 2001 From: wolfbeast Date: Wed, 11 Jul 2018 18:11:13 +0200 Subject: Roll back to ANGLE/2845 --- .../translator/IntermNodePatternMatcher.cpp | 23 +++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) (limited to 'gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp') diff --git a/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp b/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp index dd2054f68..b614d8365 100755 --- a/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp +++ b/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp @@ -12,9 +12,17 @@ #include "compiler/translator/IntermNode.h" -namespace sh +namespace { +bool IsNodeBlock(TIntermNode *node) +{ + ASSERT(node != nullptr); + return (node->getAsAggregate() && node->getAsAggregate()->getOp() == EOpSequence); +} + +} // anonymous namespace + IntermNodePatternMatcher::IntermNodePatternMatcher(const unsigned int mask) : mMask(mask) { } @@ -31,7 +39,7 @@ bool IntermNodePatternMatcher::matchInternal(TIntermBinary *node, TIntermNode *p if ((mMask & kExpressionReturningArray) != 0) { if (node->isArray() && node->getOp() == EOpAssign && parentNode != nullptr && - !parentNode->getAsBlock()) + !IsNodeBlock(parentNode)) { return true; } @@ -88,7 +96,7 @@ bool IntermNodePatternMatcher::match(TIntermAggregate *node, TIntermNode *parent if (node->getType().isArray() && !parentIsAssignment && (node->isConstructor() || node->getOp() == EOpFunctionCall) && - !parentNode->getAsBlock()) + !IsNodeBlock(parentNode)) { return true; } @@ -97,13 +105,14 @@ bool IntermNodePatternMatcher::match(TIntermAggregate *node, TIntermNode *parent return false; } -bool IntermNodePatternMatcher::match(TIntermTernary *node) +bool IntermNodePatternMatcher::match(TIntermSelection *node) { if ((mMask & kUnfoldedShortCircuitExpression) != 0) { - return true; + if (node->usesTernaryOperator()) + { + return true; + } } return false; } - -} // namespace sh -- cgit v1.2.3