Add symbol table function to get TFunction for a built-in op

Built-in function parameter qualifiers are stored in the symbol table.
Some AST traversers need the qualifier information for ops to
determine whether a node is being written to. Add an utility function
that maps a TIntermAggregate node to a symbol table entry, so that the
traversers can get to this information in a convenient way.

This will be necessary for adding more built-ins that have out
parameters from ESSL 3.10.

BUG=angleproject:1730
TEST=angle_unittests

Change-Id: I4bc622d70b2326a04cc858ff1258c22320c590dc
Reviewed-on: https://chromium-review.googlesource.com/431109
Commit-Queue: Olli Etuaho <oetuaho@nvidia.com>
Reviewed-by: Jamie Madill <jmadill@chromium.org>
diff --git a/src/compiler/translator/SymbolTable.h b/src/compiler/translator/SymbolTable.h
index 88933d1..2a4cfff 100644
--- a/src/compiler/translator/SymbolTable.h
+++ b/src/compiler/translator/SymbolTable.h
@@ -41,6 +41,8 @@
 namespace sh
 {
 
+class TIntermAggregate;
+
 // Symbol base class. (Can build functions or variables out of these...)
 class TSymbol : angle::NonCopyable
 {
@@ -424,6 +426,10 @@
 
     TSymbol *findBuiltIn(const TString &name, int shaderVersion) const;
 
+    // Helper front-end for regular findBuiltIn that constructs the mangled function name from
+    // callNode.
+    TFunction *findBuiltInOp(TIntermAggregate *callNode, int shaderVersion) const;
+
     TSymbolTableLevel *getOuterLevel()
     {
         assert(currentLevel() >= 1);