summaryrefslogtreecommitdiff
path: root/test/lld
diff options
context:
space:
mode:
authorHeejin Ahn <aheejin@gmail.com>2020-10-02 09:25:15 -0700
committerGitHub <noreply@github.com>2020-10-02 09:25:15 -0700
commitecaa818922fe2571649a621a00f7f3c40ebb217a (patch)
treedd49e1a4f90beb6853ce9f8900b032cbdf54dd83 /test/lld
parent42aec827c2233eb4adbb56c6d1b23d70399bfac1 (diff)
downloadbinaryen-ecaa818922fe2571649a621a00f7f3c40ebb217a.tar.gz
binaryen-ecaa818922fe2571649a621a00f7f3c40ebb217a.tar.bz2
binaryen-ecaa818922fe2571649a621a00f7f3c40ebb217a.zip
Let GenerateDynCalls generate dynCalls for invokes (#3192)
This moves dynCall generating functionaity for invokes from `EmscriptenGlueGenerator` to `GenerateDynCalls` pass. So now `GenerateDynCalls` pass will take care of all cases we need dynCalls: functions in tables and invokes.
Diffstat (limited to 'test/lld')
-rw-r--r--test/lld/duplicate_imports.wat.out26
-rw-r--r--test/lld/shared_longjmp.wat.out14
2 files changed, 30 insertions, 10 deletions
diff --git a/test/lld/duplicate_imports.wat.out b/test/lld/duplicate_imports.wat.out
index 6467c2bab..fcc03c13a 100644
--- a/test/lld/duplicate_imports.wat.out
+++ b/test/lld/duplicate_imports.wat.out
@@ -1,11 +1,13 @@
(module
+ (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32)))
+ (type $i32_f64_f64_=>_f32 (func (param i32 f64 f64) (result f32)))
(type $none_=>_none (func))
(type $none_=>_i32 (func (result i32)))
(type $i32_=>_i32 (func (param i32) (result i32)))
(type $i32_i32_=>_i32 (func (param i32 i32) (result i32)))
(type $i64_=>_i32 (func (param i64) (result i32)))
- (type $i32_f32_f64_=>_f32 (func (param i32 f32 f64) (result f32)))
- (type $i32_f64_f64_=>_f32 (func (param i32 f64 f64) (result f32)))
+ (type $f32_f64_=>_f32 (func (param f32 f64) (result f32)))
+ (type $f64_f64_=>_f32 (func (param f64 f64) (result f32)))
(import "env" "puts" (func $puts1 (param i32) (result i32)))
(import "env" "invoke_ffd" (func $invoke_ffd (param i32 f32 f64) (result f32)))
(import "env" "invoke_ffd" (func $invoke_ffd2 (param i32 f64 f64) (result f32)))
@@ -21,6 +23,8 @@
(export "main" (func $main))
(export "__heap_base" (global $global$1))
(export "__data_end" (global $global$2))
+ (export "dynCall_ffd" (func $dynCall_ffd))
+ (export "dynCall_fdd" (func $dynCall_fdd))
(func $main (result i32)
(drop
(call $puts1
@@ -32,6 +36,20 @@
(func $__wasm_call_ctors
(nop)
)
+ (func $dynCall_ffd (param $fptr i32) (param $0 f32) (param $1 f64) (result f32)
+ (call_indirect (type $f32_f64_=>_f32)
+ (local.get $0)
+ (local.get $1)
+ (local.get $fptr)
+ )
+ )
+ (func $dynCall_fdd (param $fptr i32) (param $0 f64) (param $1 f64) (result f32)
+ (call_indirect (type $f64_f64_=>_f32)
+ (local.get $0)
+ (local.get $1)
+ (local.get $fptr)
+ )
+ )
(func $legalfunc$puts2 (param $0 i64) (result i32)
(call $legalimport$puts2
(i32.wrap_i64
@@ -61,7 +79,9 @@
],
"exports": [
"__wasm_call_ctors",
- "main"
+ "main",
+ "dynCall_ffd",
+ "dynCall_fdd"
],
"namedGlobals": {
"__heap_base" : "66128",
diff --git a/test/lld/shared_longjmp.wat.out b/test/lld/shared_longjmp.wat.out
index cc42f7368..7d987454a 100644
--- a/test/lld/shared_longjmp.wat.out
+++ b/test/lld/shared_longjmp.wat.out
@@ -143,13 +143,6 @@
)
(unreachable)
)
- (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32)
- (call_indirect (type $i32_i32_=>_none)
- (local.get $0)
- (local.get $1)
- (local.get $fptr)
- )
- )
(func $__assign_got_enties
(global.set $gimport$13
(call $g$__THREW__)
@@ -161,6 +154,13 @@
(call $fp$emscripten_longjmp_jmpbuf$vii)
)
)
+ (func $dynCall_vii (param $fptr i32) (param $0 i32) (param $1 i32)
+ (call_indirect (type $i32_i32_=>_none)
+ (local.get $0)
+ (local.get $1)
+ (local.get $fptr)
+ )
+ )
(func $__post_instantiate
(call $__assign_got_enties)
(call $0)