summaryrefslogtreecommitdiffstats
path: root/gfx/angle/src/compiler/translator/AddAndTrueToLoopCondition.cpp
diff options
context:
space:
mode:
authorwolfbeast <mcwerewolf@gmail.com>2018-07-11 18:11:13 +0200
committerwolfbeast <mcwerewolf@gmail.com>2018-07-11 18:11:13 +0200
commit4f2ecd53a9daaf88bb7d075745eefb6e2e4741e0 (patch)
treef000dd831240707a03b8c806db292c2a15cde3ce /gfx/angle/src/compiler/translator/AddAndTrueToLoopCondition.cpp
parent3b7ffb477eec078c7036c92c6a51bb5de6de4f28 (diff)
downloadUXP-4f2ecd53a9daaf88bb7d075745eefb6e2e4741e0.tar
UXP-4f2ecd53a9daaf88bb7d075745eefb6e2e4741e0.tar.gz
UXP-4f2ecd53a9daaf88bb7d075745eefb6e2e4741e0.tar.lz
UXP-4f2ecd53a9daaf88bb7d075745eefb6e2e4741e0.tar.xz
UXP-4f2ecd53a9daaf88bb7d075745eefb6e2e4741e0.zip
Roll back to ANGLE/2845
Diffstat (limited to 'gfx/angle/src/compiler/translator/AddAndTrueToLoopCondition.cpp')
-rw-r--r--gfx/angle/src/compiler/translator/AddAndTrueToLoopCondition.cpp59
1 files changed, 0 insertions, 59 deletions
diff --git a/gfx/angle/src/compiler/translator/AddAndTrueToLoopCondition.cpp b/gfx/angle/src/compiler/translator/AddAndTrueToLoopCondition.cpp
deleted file mode 100644
index 0177fea96..000000000
--- a/gfx/angle/src/compiler/translator/AddAndTrueToLoopCondition.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//
-// Copyright (c) 2016 The ANGLE Project Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-//
-
-#include "compiler/translator/AddAndTrueToLoopCondition.h"
-
-#include "compiler/translator/IntermNode.h"
-
-namespace sh
-{
-
-namespace
-{
-
-// An AST traverser that rewrites for and while loops by replacing "condition" with
-// "condition && true" to work around condition bug on Intel Mac.
-class AddAndTrueToLoopConditionTraverser : public TIntermTraverser
-{
- public:
- AddAndTrueToLoopConditionTraverser() : TIntermTraverser(true, false, false) {}
-
- bool visitLoop(Visit, TIntermLoop *loop) override
- {
- // do-while loop doesn't have this bug.
- if (loop->getType() != ELoopFor && loop->getType() != ELoopWhile)
- {
- return true;
- }
-
- // For loop may not have a condition.
- if (loop->getCondition() == nullptr)
- {
- return true;
- }
-
- // Constant true.
- TConstantUnion *trueConstant = new TConstantUnion();
- trueConstant->setBConst(true);
- TIntermTyped *trueValue = new TIntermConstantUnion(trueConstant, TType(EbtBool));
-
- // CONDITION && true.
- TIntermBinary *andOp = new TIntermBinary(EOpLogicalAnd, loop->getCondition(), trueValue);
- loop->setCondition(andOp);
-
- return true;
- }
-};
-
-} // anonymous namespace
-
-void AddAndTrueToLoopCondition(TIntermNode *root)
-{
- AddAndTrueToLoopConditionTraverser traverser;
- root->traverse(&traverser);
-}
-
-} // namespace sh