Snap for 10285248 from 1022730270ba8dd80db1ae4013ec6ccb945b4162 to tm-platform-release

Change-Id: Ic22ef2941e102bf74e3d66920cbf9390e8f59a46
diff --git a/gn/sksl_tests.gni b/gn/sksl_tests.gni
index fdb0b91..d4c4ad4 100644
--- a/gn/sksl_tests.gni
+++ b/gn/sksl_tests.gni
@@ -146,7 +146,6 @@
   "/sksl/errors/PrivateTypes.rts",
   "/sksl/errors/PrivateVariables.rts",
   "/sksl/errors/ProgramTooLarge_Globals.rts",
-  "/sksl/errors/ProgramTooLarge_Parameters.rts",
   "/sksl/errors/ProgramTooLarge_Stack.rts",
   "/sksl/errors/PrototypeInFuncBody.rts",
   "/sksl/errors/RedeclareBasicType.rts",
diff --git a/resources/sksl/errors/ProgramTooLarge_Parameters.rts b/resources/sksl/errors/ProgramTooLarge_Parameters.rts
deleted file mode 100644
index cced977..0000000
--- a/resources/sksl/errors/ProgramTooLarge_Parameters.rts
+++ /dev/null
@@ -1,14 +0,0 @@
-struct S {
-    half4 ah4[1];
-    half ah[99999];
-    half4 h4;
-    half h;
-};
-
-void func(int small,
-          S big_chungus,
-          S no_report /*we don't need to report overflows past the first*/) {}
-
-/*%%*
-variable 'big_chungus' exceeds the stack size limit
-*%%*/
diff --git a/src/sksl/ir/SkSLFunctionDefinition.cpp b/src/sksl/ir/SkSLFunctionDefinition.cpp
index 5daee59..3c7c3d1 100644
--- a/src/sksl/ir/SkSLFunctionDefinition.cpp
+++ b/src/sksl/ir/SkSLFunctionDefinition.cpp
@@ -21,8 +21,6 @@
 #include "src/sksl/transform/SkSLProgramWriter.h"
 
 #include <forward_list>
-#include <string_view>
-#include <vector>
 
 namespace SkSL {
 
@@ -82,27 +80,7 @@
                   FunctionSet* referencedBuiltinFunctions)
             : fContext(context)
             , fFunction(function)
-            , fReferencedBuiltinFunctions(referencedBuiltinFunctions) {
-            // Function parameters count as local variables.
-            for (const Variable* var : function.parameters()) {
-                this->addLocalVariable(var, function.fLine);
-            }
-        }
-
-        void addLocalVariable(const Variable* var, int line) {
-            // We count the number of slots used, but don't consider the precision of the base type.
-            // In practice, this reflects what GPUs actually do pretty well. (i.e., RelaxedPrecision
-            // math doesn't mean your variable takes less space.) We also don't attempt to reclaim
-            // slots at the end of a Block.
-            size_t prevSlotsUsed = fSlotsUsed;
-            fSlotsUsed = SkSafeMath::Add(fSlotsUsed, var->type().slotCount());
-            // To avoid overzealous error reporting, only trigger the error at the first
-            // place where the stack limit is exceeded.
-            if (prevSlotsUsed < kVariableSlotLimit && fSlotsUsed >= kVariableSlotLimit) {
-                fContext.fErrors->error(line, "variable '" + std::string(var->name()) +
-                                              "' exceeds the stack size limit");
-            }
-        }
+            , fReferencedBuiltinFunctions(referencedBuiltinFunctions) {}
 
         ~Finalizer() override {
             SkASSERT(fBreakableLevel == 0);
@@ -166,8 +144,21 @@
         bool visitStatement(Statement& stmt) override {
             switch (stmt.kind()) {
                 case Statement::Kind::kVarDeclaration: {
-                    const Variable* var = &stmt.as<VarDeclaration>().var();
-                    this->addLocalVariable(var, stmt.fLine);
+                    // We count the number of slots used, but don't consider the precision of the
+                    // base type. In practice, this reflects what GPUs really do pretty well.
+                    // (i.e., RelaxedPrecision math doesn't mean your variable takes less space.)
+                    // We also don't attempt to reclaim slots at the end of a Block.
+                    size_t prevSlotsUsed = fSlotsUsed;
+                    fSlotsUsed = SkSafeMath::Add(
+                            fSlotsUsed, stmt.as<VarDeclaration>().var().type().slotCount());
+                    // To avoid overzealous error reporting, only trigger the error at the first
+                    // place where the stack limit is exceeded.
+                    if (prevSlotsUsed < kVariableSlotLimit && fSlotsUsed >= kVariableSlotLimit) {
+                        fContext.fErrors->error(
+                                stmt.fLine,
+                                "variable '" + std::string(stmt.as<VarDeclaration>().var().name()) +
+                                "' exceeds the stack size limit");
+                    }
                     break;
                 }
                 case Statement::Kind::kReturn: {
diff --git a/tests/sksl/errors/ProgramTooLarge_Parameters.glsl b/tests/sksl/errors/ProgramTooLarge_Parameters.glsl
deleted file mode 100644
index d92c325..0000000
--- a/tests/sksl/errors/ProgramTooLarge_Parameters.glsl
+++ /dev/null
@@ -1,6 +0,0 @@
-### Compilation failed:
-
-error: 10: variable 'big_chungus' exceeds the stack size limit
-          S no_report /*we don't need to report overflows past the first*/) {}
-                                                                            ^^
-1 error