;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. ;; Test that casts to basic types round trip properly. ;; RUN: wasm-opt %s -all --roundtrip -S -o - | filecheck %s (module ;; CHECK: (func $test (type $none_=>_i32) (result i32) ;; CHECK-NEXT: (ref.test struct ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) (func $test (result i32) (ref.test struct (ref.null none) ) ) ;; CHECK: (func $cast (type $structref_=>_none) (param $x structref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (ref.cast null struct ;; CHECK-NEXT: (local.get $x) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) (func $cast (param $x (ref null struct)) (drop (ref.cast null struct (local.get $x) ) ) ) ;; CHECK: (func $br (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $label$1 (result structref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_on_cast $label$1 nullref (ref struct) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) (func $br (drop (block $l (result structref) (drop (br_on_cast $l nullref (ref struct) (ref.null none) ) ) (ref.null none) ) ) ) ;; CHECK: (func $br-null (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $label$1 (result structref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_on_cast $label$1 nullref structref ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) (func $br-null (drop (block $l (result structref) (drop (br_on_cast $l nullref structref (ref.null none) ) ) (ref.null none) ) ) ) ;; CHECK: (func $br-fail-null (type $none_=>_none) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (block $label$1 (result structref) ;; CHECK-NEXT: (drop ;; CHECK-NEXT: (br_on_cast_fail $label$1 nullref structref ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (ref.null none) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) (func $br-fail-null (drop (block $l (result structref) (drop (br_on_cast_fail $l nullref structref (ref.null none) ) ) (ref.null none) ) ) ) )