| ;; NOTE: Assertions have been generated by update_lit_checks.py --output=fuzz-exec and should not be edited. |
| |
| ;; RUN: wasm-opt %s -all --fuzz-exec-before -q -o /dev/null 2>&1 | filecheck %s |
| |
| ;; The elem is out of bounds, leading to a trap during initialization. |
| (assert_unlinkable |
| (module |
| (table $table 1 1 funcref) |
| (elem $elem (i32.const 1) $foo) |
| (func $foo) |
| ) |
| "trap" |
| ) |
| |
| ;; Now it is in bounds, with the elem offset reduced to 0. |
| (module |
| (table $table 1 1 funcref) |
| (elem $elem (i32.const 0) $foo) |
| (func $foo) |
| ) |
| |
| ;; The table begins with a function that returns zero. table.init will replace |
| ;; it with one that returns 1. |
| (module |
| (type $i (func (result i32))) |
| |
| (table $table 10 funcref) |
| (elem $zero (i32.const 0) $zero) |
| (elem $one $one) |
| |
| (func $call (export "call") (result i32) |
| (call_indirect (type $i) (i32.const 0)) |
| ) |
| |
| (func $init (export "init") (result i32) |
| (table.init $table $one (i32.const 0) (i32.const 0) (i32.const 1)) |
| (call $call) |
| ) |
| |
| (func $zero (result i32) |
| (i32.const 0) |
| ) |
| |
| (func $one (result i32) |
| (i32.const 1) |
| ) |
| ) |
| |
| ;; First we get 0, then 1. |
| (assert_return (invoke "call") (i32.const 0)) |
| (assert_return (invoke "init") (i32.const 1)) |
| |