Migrate compiler elimination passes to Transform.

Change-Id: Ibb8695917d0a8ff43467542ee7a7b36f573513f8
Reviewed-on: https://skia-review.googlesource.com/c/skia/+/456798
Commit-Queue: John Stiles <johnstiles@google.com>
Auto-Submit: John Stiles <johnstiles@google.com>
Reviewed-by: Brian Osman <brianosman@google.com>
diff --git a/src/sksl/transform/SkSLEliminateUnreachableCode.cpp b/src/sksl/transform/SkSLEliminateUnreachableCode.cpp
index 267f5b9..e4e3956 100644
--- a/src/sksl/transform/SkSLEliminateUnreachableCode.cpp
+++ b/src/sksl/transform/SkSLEliminateUnreachableCode.cpp
@@ -6,6 +6,7 @@
  */
 
 #include "include/private/SkSLStatement.h"
+#include "src/sksl/ir/SkSLFunctionDefinition.h"
 #include "src/sksl/ir/SkSLIfStatement.h"
 #include "src/sksl/ir/SkSLNop.h"
 #include "src/sksl/ir/SkSLProgram.h"
@@ -16,7 +17,7 @@
 
 namespace SkSL {
 
-void Transform::EliminateUnreachableCode(std::unique_ptr<Statement>& stmt, ProgramUsage* usage) {
+void Transform::EliminateUnreachableCode(Program& program, ProgramUsage* usage) {
     class UnreachableCodeEliminator : public ProgramWriter {
     public:
         UnreachableCodeEliminator(ProgramUsage* usage)
@@ -131,8 +132,12 @@
         using INHERITED = ProgramWriter;
     };
 
-    UnreachableCodeEliminator visitor{usage};
-    visitor.visitStatementPtr(stmt);
+    for (std::unique_ptr<ProgramElement>& pe : program.fOwnedElements) {
+        if (pe->is<FunctionDefinition>()) {
+            UnreachableCodeEliminator visitor{usage};
+            visitor.visitStatementPtr(pe->as<FunctionDefinition>().body());
+        }
+    }
 }
 
 }  // namespace SkSL