Keep track of the index name of excessive loops.
TRAC #21167
ISSUE=338
Signed-off-by: Daniel Koch
Author: Nicolas Capens
git-svn-id: https://angleproject.googlecode.com/svn/trunk@1210 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/compiler/OutputHLSL.cpp b/src/compiler/OutputHLSL.cpp
index c52f61c..e33406b 100644
--- a/src/compiler/OutputHLSL.cpp
+++ b/src/compiler/OutputHLSL.cpp
@@ -87,6 +87,8 @@
mContainsLoopDiscontinuity = false;
mOutputLod0Function = false;
mInsideDiscontinuousLoop = false;
+
+ mExcessiveLoopIndex = NULL;
}
OutputHLSL::~OutputHLSL()
@@ -2052,6 +2054,9 @@
return false; // Not an excessive loop
}
+ TIntermSymbol *restoreIndex = mExcessiveLoopIndex;
+ mExcessiveLoopIndex = index;
+
out << "{int ";
index->traverse(this);
out << ";\n";
@@ -2095,6 +2100,8 @@
out << "}";
+ mExcessiveLoopIndex = restoreIndex;
+
return true;
}
else UNIMPLEMENTED();
diff --git a/src/compiler/OutputHLSL.h b/src/compiler/OutputHLSL.h
index ea28a3c..dc843fb 100644
--- a/src/compiler/OutputHLSL.h
+++ b/src/compiler/OutputHLSL.h
@@ -144,6 +144,8 @@
bool mContainsLoopDiscontinuity;
bool mOutputLod0Function;
bool mInsideDiscontinuousLoop;
+
+ TIntermSymbol *mExcessiveLoopIndex;
};
}