; THis testcase caused an assertion failure because a PHI node did not have 
; entries for it's postdominator.  But I think this can only happen when the 
; PHI node is dead, so we just avoid patching up dead PHI nodes.

; RUN: opt < %s -passes=adce                    -S | FileCheck %s
; RUN: opt < %s -passes=adce -adce-remove-loops -S | FileCheck %s

target datalayout = "e-p:32:32"

define void @dead_test8() {
entry:
        br label %loopentry

loopentry:              ; preds = %endif, %entry
        %k.1 = phi i32 [ %k.0, %endif ], [ 0, %entry ]          ; <i32> [#uses=1]
        br i1 false, label %no_exit, label %return

no_exit:                ; preds = %loopentry
; CHECK: br label %then
        br i1 false, label %then, label %else

then:           ; preds = %no_exit
        br label %endif

else:           ; preds = %no_exit
        %dec = add i32 %k.1, -1         ; <i32> [#uses=1]
        br label %endif

endif:          ; preds = %else, %then
        %k.0 = phi i32 [ %dec, %else ], [ 0, %then ]            ; <i32> [#uses=1]
        store i32 2, i32* null
        br label %loopentry

return:         ; preds = %loopentry
        ret void
}

