summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-08-05 11:35:53 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-08-05 11:35:53 +0200
commit6bd66b1728eeddb058066edda740aaeb2ceaec23 (patch)
tree985faf01c526763515731569fa01a99f4dbef36e /gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp
parente0a8dcfed131ffa58a5e2cb1d30fe48c745c2fdc (diff)
parent559824514dc95e02fbe81f1786e6ac13ee8e9d55 (diff)
downloadUXP-6bd66b1728eeddb058066edda740aaeb2ceaec23.tar
UXP-6bd66b1728eeddb058066edda740aaeb2ceaec23.tar.gz
UXP-6bd66b1728eeddb058066edda740aaeb2ceaec23.tar.lz
UXP-6bd66b1728eeddb058066edda740aaeb2ceaec23.tar.xz
UXP-6bd66b1728eeddb058066edda740aaeb2ceaec23.zip
Merge branch 'master' into js-modules
Diffstat (limited to 'gfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp')
-rwxr-xr-xgfx/angle/src/compiler/translator/IntermNodePatternMatcher.cpp23
1 files changed, 16 insertions, 7 deletions
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