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

;; RUN: foreach %s %t wasm-opt --inlining --optimize-level=3 --partial-inlining-ifs=1 --all-features -S -o - | filecheck %s

;; The function we partially inline here has an if, which we emit as flipped
;; afterwards. The new ifs should have flipped hints.

(module
 (func $func (param $0 i32)
  (@metadata.code.branch_hint "\01")
  (if
   (local.get $0)
   (then
    (return)
   )
  )
  ;; More code, so this is not trivial.
  (loop $l
   (nop)
  )
 )
 ;; CHECK:      (type $0 (func))

 ;; CHECK:      (type $1 (func (param i32)))

 ;; CHECK:      (func $caller (type $0)
 ;; CHECK-NEXT:  (local $0 i32)
 ;; CHECK-NEXT:  (local $1 i32)
 ;; CHECK-NEXT:  (block $__inlined_func$byn-split-inlineable-A$func
 ;; CHECK-NEXT:   (local.set $0
 ;; CHECK-NEXT:    (i32.const 0)
 ;; CHECK-NEXT:   )
 ;; CHECK-NEXT:   (@metadata.code.branch_hint "\00")
 ;; CHECK-NEXT:   (if
 ;; CHECK-NEXT:    (i32.eqz
 ;; CHECK-NEXT:     (local.get $0)
 ;; CHECK-NEXT:    )
 ;; CHECK-NEXT:    (then
 ;; CHECK-NEXT:     (call $byn-split-outlined-A$func
 ;; CHECK-NEXT:      (local.get $0)
 ;; CHECK-NEXT:     )
 ;; CHECK-NEXT:    )
 ;; CHECK-NEXT:   )
 ;; CHECK-NEXT:  )
 ;; CHECK-NEXT:  (block $__inlined_func$byn-split-inlineable-A$func$1
 ;; CHECK-NEXT:   (local.set $1
 ;; CHECK-NEXT:    (i32.const 0)
 ;; CHECK-NEXT:   )
 ;; CHECK-NEXT:   (@metadata.code.branch_hint "\00")
 ;; CHECK-NEXT:   (if
 ;; CHECK-NEXT:    (i32.eqz
 ;; CHECK-NEXT:     (local.get $1)
 ;; CHECK-NEXT:    )
 ;; CHECK-NEXT:    (then
 ;; CHECK-NEXT:     (call $byn-split-outlined-A$func
 ;; CHECK-NEXT:      (local.get $1)
 ;; CHECK-NEXT:     )
 ;; CHECK-NEXT:    )
 ;; CHECK-NEXT:   )
 ;; CHECK-NEXT:  )
 ;; CHECK-NEXT: )
 (func $caller
  (call $func
   (i32.const 0)
  )
  (call $func
   (i32.const 0)
  )
 )
)
;; CHECK:      (func $byn-split-outlined-A$func (type $1) (param $0 i32)
;; CHECK-NEXT:  (loop $l
;; CHECK-NEXT:   (nop)
;; CHECK-NEXT:  )
;; CHECK-NEXT: )
