summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAlon Zakai <alonzakai@gmail.com>2019-03-06 16:02:34 -0800
committerGitHub <noreply@github.com>2019-03-06 16:02:34 -0800
commit8b5b85463cd5f5fcfec4d0bc6acb52f2acb30d79 (patch)
treed568a0b58e4d04d7d725aff1e573205bef2a00a9 /test
parent6657500c924bdd40c8abf8c6a9655654b9342eca (diff)
downloadbinaryen-8b5b85463cd5f5fcfec4d0bc6acb52f2acb30d79.tar.gz
binaryen-8b5b85463cd5f5fcfec4d0bc6acb52f2acb30d79.tar.bz2
binaryen-8b5b85463cd5f5fcfec4d0bc6acb52f2acb30d79.zip
Don't create already-existing dynCalls (#1932)
This can happen in emscripten if we run fpcast-emu after previous passes created dynCalls already. If so, it's fine to just do nothing. Fixes emscripten-core/emscripten#8229
Diffstat (limited to 'test')
-rw-r--r--test/passes/fpcast-emu.txt41
-rw-r--r--test/passes/fpcast-emu.wast10
2 files changed, 51 insertions, 0 deletions
diff --git a/test/passes/fpcast-emu.txt b/test/passes/fpcast-emu.txt
index c1a76b1d3..bb0c4950b 100644
--- a/test/passes/fpcast-emu.txt
+++ b/test/passes/fpcast-emu.txt
@@ -455,3 +455,44 @@
)
)
)
+(module
+ (type $0 (func (param f32)))
+ (type $1 (func (param f64)))
+ (type $FUNCSIG$jjjjjjjjjjjjjjjjj (func (param i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64 i64) (result i64)))
+ (type $FUNCSIG$vf (func (param f32)))
+ (type $FUNCSIG$vd (func (param f64)))
+ (table $0 42 42 funcref)
+ (elem (i32.const 0) $byn$fpcast-emu$a $byn$fpcast-emu$b)
+ (export "dynCall_vf" (func $dynCall_vf))
+ (export "dynCall_vd" (func $min_vd))
+ (func $a (; 0 ;) (type $0) (param $0 f32)
+ (nop)
+ )
+ (func $b (; 1 ;) (type $1) (param $0 f64)
+ (nop)
+ )
+ (func $dynCall_vf (; 2 ;) (type $0) (param $0 f32)
+ (nop)
+ )
+ (func $min_vd (; 3 ;) (type $0) (param $0 f32)
+ (nop)
+ )
+ (func $byn$fpcast-emu$a (; 4 ;) (type $FUNCSIG$jjjjjjjjjjjjjjjjj) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64)
+ (call $a
+ (f32.reinterpret_i32
+ (i32.wrap_i64
+ (local.get $0)
+ )
+ )
+ )
+ (i64.const 0)
+ )
+ (func $byn$fpcast-emu$b (; 5 ;) (type $FUNCSIG$jjjjjjjjjjjjjjjjj) (param $0 i64) (param $1 i64) (param $2 i64) (param $3 i64) (param $4 i64) (param $5 i64) (param $6 i64) (param $7 i64) (param $8 i64) (param $9 i64) (param $10 i64) (param $11 i64) (param $12 i64) (param $13 i64) (param $14 i64) (param $15 i64) (result i64)
+ (call $b
+ (f64.reinterpret_i64
+ (local.get $0)
+ )
+ )
+ (i64.const 0)
+ )
+)
diff --git a/test/passes/fpcast-emu.wast b/test/passes/fpcast-emu.wast
index 1ea95b348..90af71d6f 100644
--- a/test/passes/fpcast-emu.wast
+++ b/test/passes/fpcast-emu.wast
@@ -67,4 +67,14 @@
)
)
)
+(module
+ (table 42 42 funcref)
+ (elem (i32.const 0) $a $b)
+ (export "dynCall_vf" (func $dynCall_vf))
+ (export "dynCall_vd" (func $min_vd))
+ (func $a (param $0 f32))
+ (func $b (param $0 f64))
+ (func $dynCall_vf (param $0 f32))
+ (func $min_vd (param $0 f32))
+)