summaryrefslogtreecommitdiff
path: root/test/passes/precompute-propagate.wast
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2018-04-26 14:42:40 -0700
committerGitHub <noreply@github.com>2018-04-26 14:42:40 -0700
commit353be4a0537de508f45ee72624d1af65bd5597dd (patch)
treea31124c5fc3a4b8fad604e52f5fc3fc25c754ffc /test/passes/precompute-propagate.wast
parent14552064348c08159d6f8562a872c1be69e669b0 (diff)
downloadbinaryen-353be4a0537de508f45ee72624d1af65bd5597dd.tar.gz
binaryen-353be4a0537de508f45ee72624d1af65bd5597dd.tar.bz2
binaryen-353be4a0537de508f45ee72624d1af65bd5597dd.zip
Improve precompute-propagate (#1514)
Propagate constants through a tee_local. Found by Souper. Details in patch comments - basically we didn't differentiate precomputing a value and an expression.
Diffstat (limited to 'test/passes/precompute-propagate.wast')
-rw-r--r--test/passes/precompute-propagate.wast28
1 files changed, 28 insertions, 0 deletions
diff --git a/test/passes/precompute-propagate.wast b/test/passes/precompute-propagate.wast
index af1a21ba2..4cf440829 100644
--- a/test/passes/precompute-propagate.wast
+++ b/test/passes/precompute-propagate.wast
@@ -109,5 +109,33 @@
(br $loop)
)
)
+ (func $through-tee (param $x i32) (param $y i32) (result i32)
+ (set_local $x
+ (tee_local $y
+ (i32.const 7)
+ )
+ )
+ (return
+ (i32.add
+ (get_local $x)
+ (get_local $y)
+ )
+ )
+ )
+ (func $through-tee-more (param $x i32) (param $y i32) (result i32)
+ (set_local $x
+ (i32.eqz
+ (tee_local $y
+ (i32.const 7)
+ )
+ )
+ )
+ (return
+ (i32.add
+ (get_local $x)
+ (get_local $y)
+ )
+ )
+ )
)