blob: e096f9517a6c218c1db0e54fee4066d81139e3cc [file] [edit]
;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
;; RUN: wasm-opt %s -all --remove-unused-brs -S -o - | filecheck %s
;; Like "remove-unused-brs-exact.wast", but with exact types in the input so we
;; cannot have a NO_CD mode.
(module
;; CHECK: (type $foo (struct))
(type $foo (struct))
;; CHECK: (func $br_on_cast_to_non_null (type $1) (param $foo (ref null $foo)) (result (ref (exact $foo)))
;; CHECK-NEXT: (block $block (result (ref (exact $foo)))
;; CHECK-NEXT: (drop
;; CHECK-NEXT: (block (result nullref)
;; CHECK-NEXT: (br_on_non_null $block
;; CHECK-NEXT: (ref.cast (ref null (exact $foo))
;; CHECK-NEXT: (local.get $foo)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (ref.null none)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: (unreachable)
;; CHECK-NEXT: )
;; CHECK-NEXT: )
(func $br_on_cast_to_non_null (param $foo (ref null $foo)) (result (ref (exact $foo)))
;; We can simplify the br_on_cast to a br_on_non_null plus a cast.
(block $block (result (ref (exact $foo)))
(drop
(br_on_cast $block (ref null $foo) (ref (exact $foo))
(local.get $foo)
)
)
(unreachable)
)
)
)