summaryrefslogtreecommitdiff
path: root/test/passes/code-pushing_ignore-implicit-traps.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/passes/code-pushing_ignore-implicit-traps.wast')
-rw-r--r--test/passes/code-pushing_ignore-implicit-traps.wast249
1 files changed, 0 insertions, 249 deletions
diff --git a/test/passes/code-pushing_ignore-implicit-traps.wast b/test/passes/code-pushing_ignore-implicit-traps.wast
deleted file mode 100644
index 3f70c24a6..000000000
--- a/test/passes/code-pushing_ignore-implicit-traps.wast
+++ /dev/null
@@ -1,249 +0,0 @@
-(module
- (memory 1)
- (func $push1
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- )
- )
- (func $push2
- (local $x i32)
- (local $y i32)
- (block $out
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 3))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- (drop (local.get $y))
- )
- )
- (func $push1-twice
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (br_if $out (i32.const 2))
- (br_if $out (i32.const 3))
- (drop (local.get $x))
- )
- )
- (func $push1-twiceb
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (br_if $out (i32.const 2))
- (nop)
- (br_if $out (i32.const 3))
- (drop (local.get $x))
- )
- )
- (func $push2-twice
- (local $x i32)
- (local $y i32)
- (block $out
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 3))
- (br_if $out (i32.const 2))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- (drop (local.get $y))
- )
- )
- (func $ignore-last
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (br_if $out (i32.const 2))
- )
- )
- (func $ignore-last2
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (nop)
- (nop)
- (br_if $out (i32.const 2))
- )
- )
- (func $push-if
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (if (i32.const 2) (nop))
- (drop (local.get $x))
- )
- )
- (func $push-dropped (result i32)
- (local $x i32)
- (block $out (result i32)
- (local.set $x (i32.const 1))
- (drop (br_if $out (i32.const 2) (i32.const 3)))
- (drop (local.get $x))
- (i32.const 4)
- )
- )
- (func $push-past-stuff
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (call $push-past-stuff)
- (drop (i32.const 1))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- )
- )
- (func $fail-then-push
- (local $x i32)
- (local $y i32)
- (block $out
- (local.set $x (i32.const 1))
- (drop (local.get $x))
- (br_if $out (i32.const 2))
- (local.set $y (i32.const 1))
- (br_if $out (i32.const 3))
- (drop (local.get $x))
- (drop (local.get $y))
- )
- )
- ;; and now for stuff that should *not* be pushed
- (func $used
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (br_if $out (local.get $x))
- (drop (local.get $x))
- )
- )
- (func $not-sfa
- (local $x i32)
- (local.set $x (i32.const 1))
- (block $out
- (local.set $x (i32.const 1))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- )
- )
- (func $not-sfa2
- (local $x i32)
- (drop (local.get $x))
- (block $out
- (local.set $x (i32.const 1))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- )
- )
- (func $used-out
- (local $x i32)
- (block $out
- (local.set $x (i32.const 1))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- )
- (drop (local.get $x))
- )
- (func $value-might-interfere ;; but doesn't
- (local $x i32)
- (block $out
- (local.set $x (i32.load (i32.const 0)))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- )
- )
- (func $value-interferes
- (local $x i32)
- (block $out
- (local.set $x (i32.load (i32.const 0)))
- (i32.store (i32.const 1) (i32.const 3))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- )
- )
- (func $value-interferes-accumulation
- (local $x i32)
- (block $out
- (local.set $x (i32.load (i32.const 0)))
- (nop)
- (i32.store (i32.const 1) (i32.const 3))
- (nop)
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- )
- )
- (func $value-interferes-in-pushpoint
- (local $x i32)
- (block $out
- (local.set $x (i32.load (i32.const 0)))
- (if (i32.const 1)
- (call $value-interferes)
- )
- (drop (local.get $x))
- )
- )
- (func $values-might-interfere ;; they don't, as we keep the order - but here their side effects prevent pushing
- (local $x i32)
- (local $y i32)
- (block $out
- (local.set $x (call $push-dropped))
- (local.set $y (call $push-dropped))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- (drop (local.get $y))
- )
- )
- (func $unpushed-interferes
- (local $x i32)
- (local $y i32)
- (block $out
- (local.set $x (call $push-dropped))
- (local.set $y (call $push-dropped))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- (drop (local.get $y))
- )
- (drop (local.get $y)) ;; $y can't be pushed, so x can't be
- )
- (func $unpushed-ignorable
- (local $x i32)
- (local $y i32)
- (block $out
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 3))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- (drop (local.get $y))
- )
- (drop (local.get $x)) ;; $x can't be pushed, but y doesn't care
- )
- (func $unpushed-ignorable-side-effect
- (local $x i32)
- (local $y i32)
- (block $out
- (local.set $x (call $push-dropped)) ;; $x can't be pushed, but y doesn't care
- (local.set $y (i32.const 3))
- (br_if $out (i32.const 2))
- (drop (local.get $x))
- (drop (local.get $y))
- )
- )
- (func $unpushed-side-effect-into-drop
- (local $x i32)
- (block $out
- (local.set $x (call $push-dropped))
- (br_if $out (i32.const 1))
- (drop (local.get $x))
- )
- )
- (func $unpushed-side-effect-into-if
- (local $x i32)
- (block $out
- (local.set $x (call $push-dropped))
- (br_if $out (i32.const 1))
- (if
- (local.get $x)
- (nop)
- )
- )
- )
-)
-