summaryrefslogtreecommitdiff
path: root/test/passes/post-emscripten.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/passes/post-emscripten.wast')
-rw-r--r--test/passes/post-emscripten.wast23
1 files changed, 22 insertions, 1 deletions
diff --git a/test/passes/post-emscripten.wast b/test/passes/post-emscripten.wast
index fe60858f7..e5a4637cc 100644
--- a/test/passes/post-emscripten.wast
+++ b/test/passes/post-emscripten.wast
@@ -109,7 +109,7 @@
(call $call)
)
)
-(module
+(module ;; non-constant base for elem
(type $0 (func (param i32)))
(import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64)))
(import "env" "invoke_vif" (func $invoke_vif (param i32 i32 f32)))
@@ -127,3 +127,24 @@
(func $other_safe (param i32) (param f32)
)
)
+(module ;; indirect call in the invoke target, which we assume might throw
+ (type $none_=>_none (func))
+ (import "global.Math" "pow" (func $Math_pow (param f64 f64) (result f64)))
+ (import "env" "invoke_vif" (func $invoke_vif (param i32 i32 f32)))
+ (import "env" "glob" (global $glob i32)) ;; non-constant table offset
+ (memory 256 256)
+ (table 7 7 funcref)
+ (elem (i32.const 0) $other_safe)
+ (func $exc
+ (call $invoke_vif
+ (i32.const 0) ;; other_safe()
+ (i32.const 42)
+ (f32.const 3.14159)
+ )
+ )
+ (func $other_safe (param i32) (param f32)
+ (call_indirect (type $none_=>_none)
+ (i32.const 0)
+ )
+ )
+)