| ;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. |
| |
| ;; Optimize the code, flatten, and run a pass that will verify it is properly |
| ;; flat. |
| ;; RUN: wasm-opt %s -all -O1 --flatten --rereloop -S -o - | filecheck %s |
| |
| (module |
| ;; CHECK: (export "foo" (func $foo)) |
| (export "foo" (func $foo)) |
| ;; CHECK: (func $foo (type $none_=>_funcref) (result funcref) |
| ;; CHECK-NEXT: (local $0 funcref) |
| ;; CHECK-NEXT: (local $1 (ref $none_=>_funcref)) |
| ;; CHECK-NEXT: (local $2 (ref $none_=>_funcref)) |
| ;; CHECK-NEXT: (local $3 i32) |
| ;; CHECK-NEXT: (block |
| ;; CHECK-NEXT: (local.set $0 |
| ;; CHECK-NEXT: (call $foo) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: (drop |
| ;; CHECK-NEXT: (local.get $0) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: (local.set $1 |
| ;; CHECK-NEXT: (ref.func $foo) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: (local.set $2 |
| ;; CHECK-NEXT: (local.get $1) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: (return |
| ;; CHECK-NEXT: (local.get $2) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| ;; CHECK-NEXT: ) |
| (func $foo (result funcref) |
| ;; the resulting ref.as_non_nulls here must be validated as ok in flat mode. |
| (drop |
| (call $foo) |
| ) |
| (ref.func $foo) |
| ) |
| ) |