| ;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. |
| |
| ;; RUN: wasm-opt %s --remove-unused-names --precompute-propagate --fuzz-exec -all -S -o - \ |
| ;; RUN: | filecheck %s |
| |
| (module |
| (rec |
| ;; CHECK: (rec |
| ;; CHECK-NEXT: (type $struct (descriptor $desc) (struct)) |
| (type $struct (descriptor $desc) (struct)) |
| ;; CHECK: (type $desc (describes $struct) (struct)) |
| (type $desc (describes $struct) (struct)) |
| ) |
| |
| ;; CHECK: (global $desc (ref (exact $desc)) (struct.new_default $desc)) |
| (global $desc (ref (exact $desc)) (struct.new $desc)) |
| ;; CHECK: (global $struct (ref $struct) (struct.new_default_desc $struct |
| ;; CHECK-NEXT: (global.get $desc) |
| ;; CHECK-NEXT: )) |
| (global $struct (ref $struct) (struct.new_desc $struct (global.get $desc))) |
| |
| ;; CHECK: (func $eq-descs (type $0) (result i32) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| (func $eq-descs (result i32) |
| (ref.eq |
| (ref.get_desc $struct |
| (struct.new_desc $struct |
| (global.get $desc) |
| ) |
| ) |
| (global.get $desc) |
| ) |
| ) |
| |
| ;; CHECK: (func $different-descs (type $0) (result i32) |
| ;; CHECK-NEXT: (i32.const 0) |
| ;; CHECK-NEXT: ) |
| (func $different-descs (result i32) |
| (ref.eq |
| (ref.get_desc $struct |
| (struct.new_desc $struct |
| (struct.new $desc) |
| ) |
| ) |
| (global.get $desc) |
| ) |
| ) |
| |
| ;; CHECK: (func $br-on-cast-desc-eq (type $0) (result i32) |
| ;; CHECK-NEXT: (i32.const 1) |
| ;; CHECK-NEXT: ) |
| (func $br-on-cast-desc-eq (result i32) |
| (ref.eq |
| (block $l (result eqref) |
| (drop |
| (br_on_cast_desc_eq $l eqref (ref $struct) |
| (global.get $struct) |
| (global.get $desc) |
| ) |
| ) |
| (ref.null none) |
| ) |
| (global.get $struct) |
| ) |
| ) |
| |
| ;; CHECK: (func $br-on-cast-desc-eq-fail (type $0) (result i32) |
| ;; CHECK-NEXT: (i32.const 0) |
| ;; CHECK-NEXT: ) |
| (func $br-on-cast-desc-eq-fail (result i32) |
| (ref.eq |
| (block $l (result eqref) |
| (drop |
| (br_on_cast_desc_eq_fail $l eqref (ref $struct) |
| (global.get $struct) |
| (global.get $desc) |
| ) |
| ) |
| (ref.null none) |
| ) |
| (global.get $struct) |
| ) |
| ) |
| ) |