summaryrefslogtreecommitdiff
path: root/test/passes
diff options
context:
space:
mode:
Diffstat (limited to 'test/passes')
-rw-r--r--test/passes/simplify-locals.txt238
-rw-r--r--test/passes/simplify-locals.wast135
-rw-r--r--test/passes/vacuum.txt8
-rw-r--r--test/passes/vacuum.wast12
4 files changed, 389 insertions, 4 deletions
diff --git a/test/passes/simplify-locals.txt b/test/passes/simplify-locals.txt
index 4b0a1ca2b..95b714eb9 100644
--- a/test/passes/simplify-locals.txt
+++ b/test/passes/simplify-locals.txt
@@ -1,26 +1,35 @@
(module
(memory 256 256)
+ (type $FUNCSIG$v (func))
+ (type $FUNCSIG$i (func (result i32)))
+ (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)
+ (nop)
(set_local $x
(i32.const 5)
)
(block $block0
+ (nop)
(set_local $x
(i32.const 7)
)
)
+ (nop)
(set_local $x
(i32.const 11)
)
(set_local $x
- (i32.const 5)
+ (i32.const 9)
)
(get_local $y)
(block $block1
(set_local $x
- (i32.const 7)
+ (i32.const 8)
)
(get_local $y)
)
@@ -28,8 +37,233 @@
(i32.const 11)
)
(get_local $y)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
+ (nop)
(set_local $x
(i32.const 17)
)
+ (block $block2
+ (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)
+ )
+ (nop)
+ (set_local $b
+ (i32.const 6)
+ )
+ (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 $block3
+ (nop)
+ (set_local $a
+ (call_import $waka_int)
+ )
+ (call_import $waka)
+ (set_local $a
+ (call_import $waka_int)
+ )
+ (call_import $waka)
+ (get_local $a)
+ (call_import $waka)
+ (set_local $a
+ (call_import $waka_int)
+ )
+ (i32.load
+ (i32.const 1)
+ )
+ (get_local $a)
+ (call_import $waka)
+ (set_local $a
+ (call_import $waka_int)
+ )
+ (i32.store
+ (i32.const 1)
+ (i32.const 2)
+ )
+ (get_local $a)
+ (call_import $waka)
+ (nop)
+ (set_local $a
+ (i32.load
+ (i32.const 100)
+ )
+ )
+ (call_import $waka)
+ (nop)
+ (i32.load
+ (i32.const 1)
+ )
+ (set_local $a
+ (i32.load
+ (i32.const 101)
+ )
+ )
+ (call_import $waka)
+ (set_local $a
+ (i32.load
+ (i32.const 102)
+ )
+ )
+ (call_import $waka)
+ (get_local $a)
+ (call_import $waka)
+ (set_local $a
+ (i32.load
+ (i32.const 103)
+ )
+ )
+ (i32.store
+ (i32.const 1)
+ (i32.const 2)
+ )
+ (get_local $a)
+ (call_import $waka)
+ (nop)
+ (set_local $a
+ (i32.store
+ (i32.const 104)
+ (i32.const 105)
+ )
+ )
+ (call_import $waka)
+ (set_local $a
+ (i32.store
+ (i32.const 106)
+ (i32.const 107)
+ )
+ )
+ (call_import $waka)
+ (get_local $a)
+ (call_import $waka)
+ (set_local $a
+ (i32.store
+ (i32.const 108)
+ (i32.const 109)
+ )
+ )
+ (i32.load
+ (i32.const 1)
+ )
+ (get_local $a)
+ (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)
+ (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 $loop-out4 $loop-in5
+ (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)
+ )
)
)
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)
+ )
)
)
diff --git a/test/passes/vacuum.txt b/test/passes/vacuum.txt
new file mode 100644
index 000000000..bb76b2d82
--- /dev/null
+++ b/test/passes/vacuum.txt
@@ -0,0 +1,8 @@
+(module
+ (memory 256 256)
+ (func $b
+ (i32.const 50)
+ (i32.const 51)
+ (i32.const 52)
+ )
+)
diff --git a/test/passes/vacuum.wast b/test/passes/vacuum.wast
new file mode 100644
index 000000000..24dc32bcb
--- /dev/null
+++ b/test/passes/vacuum.wast
@@ -0,0 +1,12 @@
+(module
+ (memory 256 256)
+ (func $b
+ (i32.const 50)
+ (nop)
+ (i32.const 51)
+ (nop)
+ (nop)
+ (i32.const 52)
+ )
+)
+