@ 261106.8
current
;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.

;; RUN: wasm-opt %s -all -o %t.text.wast -g -S
;; RUN: wasm-as %s -all -g -o %t.wasm
;; RUN: wasm-dis %t.wasm -all -o %t.bin.wast
;; RUN: wasm-as %s -all -o %t.nodebug.wasm
;; RUN: wasm-dis %t.nodebug.wasm -all -o %t.bin.nodebug.wast
;; RUN: cat %t.text.wast | filecheck %s --check-prefix=CHECK-TEXT
;; RUN: cat %t.bin.wast | filecheck %s --check-prefix=CHECK-BIN
;; RUN: cat %t.bin.nodebug.wast | filecheck %s --check-prefix=CHECK-BIN-NODEBUG

(module
 ;; CHECK-TEXT:      (type $f1 (func))

 ;; CHECK-TEXT:      (type $k1 (cont $f1))

 ;; CHECK-TEXT:      (type $2 (func (param (ref $k1))))

 ;; CHECK-TEXT:      (type $ft1 (func (param i32)))

 ;; CHECK-TEXT:      (type $ct1 (sub (cont $ft1)))

 ;; CHECK-TEXT:      (type $ft (func (param i32) (result i32)))
 ;; CHECK-BIN:      (type $f1 (func))

 ;; CHECK-BIN:      (type $k1 (cont $f1))

 ;; CHECK-BIN:      (type $2 (func (param (ref $k1))))

 ;; CHECK-BIN:      (type $ft1 (func (param i32)))

 ;; CHECK-BIN:      (type $ct1 (sub (cont $ft1)))

 ;; CHECK-BIN:      (type $ft (func (param i32) (result i32)))
 (type $ft (func (param i32) (result i32)))
 ;; CHECK-TEXT:      (type $ct (cont $ft))
 ;; CHECK-BIN:      (type $ct (cont $ft))
 (type $ct (cont $ft))

 ;; CHECK-TEXT:      (type $7 (func (param (ref $ct)) (result (ref $ct))))

 ;; CHECK-TEXT:      (type $8 (func (param contref nullcontref (ref cont) (ref nocont)) (result contref)))

 ;; CHECK-TEXT:      (type $9 (func (param (ref $ct1))))

 ;; CHECK-TEXT:      (type $ct0 (sub (cont $f1)))

 ;; CHECK-TEXT:      (global $kglo (mut (ref null $k1)) (ref.null nocont))

 ;; CHECK-TEXT:      (global $gglo (ref null $k1) (ref.null nocont))

 ;; CHECK-TEXT:      (elem declare func $f1 $f2 $f3 $fglo $r0 $r1)

 ;; CHECK-TEXT:      (tag $exn (type $f1))

 ;; CHECK-TEXT:      (tag $e1 (type $f1))

 ;; CHECK-TEXT:      (tag $e2 (type $f1))

 ;; CHECK-TEXT:      (export "unhandled-1" (func $f1))

 ;; CHECK-TEXT:      (export "unhandled-2" (func $unhandled-2))

 ;; CHECK-TEXT:      (export "unhandled-3" (func $unhandled-3))

 ;; CHECK-TEXT:      (export "handled" (func $handled))

 ;; CHECK-TEXT:      (export "uncaught-1" (func $uncaught-1))

 ;; CHECK-TEXT:      (export "uncaught-2" (func $uncaught-2))

 ;; CHECK-TEXT:      (export "uncaught-3" (func $uncaught-3))

 ;; CHECK-TEXT:      (export "non-linear-1" (func $non-linear-1))

 ;; CHECK-TEXT:      (export "non-linear-2" (func $non-linear-2))

 ;; CHECK-TEXT:      (export "non-linear-3" (func $non-linear-3))

 ;; CHECK-TEXT:      (export "non-linear-4" (func $non-linear-4))

 ;; CHECK-TEXT:      (func $id (type $7) (param $x (ref $ct)) (result (ref $ct))
 ;; CHECK-TEXT-NEXT:  (local.get $x)
 ;; CHECK-TEXT-NEXT: )
 ;; CHECK-BIN:      (type $7 (func (param (ref $ct)) (result (ref $ct))))

 ;; CHECK-BIN:      (type $8 (func (param contref nullcontref (ref cont) (ref nocont)) (result contref)))

 ;; CHECK-BIN:      (type $9 (func (param (ref $ct1))))

 ;; CHECK-BIN:      (type $ct0 (sub (cont $f1)))

 ;; CHECK-BIN:      (global $kglo (mut (ref null $k1)) (ref.null nocont))

 ;; CHECK-BIN:      (global $gglo (ref null $k1) (ref.null nocont))

 ;; CHECK-BIN:      (elem declare func $f1 $f2 $f3 $fglo $r0 $r1)

 ;; CHECK-BIN:      (tag $exn (type $f1))

 ;; CHECK-BIN:      (tag $e1 (type $f1))

 ;; CHECK-BIN:      (tag $e2 (type $f1))

 ;; CHECK-BIN:      (export "unhandled-1" (func $f1))

 ;; CHECK-BIN:      (export "unhandled-2" (func $unhandled-2))

 ;; CHECK-BIN:      (export "unhandled-3" (func $unhandled-3))

 ;; CHECK-BIN:      (export "handled" (func $handled))

 ;; CHECK-BIN:      (export "uncaught-1" (func $uncaught-1))

 ;; CHECK-BIN:      (export "uncaught-2" (func $uncaught-2))

 ;; CHECK-BIN:      (export "uncaught-3" (func $uncaught-3))

 ;; CHECK-BIN:      (export "non-linear-1" (func $non-linear-1))

 ;; CHECK-BIN:      (export "non-linear-2" (func $non-linear-2))

 ;; CHECK-BIN:      (export "non-linear-3" (func $non-linear-3))

 ;; CHECK-BIN:      (export "non-linear-4" (func $non-linear-4))

 ;; CHECK-BIN:      (func $id (type $7) (param $x (ref $ct)) (result (ref $ct))
 ;; CHECK-BIN-NEXT:  (local.get $x)
 ;; CHECK-BIN-NEXT: )
 (func $id (param $x (ref $ct)) (result (ref $ct))
  (local.get $x)
 )

  ;; CHECK-TEXT:      (func $id2 (type $8) (param $w contref) (param $x nullcontref) (param $y (ref cont)) (param $z (ref nocont)) (result contref)
  ;; CHECK-TEXT-NEXT:  (local.get $z)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $id2 (type $8) (param $w contref) (param $x nullcontref) (param $y (ref cont)) (param $z (ref nocont)) (result contref)
  ;; CHECK-BIN-NEXT:  (local.get $z)
  ;; CHECK-BIN-NEXT: )
  (func $id2
       (param $w contref)
       (param $x nullcontref)
       (param $y (ref cont))
       (param $z (ref nocont))
       (result contref)
  (local.get $z)
 )

  (tag $exn)
  (tag $e1)
  (tag $e2)

  (type $f1 (func))
  (type $k1 (cont $f1))

  (rec
    (type $f2 (func (param (ref $f3))))
    (type $f3 (func (param (ref $f2))))
  )
  (type $k2 (cont $f2))
  (type $k3 (cont $f3))

  (type $ft1 (func (param i32)))
  (type $ct1 (sub (cont $ft1)))

  (type $ft0 (func))
  (type $ct0 (sub (cont $ft0)))

  (type $f4 (sub (func (result anyref))))
  (type $f5 (sub $f4 (func (result eqref))))
  (type $c4 (sub (cont $f4)))
  (type $c5 (sub $c4 (cont $f5)))

  (type $ft2 (func))
  (type $ct2 (cont $ft2))

  (global $kglo (mut (ref null $ct2)) (ref.null $ct2))
  (global $gglo (ref null $ct2) (ref.null $ct2))

  ;; CHECK-TEXT:      (func $fglo (type $f1)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $fglo (type $f1)
  ;; CHECK-BIN-NEXT: )
  (func $fglo)
  ;; CHECK-BIN-NODEBUG:      (type $0 (func))

  ;; CHECK-BIN-NODEBUG:      (type $1 (cont $0))

  ;; CHECK-BIN-NODEBUG:      (type $2 (func (param (ref $1))))

  ;; CHECK-BIN-NODEBUG:      (type $3 (func (param i32)))

  ;; CHECK-BIN-NODEBUG:      (type $4 (sub (cont $3)))

  ;; CHECK-BIN-NODEBUG:      (type $5 (func (param i32) (result i32)))

  ;; CHECK-BIN-NODEBUG:      (type $6 (cont $5))

  ;; CHECK-BIN-NODEBUG:      (type $7 (func (param (ref $6)) (result (ref $6))))

  ;; CHECK-BIN-NODEBUG:      (type $8 (func (param contref nullcontref (ref cont) (ref nocont)) (result contref)))

  ;; CHECK-BIN-NODEBUG:      (type $9 (func (param (ref $4))))

  ;; CHECK-BIN-NODEBUG:      (type $10 (sub (cont $0)))

  ;; CHECK-BIN-NODEBUG:      (global $global$0 (mut (ref null $1)) (ref.null nocont))

  ;; CHECK-BIN-NODEBUG:      (global $global$1 (ref null $1) (ref.null nocont))

  ;; CHECK-BIN-NODEBUG:      (elem declare func $12 $15 $16 $2 $5 $9)
  (elem declare func $fglo)

  (func
    (global.set $kglo (cont.new $ct2 (ref.func $fglo))))

  (func (param $x (ref $ct1))
    (i32.const 123)
    (local.get $x)
    (cont.bind $ct1 $ct0)
    (drop)
  )

  ;; CHECK-TEXT:      (func $0 (type $f1)
  ;; CHECK-TEXT-NEXT:  (global.set $kglo
  ;; CHECK-TEXT-NEXT:   (cont.new $k1
  ;; CHECK-TEXT-NEXT:    (ref.func $fglo)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )

  ;; CHECK-TEXT:      (func $1 (type $9) (param $x (ref $ct1))
  ;; CHECK-TEXT-NEXT:  (drop
  ;; CHECK-TEXT-NEXT:   (cont.bind $ct1 $ct0
  ;; CHECK-TEXT-NEXT:    (i32.const 123)
  ;; CHECK-TEXT-NEXT:    (local.get $x)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )

  ;; CHECK-TEXT:      (func $f1 (type $f1)
  ;; CHECK-TEXT-NEXT:  (suspend $e1)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $3 (type $f1)
  ;; CHECK-BIN-NEXT:  (global.set $kglo
  ;; CHECK-BIN-NEXT:   (cont.new $k1
  ;; CHECK-BIN-NEXT:    (ref.func $fglo)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )

  ;; CHECK-BIN:      (func $4 (type $9) (param $x (ref $ct1))
  ;; CHECK-BIN-NEXT:  (drop
  ;; CHECK-BIN-NEXT:   (cont.bind $ct1 $ct0
  ;; CHECK-BIN-NEXT:    (i32.const 123)
  ;; CHECK-BIN-NEXT:    (local.get $x)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )

  ;; CHECK-BIN:      (func $f1 (type $f1)
  ;; CHECK-BIN-NEXT:  (suspend $e1)
  ;; CHECK-BIN-NEXT: )
  (func $f1 (export "unhandled-1")
    (suspend $e1)
  )

  ;; CHECK-TEXT:      (func $unhandled-2 (type $f1)
  ;; CHECK-TEXT-NEXT:  (resume $k1
  ;; CHECK-TEXT-NEXT:   (cont.new $k1
  ;; CHECK-TEXT-NEXT:    (ref.func $f1)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $unhandled-2 (type $f1)
  ;; CHECK-BIN-NEXT:  (resume $k1
  ;; CHECK-BIN-NEXT:   (cont.new $k1
  ;; CHECK-BIN-NEXT:    (ref.func $f1)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $unhandled-2 (export "unhandled-2")
    (resume $k1 (cont.new $k1 (ref.func $f1)))
  )

  ;; CHECK-TEXT:      (func $unhandled-3 (type $f1)
  ;; CHECK-TEXT-NEXT:  (drop
  ;; CHECK-TEXT-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-TEXT-NEXT:    (resume $k1 (on $e2 $h)
  ;; CHECK-TEXT-NEXT:     (cont.new $k1
  ;; CHECK-TEXT-NEXT:      (ref.func $f1)
  ;; CHECK-TEXT-NEXT:     )
  ;; CHECK-TEXT-NEXT:    )
  ;; CHECK-TEXT-NEXT:    (unreachable)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $unhandled-3 (type $f1)
  ;; CHECK-BIN-NEXT:  (drop
  ;; CHECK-BIN-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-BIN-NEXT:    (resume $k1 (on $e2 $h)
  ;; CHECK-BIN-NEXT:     (cont.new $k1
  ;; CHECK-BIN-NEXT:      (ref.func $f1)
  ;; CHECK-BIN-NEXT:     )
  ;; CHECK-BIN-NEXT:    )
  ;; CHECK-BIN-NEXT:    (unreachable)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $unhandled-3 (export "unhandled-3")
    (block $h (result (ref $k1))
      (resume $k1 (on $e2 $h) (cont.new $k1 (ref.func $f1)))
      (unreachable)
    )
    (drop)
  )

  ;; CHECK-TEXT:      (func $handled (type $f1)
  ;; CHECK-TEXT-NEXT:  (drop
  ;; CHECK-TEXT-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-TEXT-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-TEXT-NEXT:     (cont.new $k1
  ;; CHECK-TEXT-NEXT:      (ref.func $f1)
  ;; CHECK-TEXT-NEXT:     )
  ;; CHECK-TEXT-NEXT:    )
  ;; CHECK-TEXT-NEXT:    (unreachable)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $handled (type $f1)
  ;; CHECK-BIN-NEXT:  (drop
  ;; CHECK-BIN-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-BIN-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-BIN-NEXT:     (cont.new $k1
  ;; CHECK-BIN-NEXT:      (ref.func $f1)
  ;; CHECK-BIN-NEXT:     )
  ;; CHECK-BIN-NEXT:    )
  ;; CHECK-BIN-NEXT:    (unreachable)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $handled (export "handled")
    (block $h (result (ref $k1))
      (resume $k1 (on $e1 $h) (cont.new $k1 (ref.func $f1)))
      (unreachable)
    )
    (drop)
  )

  (elem declare func $f2)
  ;; CHECK-TEXT:      (func $f2 (type $f1)
  ;; CHECK-TEXT-NEXT:  (throw $exn)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $f2 (type $f1)
  ;; CHECK-BIN-NEXT:  (throw $exn)
  ;; CHECK-BIN-NEXT: )
  (func $f2
    (throw $exn)
  )

  ;; CHECK-TEXT:      (func $uncaught-1 (type $f1)
  ;; CHECK-TEXT-NEXT:  (drop
  ;; CHECK-TEXT-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-TEXT-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-TEXT-NEXT:     (cont.new $k1
  ;; CHECK-TEXT-NEXT:      (ref.func $f2)
  ;; CHECK-TEXT-NEXT:     )
  ;; CHECK-TEXT-NEXT:    )
  ;; CHECK-TEXT-NEXT:    (unreachable)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $uncaught-1 (type $f1)
  ;; CHECK-BIN-NEXT:  (drop
  ;; CHECK-BIN-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-BIN-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-BIN-NEXT:     (cont.new $k1
  ;; CHECK-BIN-NEXT:      (ref.func $f2)
  ;; CHECK-BIN-NEXT:     )
  ;; CHECK-BIN-NEXT:    )
  ;; CHECK-BIN-NEXT:    (unreachable)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $uncaught-1 (export "uncaught-1")
    (block $h (result (ref $k1))
      (resume $k1 (on $e1 $h) (cont.new $k1 (ref.func $f2)))
      (unreachable)
    )
    (drop)
  )

  ;; CHECK-TEXT:      (func $uncaught-2 (type $f1)
  ;; CHECK-TEXT-NEXT:  (resume_throw $k1 $exn
  ;; CHECK-TEXT-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-TEXT-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-TEXT-NEXT:     (cont.new $k1
  ;; CHECK-TEXT-NEXT:      (ref.func $f1)
  ;; CHECK-TEXT-NEXT:     )
  ;; CHECK-TEXT-NEXT:    )
  ;; CHECK-TEXT-NEXT:    (unreachable)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $uncaught-2 (type $f1)
  ;; CHECK-BIN-NEXT:  (resume_throw $k1 $exn
  ;; CHECK-BIN-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-BIN-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-BIN-NEXT:     (cont.new $k1
  ;; CHECK-BIN-NEXT:      (ref.func $f1)
  ;; CHECK-BIN-NEXT:     )
  ;; CHECK-BIN-NEXT:    )
  ;; CHECK-BIN-NEXT:    (unreachable)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $uncaught-2 (export "uncaught-2")
    (block $h (result (ref $k1))
      (resume $k1 (on $e1 $h) (cont.new $k1 (ref.func $f1)))
      (unreachable)
    )
    (resume_throw $k1 $exn)
  )

  (elem declare func $f3)
  ;; CHECK-TEXT:      (func $f3 (type $f1)
  ;; CHECK-TEXT-NEXT:  (call $f4)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $f3 (type $f1)
  ;; CHECK-BIN-NEXT:  (call $f4)
  ;; CHECK-BIN-NEXT: )
  (func $f3
    (call $f4)
  )
  ;; CHECK-TEXT:      (func $f4 (type $f1)
  ;; CHECK-TEXT-NEXT:  (suspend $e1)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $f4 (type $f1)
  ;; CHECK-BIN-NEXT:  (suspend $e1)
  ;; CHECK-BIN-NEXT: )
  (func $f4
    (suspend $e1)
  )

  ;; CHECK-TEXT:      (func $uncaught-3 (type $f1)
  ;; CHECK-TEXT-NEXT:  (resume_throw $k1 $exn
  ;; CHECK-TEXT-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-TEXT-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-TEXT-NEXT:     (cont.new $k1
  ;; CHECK-TEXT-NEXT:      (ref.func $f3)
  ;; CHECK-TEXT-NEXT:     )
  ;; CHECK-TEXT-NEXT:    )
  ;; CHECK-TEXT-NEXT:    (unreachable)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $uncaught-3 (type $f1)
  ;; CHECK-BIN-NEXT:  (resume_throw $k1 $exn
  ;; CHECK-BIN-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-BIN-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-BIN-NEXT:     (cont.new $k1
  ;; CHECK-BIN-NEXT:      (ref.func $f3)
  ;; CHECK-BIN-NEXT:     )
  ;; CHECK-BIN-NEXT:    )
  ;; CHECK-BIN-NEXT:    (unreachable)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $uncaught-3 (export "uncaught-3")
    (block $h (result (ref $k1))
      (resume $k1 (on $e1 $h) (cont.new $k1 (ref.func $f3)))
      (unreachable)
    )
    (resume_throw $k1 $exn)
  )

  (elem declare func $r0 $r1)
  ;; CHECK-TEXT:      (func $r0 (type $f1)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $r0 (type $f1)
  ;; CHECK-BIN-NEXT: )
  (func $r0)

  ;; CHECK-TEXT:      (func $r1 (type $f1)
  ;; CHECK-TEXT-NEXT:  (suspend $e1)
  ;; CHECK-TEXT-NEXT:  (suspend $e1)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $r1 (type $f1)
  ;; CHECK-BIN-NEXT:  (suspend $e1)
  ;; CHECK-BIN-NEXT:  (suspend $e1)
  ;; CHECK-BIN-NEXT: )
  (func $r1 (suspend $e1) (suspend $e1))

  ;; CHECK-TEXT:      (func $nl1 (type $2) (param $k (ref $k1))
  ;; CHECK-TEXT-NEXT:  (resume $k1
  ;; CHECK-TEXT-NEXT:   (local.get $k)
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT:  (resume $k1
  ;; CHECK-TEXT-NEXT:   (local.get $k)
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $nl1 (type $2) (param $k (ref $k1))
  ;; CHECK-BIN-NEXT:  (resume $k1
  ;; CHECK-BIN-NEXT:   (local.get $k)
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT:  (resume $k1
  ;; CHECK-BIN-NEXT:   (local.get $k)
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $nl1 (param $k (ref $k1))
    (resume $k1 (local.get $k))
    (resume $k1 (local.get $k))
  )
  ;; CHECK-TEXT:      (func $nl2 (type $2) (param $k (ref $k1))
  ;; CHECK-TEXT-NEXT:  (drop
  ;; CHECK-TEXT-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-TEXT-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-TEXT-NEXT:     (local.get $k)
  ;; CHECK-TEXT-NEXT:    )
  ;; CHECK-TEXT-NEXT:    (unreachable)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT:  (resume $k1
  ;; CHECK-TEXT-NEXT:   (local.get $k)
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT:  (unreachable)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $nl2 (type $2) (param $k (ref $k1))
  ;; CHECK-BIN-NEXT:  (drop
  ;; CHECK-BIN-NEXT:   (block $h (result (ref $k1))
  ;; CHECK-BIN-NEXT:    (resume $k1 (on $e1 $h)
  ;; CHECK-BIN-NEXT:     (local.get $k)
  ;; CHECK-BIN-NEXT:    )
  ;; CHECK-BIN-NEXT:    (unreachable)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT:  (resume $k1
  ;; CHECK-BIN-NEXT:   (local.get $k)
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT:  (unreachable)
  ;; CHECK-BIN-NEXT: )
  (func $nl2 (param $k (ref $k1))
    (block $h (result (ref $k1))
      (resume $k1 (on $e1 $h) (local.get $k))
      (unreachable)
    )
    (resume $k1 (local.get $k))
    (unreachable)
  )
  ;; CHECK-TEXT:      (func $nl3 (type $2) (param $k (ref $k1))
  ;; CHECK-TEXT-NEXT:  (local $k' (ref null $k1))
  ;; CHECK-TEXT-NEXT:  (local.set $k'
  ;; CHECK-TEXT-NEXT:   (block $h1 (result (ref $k1))
  ;; CHECK-TEXT-NEXT:    (resume $k1 (on $e1 $h1)
  ;; CHECK-TEXT-NEXT:     (local.get $k)
  ;; CHECK-TEXT-NEXT:    )
  ;; CHECK-TEXT-NEXT:    (unreachable)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT:  (drop
  ;; CHECK-TEXT-NEXT:   (block $h2 (result (ref $k1))
  ;; CHECK-TEXT-NEXT:    (resume $k1 (on $e1 $h2)
  ;; CHECK-TEXT-NEXT:     (local.get $k')
  ;; CHECK-TEXT-NEXT:    )
  ;; CHECK-TEXT-NEXT:    (unreachable)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT:  (resume $k1
  ;; CHECK-TEXT-NEXT:   (local.get $k')
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT:  (unreachable)
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $nl3 (type $2) (param $k (ref $k1))
  ;; CHECK-BIN-NEXT:  (local $k' (ref null $k1))
  ;; CHECK-BIN-NEXT:  (local.set $k'
  ;; CHECK-BIN-NEXT:   (block $h1 (result (ref $k1))
  ;; CHECK-BIN-NEXT:    (resume $k1 (on $e1 $h1)
  ;; CHECK-BIN-NEXT:     (local.get $k)
  ;; CHECK-BIN-NEXT:    )
  ;; CHECK-BIN-NEXT:    (unreachable)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT:  (drop
  ;; CHECK-BIN-NEXT:   (block $h2 (result (ref $k1))
  ;; CHECK-BIN-NEXT:    (resume $k1 (on $e1 $h2)
  ;; CHECK-BIN-NEXT:     (local.get $k')
  ;; CHECK-BIN-NEXT:    )
  ;; CHECK-BIN-NEXT:    (unreachable)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT:  (resume $k1
  ;; CHECK-BIN-NEXT:   (local.get $k')
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT:  (unreachable)
  ;; CHECK-BIN-NEXT: )
  (func $nl3 (param $k (ref $k1))
    (local $k' (ref null $k1))
    (block $h1 (result (ref $k1))
      (resume $k1 (on $e1 $h1) (local.get $k))
      (unreachable)
    )
    (local.set $k')
    (block $h2 (result (ref $k1))
      (resume $k1 (on $e1 $h2) (local.get $k'))
      (unreachable)
    )
    (resume $k1 (local.get $k'))
    (unreachable)
  )
  ;; CHECK-TEXT:      (func $nl4 (type $2) (param $k (ref $k1))
  ;; CHECK-TEXT-NEXT:  (drop
  ;; CHECK-TEXT-NEXT:   (cont.bind $k1 $k1
  ;; CHECK-TEXT-NEXT:    (local.get $k)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT:  (resume $k1
  ;; CHECK-TEXT-NEXT:   (local.get $k)
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $nl4 (type $2) (param $k (ref $k1))
  ;; CHECK-BIN-NEXT:  (drop
  ;; CHECK-BIN-NEXT:   (cont.bind $k1 $k1
  ;; CHECK-BIN-NEXT:    (local.get $k)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT:  (resume $k1
  ;; CHECK-BIN-NEXT:   (local.get $k)
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $nl4 (param $k (ref $k1))
    (drop (cont.bind $k1 $k1 (local.get $k)))
    (resume $k1 (local.get $k))
  )

  ;; CHECK-TEXT:      (func $non-linear-1 (type $f1)
  ;; CHECK-TEXT-NEXT:  (call $nl1
  ;; CHECK-TEXT-NEXT:   (cont.new $k1
  ;; CHECK-TEXT-NEXT:    (ref.func $r0)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $non-linear-1 (type $f1)
  ;; CHECK-BIN-NEXT:  (call $nl1
  ;; CHECK-BIN-NEXT:   (cont.new $k1
  ;; CHECK-BIN-NEXT:    (ref.func $r0)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $non-linear-1 (export "non-linear-1")
    (call $nl1 (cont.new $k1 (ref.func $r0)))
  )
  ;; CHECK-TEXT:      (func $non-linear-2 (type $f1)
  ;; CHECK-TEXT-NEXT:  (call $nl2
  ;; CHECK-TEXT-NEXT:   (cont.new $k1
  ;; CHECK-TEXT-NEXT:    (ref.func $r1)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $non-linear-2 (type $f1)
  ;; CHECK-BIN-NEXT:  (call $nl2
  ;; CHECK-BIN-NEXT:   (cont.new $k1
  ;; CHECK-BIN-NEXT:    (ref.func $r1)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $non-linear-2 (export "non-linear-2")
    (call $nl2 (cont.new $k1 (ref.func $r1)))
  )
  ;; CHECK-TEXT:      (func $non-linear-3 (type $f1)
  ;; CHECK-TEXT-NEXT:  (call $nl3
  ;; CHECK-TEXT-NEXT:   (cont.new $k1
  ;; CHECK-TEXT-NEXT:    (ref.func $r1)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $non-linear-3 (type $f1)
  ;; CHECK-BIN-NEXT:  (call $nl3
  ;; CHECK-BIN-NEXT:   (cont.new $k1
  ;; CHECK-BIN-NEXT:    (ref.func $r1)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $non-linear-3 (export "non-linear-3")
    (call $nl3 (cont.new $k1 (ref.func $r1)))
  )
  ;; CHECK-TEXT:      (func $non-linear-4 (type $f1)
  ;; CHECK-TEXT-NEXT:  (call $nl4
  ;; CHECK-TEXT-NEXT:   (cont.new $k1
  ;; CHECK-TEXT-NEXT:    (ref.func $r1)
  ;; CHECK-TEXT-NEXT:   )
  ;; CHECK-TEXT-NEXT:  )
  ;; CHECK-TEXT-NEXT: )
  ;; CHECK-BIN:      (func $non-linear-4 (type $f1)
  ;; CHECK-BIN-NEXT:  (call $nl4
  ;; CHECK-BIN-NEXT:   (cont.new $k1
  ;; CHECK-BIN-NEXT:    (ref.func $r1)
  ;; CHECK-BIN-NEXT:   )
  ;; CHECK-BIN-NEXT:  )
  ;; CHECK-BIN-NEXT: )
  (func $non-linear-4 (export "non-linear-4")
    (call $nl4 (cont.new $k1 (ref.func $r1)))
  )

)
;; CHECK-BIN-NODEBUG:      (tag $tag$0 (type $0))

;; CHECK-BIN-NODEBUG:      (tag $tag$1 (type $0))

;; CHECK-BIN-NODEBUG:      (tag $tag$2 (type $0))

;; CHECK-BIN-NODEBUG:      (export "unhandled-1" (func $5))

;; CHECK-BIN-NODEBUG:      (export "unhandled-2" (func $6))

;; CHECK-BIN-NODEBUG:      (export "unhandled-3" (func $7))

;; CHECK-BIN-NODEBUG:      (export "handled" (func $8))

;; CHECK-BIN-NODEBUG:      (export "uncaught-1" (func $10))

;; CHECK-BIN-NODEBUG:      (export "uncaught-2" (func $11))

;; CHECK-BIN-NODEBUG:      (export "uncaught-3" (func $14))

;; CHECK-BIN-NODEBUG:      (export "non-linear-1" (func $21))

;; CHECK-BIN-NODEBUG:      (export "non-linear-2" (func $22))

;; CHECK-BIN-NODEBUG:      (export "non-linear-3" (func $23))

;; CHECK-BIN-NODEBUG:      (export "non-linear-4" (func $24))

;; CHECK-BIN-NODEBUG:      (func $0 (type $7) (param $0 (ref $6)) (result (ref $6))
;; CHECK-BIN-NODEBUG-NEXT:  (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $1 (type $8) (param $0 contref) (param $1 nullcontref) (param $2 (ref cont)) (param $3 (ref nocont)) (result contref)
;; CHECK-BIN-NODEBUG-NEXT:  (local.get $3)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $2 (type $0)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $3 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (global.set $global$0
;; CHECK-BIN-NODEBUG-NEXT:   (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:    (ref.func $2)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $4 (type $9) (param $0 (ref $4))
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (cont.bind $4 $10
;; CHECK-BIN-NODEBUG-NEXT:    (i32.const 123)
;; CHECK-BIN-NODEBUG-NEXT:    (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $5 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (suspend $tag$1)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $6 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (resume $1
;; CHECK-BIN-NODEBUG-NEXT:   (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:    (ref.func $5)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $7 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (block $block (result (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:    (resume $1 (on $tag$2 $block)
;; CHECK-BIN-NODEBUG-NEXT:     (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:      (ref.func $5)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (unreachable)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $8 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (block $block (result (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:    (resume $1 (on $tag$1 $block)
;; CHECK-BIN-NODEBUG-NEXT:     (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:      (ref.func $5)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (unreachable)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $9 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (throw $tag$0)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $10 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (block $block (result (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:    (resume $1 (on $tag$1 $block)
;; CHECK-BIN-NODEBUG-NEXT:     (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:      (ref.func $9)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (unreachable)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $11 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (resume_throw $1 $tag$0
;; CHECK-BIN-NODEBUG-NEXT:   (block $block (result (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:    (resume $1 (on $tag$1 $block)
;; CHECK-BIN-NODEBUG-NEXT:     (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:      (ref.func $5)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (unreachable)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $12 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (call $13)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $13 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (suspend $tag$1)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $14 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (resume_throw $1 $tag$0
;; CHECK-BIN-NODEBUG-NEXT:   (block $block (result (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:    (resume $1 (on $tag$1 $block)
;; CHECK-BIN-NODEBUG-NEXT:     (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:      (ref.func $12)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (unreachable)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $15 (type $0)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $16 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (suspend $tag$1)
;; CHECK-BIN-NODEBUG-NEXT:  (suspend $tag$1)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $17 (type $2) (param $0 (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:  (resume $1
;; CHECK-BIN-NODEBUG-NEXT:   (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (resume $1
;; CHECK-BIN-NODEBUG-NEXT:   (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $18 (type $2) (param $0 (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (block $block (result (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:    (resume $1 (on $tag$1 $block)
;; CHECK-BIN-NODEBUG-NEXT:     (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (unreachable)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (resume $1
;; CHECK-BIN-NODEBUG-NEXT:   (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (unreachable)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $19 (type $2) (param $0 (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:  (local $1 (ref null $1))
;; CHECK-BIN-NODEBUG-NEXT:  (local.set $1
;; CHECK-BIN-NODEBUG-NEXT:   (block $block (result (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:    (resume $1 (on $tag$1 $block)
;; CHECK-BIN-NODEBUG-NEXT:     (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (unreachable)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (block $block1 (result (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:    (resume $1 (on $tag$1 $block1)
;; CHECK-BIN-NODEBUG-NEXT:     (local.get $1)
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (unreachable)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (resume $1
;; CHECK-BIN-NODEBUG-NEXT:   (local.get $1)
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (unreachable)
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $20 (type $2) (param $0 (ref $1))
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (cont.bind $1 $1
;; CHECK-BIN-NODEBUG-NEXT:    (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (resume $1
;; CHECK-BIN-NODEBUG-NEXT:   (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $21 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (call $17
;; CHECK-BIN-NODEBUG-NEXT:   (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:    (ref.func $15)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $22 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (call $18
;; CHECK-BIN-NODEBUG-NEXT:   (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:    (ref.func $16)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $23 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (call $19
;; CHECK-BIN-NODEBUG-NEXT:   (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:    (ref.func $16)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $24 (type $0)
;; CHECK-BIN-NODEBUG-NEXT:  (call $20
;; CHECK-BIN-NODEBUG-NEXT:   (cont.new $1
;; CHECK-BIN-NODEBUG-NEXT:    (ref.func $16)
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )