diff options
author | Heejin Ahn <aheejin@gmail.com> | 2020-10-02 09:25:15 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-10-02 09:25:15 -0700 |
commit | ecaa818922fe2571649a621a00f7f3c40ebb217a (patch) | |
tree | dd49e1a4f90beb6853ce9f8900b032cbdf54dd83 /test/lld | |
parent | 42aec827c2233eb4adbb56c6d1b23d70399bfac1 (diff) | |
download | binaryen-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.out | 26 | ||||
-rw-r--r-- | test/lld/shared_longjmp.wat.out | 14 |
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) |