diff options
author | Alon Zakai <azakai@google.com> | 2022-08-16 09:39:37 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-16 09:39:37 -0700 |
commit | 64629e9e73c40f0df240345c532163139ff1de68 (patch) | |
tree | f6f7e80451b7198ed0255273930f64bfe642a7b3 /test/lit/validation | |
parent | ffa40d7f408ed4d35c806f550b1d6bac2a039745 (diff) | |
download | binaryen-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.wast | 23 |
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) + ) +) + |