; RUN: opt < %s -loop-extract -disable-output
; This testcase is failing the loop extractor because not all exit blocks 
; are dominated by all of the live-outs.

define i32 @ab(i32 %alpha, i32 %beta) {
entry:
        br label %loopentry.1.preheader

loopentry.1.preheader:          ; preds = %entry
        br label %loopentry.1

loopentry.1:            ; preds = %no_exit.1, %loopentry.1.preheader
        br i1 false, label %no_exit.1, label %loopexit.0.loopexit1

no_exit.1:              ; preds = %loopentry.1
        %tmp.53 = load i32* null                ; <i32> [#uses=1]
        br i1 false, label %shortcirc_next.2, label %loopentry.1

shortcirc_next.2:               ; preds = %no_exit.1
        %tmp.563 = call i32 @wins( i32 0, i32 %tmp.53, i32 3 )          ; <i32> [#uses=0]
        ret i32 0

loopexit.0.loopexit1:           ; preds = %loopentry.1
        br label %loopexit.0

loopexit.0:             ; preds = %loopexit.0.loopexit1
        ret i32 0
}

declare i32 @wins(i32, i32, i32)

declare i16 @ab_code()

