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