Support multiple nested ternary operators per statement
TRAC #18382
ANGLEBUG=203,208
Signed-off-by: Daniel Koch
Author: Nicolas Capens
- by incrementing the temporary index, adding 1 for every nesting level, and rewinding it after each traverse.
Also fixed multiple ternary operator unfolding for loops.
git-svn-id: https://angleproject.googlecode.com/svn/trunk@784 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/OutputHLSL.cpp b/src/compiler/OutputHLSL.cpp
index ca61b9f..af5696f 100644
--- a/src/compiler/OutputHLSL.cpp
+++ b/src/compiler/OutputHLSL.cpp
@@ -1503,7 +1503,7 @@
if (node->usesTernaryOperator())
{
- out << "s" << mUnfoldSelect->getTemporaryIndex();
+ out << "s" << mUnfoldSelect->getNextTemporaryIndex();
}
else // if/else statement
{
@@ -1567,21 +1567,6 @@
}
else
{
- if (node->getInit())
- {
- mUnfoldSelect->traverse(node->getInit());
- }
-
- if (node->getCondition())
- {
- mUnfoldSelect->traverse(node->getCondition());
- }
-
- if (node->getExpression())
- {
- mUnfoldSelect->traverse(node->getExpression());
- }
-
out << "for(";
if (node->getInit())