; RUN: opt < %s -simplifycfg -simplifycfg-require-and-preserve-domtree=1 -S | not grep bb17
; PR1786

define i32 @main() {
entry:
	%retval = alloca i32, align 4		; <i32*> [#uses=1]
	%i = alloca i32, align 4		; <i32*> [#uses=7]
	%z = alloca i32, align 4		; <i32*> [#uses=4]
	%z16 = alloca i32, align 4		; <i32*> [#uses=4]
	%"alloca point" = bitcast i32 0 to i32		; <i32> [#uses=0]
	store i32 0, i32* %i
	%toBool = icmp ne i8 1, 0		; <i1> [#uses=1]
	br i1 %toBool, label %cond_true, label %cond_false

cond_true:		; preds = %entry
	store i32 0, i32* %z
	br label %bb

bb:		; preds = %cond_next, %cond_true
	%tmp = load i32, i32* %z		; <i32> [#uses=1]
	%tmp1 = sub i32 %tmp, 16384		; <i32> [#uses=1]
	store i32 %tmp1, i32* %z
	%tmp2 = load i32, i32* %i		; <i32> [#uses=1]
	%tmp3 = add i32 %tmp2, 1		; <i32> [#uses=1]
	store i32 %tmp3, i32* %i
	%tmp4 = load i32, i32* %i		; <i32> [#uses=1]
	%tmp5 = icmp sgt i32 %tmp4, 262144		; <i1> [#uses=1]
	%tmp56 = zext i1 %tmp5 to i8		; <i8> [#uses=1]
	%toBool7 = icmp ne i8 %tmp56, 0		; <i1> [#uses=1]
	br i1 %toBool7, label %cond_true8, label %cond_next

cond_true8:		; preds = %bb
	call void @abort( )
	unreachable

cond_next:		; preds = %bb
	%tmp9 = load i32, i32* %z		; <i32> [#uses=1]
	%tmp10 = icmp ne i32 %tmp9, 0		; <i1> [#uses=1]
	%tmp1011 = zext i1 %tmp10 to i8		; <i8> [#uses=1]
	%toBool12 = icmp ne i8 %tmp1011, 0		; <i1> [#uses=1]
	br i1 %toBool12, label %bb, label %bb13

bb13:		; preds = %cond_next
	call void @exit( i32 0 )
	unreachable

cond_false:		; preds = %entry
	%toBool14 = icmp ne i8 1, 0		; <i1> [#uses=1]
	br i1 %toBool14, label %cond_true15, label %cond_false33

cond_true15:		; preds = %cond_false
	store i32 0, i32* %z16
	br label %bb17

bb17:		; preds = %cond_next27, %cond_true15
	%tmp18 = load i32, i32* %z16		; <i32> [#uses=1]
	%tmp19 = sub i32 %tmp18, 16384		; <i32> [#uses=1]
	store i32 %tmp19, i32* %z16
	%tmp20 = load i32, i32* %i		; <i32> [#uses=1]
	%tmp21 = add i32 %tmp20, 1		; <i32> [#uses=1]
	store i32 %tmp21, i32* %i
	%tmp22 = load i32, i32* %i		; <i32> [#uses=1]
	%tmp23 = icmp sgt i32 %tmp22, 262144		; <i1> [#uses=1]
	%tmp2324 = zext i1 %tmp23 to i8		; <i8> [#uses=1]
	%toBool25 = icmp ne i8 %tmp2324, 0		; <i1> [#uses=1]
	br i1 %toBool25, label %cond_true26, label %cond_next27

cond_true26:		; preds = %bb17
	call void @abort( )
	unreachable

cond_next27:		; preds = %bb17
	%tmp28 = load i32, i32* %z16		; <i32> [#uses=1]
	%tmp29 = icmp ne i32 %tmp28, 0		; <i1> [#uses=1]
	%tmp2930 = zext i1 %tmp29 to i8		; <i8> [#uses=1]
	%toBool31 = icmp ne i8 %tmp2930, 0		; <i1> [#uses=1]
	br i1 %toBool31, label %bb17, label %bb32

bb32:		; preds = %cond_next27
	call void @exit( i32 0 )
	unreachable

cond_false33:		; preds = %cond_false
	call void @exit( i32 0 )
	unreachable

cond_next34:		; No predecessors!
	br label %cond_next35

cond_next35:		; preds = %cond_next34
	br label %return

return:		; preds = %cond_next35
	%retval36 = load i32, i32* %retval		; <i32> [#uses=1]
	ret i32 %retval36
}

declare void @abort()

declare void @exit(i32)
