summaryrefslogtreecommitdiff
path: root/test/lit/validation
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2022-08-16 09:39:37 -0700
committerGitHub <noreply@github.com>2022-08-16 09:39:37 -0700
commit64629e9e73c40f0df240345c532163139ff1de68 (patch)
treef6f7e80451b7198ed0255273930f64bfe642a7b3 /test/lit/validation
parentffa40d7f408ed4d35c806f550b1d6bac2a039745 (diff)
downloadbinaryen-64629e9e73c40f0df240345c532163139ff1de68.tar.gz
binaryen-64629e9e73c40f0df240345c532163139ff1de68.tar.bz2
binaryen-64629e9e73c40f0df240345c532163139ff1de68.zip
Validator: Validate intrinsics (#4880)
call.without.effects has a specific form, where the last parameter is a function reference, and that function reference must have the right type for the other parameters if called with them: (call $call.without.effects (..i32..) (..f64..) (..function reference, which takes params i32 and f64..)
Diffstat (limited to 'test/lit/validation')
-rw-r--r--test/lit/validation/intrinsics.wast23
1 files changed, 23 insertions, 0 deletions
diff --git a/test/lit/validation/intrinsics.wast b/test/lit/validation/intrinsics.wast
new file mode 100644
index 000000000..6437b2217
--- /dev/null
+++ b/test/lit/validation/intrinsics.wast
@@ -0,0 +1,23 @@
+;; Test for a validation error on bad usage of call.without.effects
+
+;; RUN: not wasm-opt -all %s 2>&1 | filecheck %s
+
+;; CHECK: param number must match
+
+(module
+ (import "binaryen-intrinsics" "call.without.effects" (func $cwe (param i32 funcref) (result i32)))
+
+ (func "get-ref" (result i32)
+ ;; This call-without-effects is done to a $func, but $func has the wrong
+ ;; signature - it lacks the i32 parameter.
+ (call $cwe
+ (i32.const 41)
+ (ref.func $func)
+ )
+ )
+
+ (func $func (result i32)
+ (i32.const 1)
+ )
+)
+