Index symbols by id in ValidateOutputs
This is cleaner than indexing them by their name string.
BUG=angleproject:2267
TEST=angle_unittests
Change-Id: I6cdc4125fadb6c7049ad8664e8a66da2a9a5bb8d
Reviewed-on: https://chromium-review.googlesource.com/836892
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/compiler/translator/ValidateOutputs.cpp b/src/compiler/translator/ValidateOutputs.cpp
index 26f0e81..2f76d6f 100644
--- a/src/compiler/translator/ValidateOutputs.cpp
+++ b/src/compiler/translator/ValidateOutputs.cpp
@@ -43,7 +43,7 @@
OutputVector mOutputs;
OutputVector mUnspecifiedLocationOutputs;
OutputVector mYuvOutputs;
- std::set<std::string> mVisitedSymbols;
+ std::set<int> mVisitedSymbols; // Visited symbol ids.
};
ValidateOutputsTraverser::ValidateOutputsTraverser(const TExtensionBehavior &extBehavior,
@@ -58,14 +58,15 @@
void ValidateOutputsTraverser::visitSymbol(TIntermSymbol *symbol)
{
- TString name = symbol->getSymbol();
- TQualifier qualifier = symbol->getQualifier();
-
- if (mVisitedSymbols.count(name.c_str()) == 1)
+ if (symbol->variable().symbolType() == SymbolType::Empty)
return;
- mVisitedSymbols.insert(name.c_str());
+ if (mVisitedSymbols.count(symbol->uniqueId().get()) == 1)
+ return;
+ mVisitedSymbols.insert(symbol->uniqueId().get());
+
+ TQualifier qualifier = symbol->getQualifier();
if (qualifier == EvqFragmentOut)
{
if (symbol->getType().getLayoutQualifier().location != -1)