summaryrefslogtreecommitdiff
path: root/test/passes/simplify-locals.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/passes/simplify-locals.wast')
-rw-r--r--test/passes/simplify-locals.wast135
1 files changed, 133 insertions, 2 deletions
diff --git a/test/passes/simplify-locals.wast b/test/passes/simplify-locals.wast
index 2fd3a5f4c..24f8476d2 100644
--- a/test/passes/simplify-locals.wast
+++ b/test/passes/simplify-locals.wast
@@ -1,8 +1,12 @@
(module
(memory 256 256)
+ (import $waka "env" "waka")
+ (import $waka_int "env" "waka_int" (result i32))
(func $b0-yes (param $i1 i32)
(local $x i32)
(local $y i32)
+ (local $a i32)
+ (local $b i32)
(set_local $x (i32.const 5))
(get_local $x)
(block
@@ -11,10 +15,10 @@
)
(set_local $x (i32.const 11))
(get_local $x)
- (set_local $x (i32.const 5))
+ (set_local $x (i32.const 9))
(get_local $y)
(block
- (set_local $x (i32.const 7))
+ (set_local $x (i32.const 8))
(get_local $y)
)
(set_local $x (i32.const 11))
@@ -26,6 +30,133 @@
(get_local $x)
(get_local $x)
(get_local $x)
+ (block
+ (set_local $a (i32.const 1))
+ (set_local $b (i32.const 2))
+ (get_local $a)
+ (get_local $b)
+ (set_local $a (i32.const 3))
+ (set_local $b (i32.const 4))
+ (set_local $a (i32.const 5))
+ (set_local $b (i32.const 6))
+ (get_local $b)
+ (get_local $a)
+ (set_local $a (i32.const 7))
+ (set_local $b (i32.const 8))
+ (set_local $a (i32.const 9))
+ (set_local $b (i32.const 10))
+ (call_import $waka)
+ (get_local $a)
+ (get_local $b)
+ (set_local $a (i32.const 11))
+ (set_local $b (i32.const 12))
+ (set_local $a (i32.const 13))
+ (set_local $b (i32.const 14))
+ (i32.load
+ (i32.const 24)
+ )
+ (get_local $a)
+ (get_local $b)
+ (set_local $a (i32.const 15))
+ (set_local $b (i32.const 16))
+ (set_local $a (i32.const 17))
+ (set_local $b (i32.const 18))
+ (i32.store
+ (i32.const 48)
+ (i32.const 96)
+ )
+ (get_local $a)
+ (get_local $b)
+ )
+ (block
+ (set_local $a (call_import $waka_int))
+ (get_local $a) ;; yes
+ (call_import $waka)
+
+ (set_local $a (call_import $waka_int))
+ (call_import $waka)
+ (get_local $a) ;; no
+ (call_import $waka)
+
+ (set_local $a (call_import $waka_int))
+ (i32.load (i32.const 1))
+ (get_local $a) ;; no
+ (call_import $waka)
+
+ (set_local $a (call_import $waka_int))
+ (i32.store (i32.const 1) (i32.const 2))
+ (get_local $a) ;; no
+ (call_import $waka)
+
+ (set_local $a (i32.load (i32.const 100)))
+ (get_local $a) ;; yes
+ (call_import $waka)
+
+ (set_local $a (i32.load (i32.const 101)))
+ (i32.load (i32.const 1))
+ (get_local $a) ;; yes
+ (call_import $waka)
+
+ (set_local $a (i32.load (i32.const 102)))
+ (call_import $waka)
+ (get_local $a) ;; no
+ (call_import $waka)
+
+ (set_local $a (i32.load (i32.const 103)))
+ (i32.store (i32.const 1) (i32.const 2))
+ (get_local $a) ;; no
+ (call_import $waka)
+
+ (set_local $a (i32.store (i32.const 104) (i32.const 105)))
+ (get_local $a) ;; yes
+ (call_import $waka)
+
+ (set_local $a (i32.store (i32.const 106) (i32.const 107)))
+ (call_import $waka)
+ (get_local $a) ;; no
+ (call_import $waka)
+
+ (set_local $a (i32.store (i32.const 108) (i32.const 109)))
+ (i32.load (i32.const 1))
+ (get_local $a) ;; no
+ (call_import $waka)
+
+ (set_local $a (i32.store (i32.const 110) (i32.const 111)))
+ (i32.store (i32.const 1) (i32.const 2))
+ (get_local $a) ;; no
+ (call_import $waka)
+ )
+ (block $out-of-block
+ (set_local $a (i32.const 1337))
+ (block $b
+ (block $c
+ (br $b)
+ )
+ (set_local $a (i32.const 9876))
+ )
+ (get_local $a)
+ )
+ (block $loopey
+ (set_local $a (i32.const 1337))
+ (loop
+ (get_local $a)
+ (set_local $a (i32.const 9876))
+ )
+ (get_local $a)
+ )
+ )
+ (func $Ia (param $a i32) (result i32)
+ (local $b i32)
+ (block $switch$0
+ (block $switch-default$6
+ (set_local $b
+ (i32.const 60)
+ )
+ )
+ )
+ (return
+ (get_local $b)
+ )
)
)