blob: 1a1fa8a7c82297ef87de5100ff584b37742ad3a0 [file] [edit]
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
;; Check that we take exactness into account correctly depending on the
;; features. It differentiates shapes only when custom descriptors is enabled.
;; RUN: wasm-opt %s -all --minimize-rec-groups -S -o - | filecheck %s
;; RUN: wasm-opt %s -all --disable-custom-descriptors --minimize-rec-groups -S -o - | filecheck %s --check-prefix=NO_CD
(module
(rec
(type $foo (struct))
;; This SCC has only one distinct permutation.
;; CHECK: (rec
;; CHECK-NEXT: (type $b-inexact (struct (field (ref $a-inexact))))
;; CHECK: (type $a-inexact (struct (field (ref $b-inexact))))
;; NO_CD: (rec
;; NO_CD-NEXT: (type $b-inexact (struct (field (ref $a-inexact))))
;; NO_CD: (type $a-inexact (struct (field (ref $b-inexact))))
(type $a-inexact (struct (field (ref $b-inexact))))
(type $b-inexact (struct (field (ref $a-inexact))))
;; This SCC is only different because of exactness. It needs a brand only if
;; custom descriptors is disabled.
;; CHECK: (rec
;; CHECK-NEXT: (type $b-exact (struct (field (ref (exact $a-exact)))))
;; CHECK: (type $a-exact (struct (field (ref (exact $b-exact)))))
;; NO_CD: (rec
;; NO_CD-NEXT: (type $2 (struct))
;; NO_CD: (type $b-exact (struct (field (ref (exact $a-exact)))))
;; NO_CD: (type $a-exact (struct (field (ref (exact $b-exact)))))
(type $a-exact (struct (field (ref (exact $b-exact)))))
(type $b-exact (struct (field (ref (exact $a-exact)))))
)
;; CHECK: (global $a-inexact (ref null $a-inexact) (ref.null none))
;; NO_CD: (global $a-inexact (ref null $a-inexact) (ref.null none))
(global $a-inexact (ref null $a-inexact) (ref.null none))
;; CHECK: (global $b-inexact (ref null $b-inexact) (ref.null none))
;; NO_CD: (global $b-inexact (ref null $b-inexact) (ref.null none))
(global $b-inexact (ref null $b-inexact) (ref.null none))
;; CHECK: (global $a-exact (ref null $a-exact) (ref.null none))
;; NO_CD: (global $a-exact (ref null $a-exact) (ref.null none))
(global $a-exact (ref null $a-exact) (ref.null none))
;; CHECK: (global $b-exact (ref null $b-exact) (ref.null none))
;; NO_CD: (global $b-exact (ref null $b-exact) (ref.null none))
(global $b-exact (ref null $b-exact) (ref.null none))
)