| ;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. | |
| ;; RUN: wasm-opt %s -all --disable-gc -S -o - | filecheck %s | |
| ;; RUN: wasm-opt %s -all --disable-gc -S -o - | wasm-opt -all --disable-gc -S -o - | filecheck %s | |
| (module | |
| ;; RTRIP: (type $tuple (func (result i32 externref))) | |
| ;; CHECK: (type $tuple (func (result i32 externref))) | |
| (type $tuple (func (result i32 externref))) | |
| ;; CHECK: (func $f (result i32 externref) | |
| ;; CHECK-NEXT: (local $scratch (tuple i32 externref)) | |
| ;; CHECK-NEXT: (block $l (type $tuple) (result i32 externref) | |
| ;; CHECK-NEXT: (br $l | |
| ;; CHECK-NEXT: (block (type $tuple) (result i32 externref) | |
| ;; CHECK-NEXT: (local.set $scratch | |
| ;; CHECK-NEXT: (br_if $l | |
| ;; CHECK-NEXT: (tuple.make 2 | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: (ref.null noextern) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (i32.const 0) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: (nop) | |
| ;; CHECK-NEXT: (local.get $scratch) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| ;; CHECK-NEXT: ) | |
| (func $f (result i32 externref) | |
| block $l (type $tuple) (result i32 externref) | |
| i32.const 0 | |
| ref.null extern | |
| i32.const 0 | |
| br_if $l ;; package the i32 and nullexternref into a tuple | |
| nop ;; force creation of a scratch local | |
| br $l ;; consume a scratch local block with (result i32 nullexternref) | |
| ;; the nullexternref will become externref, as gc is disabled. | |
| end | |
| ) | |
| ) |