;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. ;; RUN: wasm-opt %s -all --nominal -S -o - | filecheck %s --check-prefix CHECK ;; RUN: wasm-opt %s -all --nominal --roundtrip -S -o - | filecheck %s ;; RUN: wasm-opt %s -all --hybrid -S -o - | filecheck %s --check-prefix CHECK ;; RUN: wasm-opt %s -all --hybrid --roundtrip -S -o - | filecheck %s ;; Note that --hybrid and --nominal have the same output, so they share the CHECK prefix. (module ;; CHECK: (type $super-struct (struct (field i32))) (type $super-struct (struct i32)) ;; CHECK: (type $sub-struct (struct_subtype (field i32) (field i64) $super-struct)) (type $sub-struct (struct_subtype i32 i64 $super-struct)) ;; CHECK: (type $super-array (array (ref $super-struct))) (type $super-array (array (ref $super-struct))) ;; CHECK: (type $sub-array (array_subtype (ref $sub-struct) $super-array)) (type $sub-array (array_subtype (ref $sub-struct) $super-array)) ;; TODO: signature types as well, once functions store their HeapTypes. ;; CHECK: (func $make-super-struct (type $none_=>_ref|$super-struct|) (result (ref $super-struct)) ;; CHECK-NEXT: (call $make-sub-struct) ;; CHECK-NEXT: ) (func $make-super-struct (result (ref $super-struct)) (call $make-sub-struct) ) ;; CHECK: (func $make-sub-struct (type $none_=>_ref|$sub-struct|) (result (ref $sub-struct)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $make-sub-struct (result (ref $sub-struct)) (unreachable) ) ;; CHECK: (func $make-super-array (type $none_=>_ref|$super-array|) (result (ref $super-array)) ;; CHECK-NEXT: (call $make-sub-array) ;; CHECK-NEXT: ) (func $make-super-array (result (ref $super-array)) (call $make-sub-array) ) ;; CHECK: (func $make-sub-array (type $none_=>_ref|$sub-array|) (result (ref $sub-array)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $make-sub-array (result (ref $sub-array)) (unreachable) ) )