;; 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)
      )
    )
  )
)
