; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
; RUN: opt -S -passes=loop-fusion < %s 2>&1 | FileCheck %s

; Tests when the second loop preheader has a phi coming from the first loop
; exit. If the phi is not used in the second loop, the loops can be fused and
; the phi is sunk to the fused loop exit. If the phi is used in the second loop,
; the loops cannot be fused.

define void @test1() {
; CHECK-LABEL: @test1(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br label [[VECTOR_PH:%.*]]
; CHECK:       vector.ph:
; CHECK-NEXT:    br label [[MIDDLE_BLOCK:%.*]]
; CHECK:       middle.block:
; CHECK-NEXT:    br i1 true, label [[FOR_END41:%.*]], label [[VECTOR_PH]]
; CHECK:       for.end41:
; CHECK-NEXT:    ret void
;
entry:
  br label %vector.ph

vector.ph:                                        ; preds = %middle.block, %entry
  br label %middle.block

middle.block:                                     ; preds = %vector.ph
  br i1 true, label %for.cond17.preheader, label %vector.ph

for.cond17.preheader:                             ; preds = %middle.block
  %.lcssa92 = phi i16 [ 1, %middle.block ]
  br label %vector.ph61

vector.ph61:                                      ; preds = %middle.block59, %for.cond17.preheader
  br i1 true, label %for.end41, label %vector.ph61

for.end41:                                        ; preds = %middle.block59
  ret void
}

define void @test2() {
; CHECK-LABEL: @test2(
; CHECK-NEXT:  entry:
; CHECK-NEXT:    br label [[VECTOR_PH:%.*]]
; CHECK:       vector.ph:
; CHECK-NEXT:    br label [[MIDDLE_BLOCK:%.*]]
; CHECK:       middle.block:
; CHECK-NEXT:    br i1 true, label [[FOR_COND17_PREHEADER:%.*]], label [[VECTOR_PH]]
; CHECK:       for.cond17.preheader:
; CHECK-NEXT:    [[DOTLCSSA92:%.*]] = phi i16 [ 1, [[MIDDLE_BLOCK]] ]
; CHECK-NEXT:    br label [[VECTOR_PH61:%.*]]
; CHECK:       vector.ph61:
; CHECK-NEXT:    call void @a(i16 [[DOTLCSSA92]])
; CHECK-NEXT:    br i1 true, label [[FOR_END41:%.*]], label [[VECTOR_PH61]]
; CHECK:       for.end41:
; CHECK-NEXT:    ret void
;
entry:
  br label %vector.ph

vector.ph:                                        ; preds = %middle.block, %entry
  br label %middle.block

middle.block:                                     ; preds = %vector.ph
  br i1 true, label %for.cond17.preheader, label %vector.ph

for.cond17.preheader:                             ; preds = %middle.block
  %.lcssa92 = phi i16 [ 1, %middle.block ]
  br label %vector.ph61

vector.ph61:                                      ; preds = %middle.block59, %for.cond17.preheader
  call void @a(i16 %.lcssa92)
  br i1 true, label %for.end41, label %vector.ph61

for.end41:                                        ; preds = %middle.block59
  ret void
}

declare void @a(i16);
