;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.

;; RUN: env BINARYEN_PRINT_FULL=1 wasm-opt %s --remove-unused-brs -S -o - | filecheck %s

(module
 ;; CHECK:      (func $test
 ;; CHECK-NEXT:  ;;@
 ;; CHECK-NEXT:  (loop $loop
 ;; CHECK-NEXT:   ;;@
 ;; CHECK-NEXT:   (if
 ;; CHECK-NEXT:    ;;@
 ;; CHECK-NEXT:    (i32.const 0) (; i32 ;)
 ;; CHECK-NEXT:    (then
 ;; CHECK-NEXT:     ;;@
 ;; CHECK-NEXT:     (block $block (; unreachable ;)
 ;; CHECK-NEXT:      ;;@
 ;; CHECK-NEXT:      (br_if $loop
 ;; CHECK-NEXT:       ;;@
 ;; CHECK-NEXT:       (block (result i32) (; i32 ;)
 ;; CHECK-NEXT:        ;;@
 ;; CHECK-NEXT:        (block (; none ;)
 ;; CHECK-NEXT:        ) ;; end block
 ;; CHECK-NEXT:        ;;@
 ;; CHECK-NEXT:        (i32.const 0) (; i32 ;)
 ;; CHECK-NEXT:       ) ;; end block (; i32 ;)
 ;; CHECK-NEXT:      ) (; none ;)
 ;; CHECK-NEXT:      ;;@
 ;; CHECK-NEXT:      (unreachable) (; unreachable ;)
 ;; CHECK-NEXT:     ) ;; end block block (; unreachable ;)
 ;; CHECK-NEXT:    )
 ;; CHECK-NEXT:    (else
 ;; CHECK-NEXT:     ;;@
 ;; CHECK-NEXT:     (unreachable) (; unreachable ;)
 ;; CHECK-NEXT:    )
 ;; CHECK-NEXT:   ) ;; end if (; unreachable ;)
 ;; CHECK-NEXT:  ) ;; end loop loop (; unreachable ;)
 ;; CHECK-NEXT: )
 (func $test
  (loop $loop
   (if
    (i32.const 0)
    (then
     (block $block
      (if
       (block (result i32)
        ;; This can be removed, after which $block has no breaks and it will
        ;; become unreachable, as verified by PRINT_FULL. (The rest of the test
        ;; around it is needed to avoid remove-unused-brs optimizing it all
        ;; away as trivial.)
        (br_if $block
         (i32.const 0)
        )
        (i32.const 0)
       )
       (then
        (br $loop)
       )
       (else
        (unreachable)
       )
      )
     )
    )
    (else
     (unreachable)
    )
   )
  )
 )
)
