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)