summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/passes/J2CLOpts.cpp2
-rw-r--r--test/lit/passes/j2cl.wast52
2 files changed, 54 insertions, 0 deletions
diff --git a/src/passes/J2CLOpts.cpp b/src/passes/J2CLOpts.cpp
index 78edecc45..97129d2cc 100644
--- a/src/passes/J2CLOpts.cpp
+++ b/src/passes/J2CLOpts.cpp
@@ -105,6 +105,8 @@ public:
// TODO: maybe we should not introduce "nop" in the first place and try
// removing instead.
PassRunner runner(getModule());
+ runner.add("precompute");
+ runner.add("remove-unused-brs");
runner.add("vacuum");
runner.setIsNested(true);
runner.runOnFunction(curr);
diff --git a/test/lit/passes/j2cl.wast b/test/lit/passes/j2cl.wast
index d5753907d..50fe807c0 100644
--- a/test/lit/passes/j2cl.wast
+++ b/test/lit/passes/j2cl.wast
@@ -151,3 +151,55 @@
(global.set $field@Foo (i32.const 1))
)
)
+
+
+(module
+ ;; CHECK: (type $0 (func (result i32)))
+
+ ;; CHECK: (global $$var2@Zoo (mut i32) (i32.const 0))
+
+ ;; CHECK: (global $$var1@Zoo i32 (i32.const 2))
+ (global $$var1@Zoo (mut i32) (i32.const 0))
+ (global $$var2@Zoo (mut i32) (i32.const 0))
+
+ ;; CHECK: (export "getVar1_<once>_@Zoo" (func $getVar1_<once>_@Zoo))
+
+ ;; CHECK: (func $getVar1_<once>_@Zoo (type $0) (result i32)
+ ;; CHECK-NEXT: (i32.const 2)
+ ;; CHECK-NEXT: )
+ (func $getVar1_<once>_@Zoo (export "getVar1_<once>_@Zoo") (result i32)
+ (if (global.get $$var1@Zoo)
+ (then
+ (return (global.get $$var1@Zoo))
+ )
+ )
+ (global.set $$var1@Zoo (i32.const 2))
+ (return (global.get $$var1@Zoo))
+ )
+
+ ;; CHECK: (func $getVar2_<once>_@Zoo (type $0) (result i32)
+ ;; CHECK-NEXT: (if
+ ;; CHECK-NEXT: (global.get $$var2@Zoo)
+ ;; CHECK-NEXT: (then
+ ;; CHECK-NEXT: (return
+ ;; CHECK-NEXT: (global.get $$var2@Zoo)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (global.set $$var2@Zoo
+ ;; CHECK-NEXT: (call $getVar1_<once>_@Zoo)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (return
+ ;; CHECK-NEXT: (global.get $$var2@Zoo)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $getVar2_<once>_@Zoo (result i32)
+ (if (global.get $$var2@Zoo)
+ (then
+ (return (global.get $$var2@Zoo))
+ )
+ )
+ (global.set $$var2@Zoo (call $getVar1_<once>_@Zoo))
+ (return (global.get $$var2@Zoo))
+ )
+)