; Loop Simplify should turn phi nodes like X = phi [X, Y]  into just Y, eliminating them.
; RUN: opt < %s -passes=loop-simplify -S | grep phi | count 6

@A = weak global [3000000 x i32] zeroinitializer		; <ptr> [#uses=1]
@B = weak global [20000 x i32] zeroinitializer		; <ptr> [#uses=1]
@C = weak global [100 x i32] zeroinitializer		; <ptr> [#uses=1]
@Z = weak global i32 0		; <ptr> [#uses=2]

define i32 @main() {
entry:
	tail call void @__main( )
	br label %loopentry.1
loopentry.1:		; preds = %loopexit.1, %entry
	%indvar20 = phi i32 [ 0, %entry ], [ %indvar.next21, %loopexit.1 ]		; <i32> [#uses=1]
	%a.1 = phi ptr [ @A, %entry ], [ %inc.0, %loopexit.1 ]		; <ptr> [#uses=1]
	br label %no_exit.2
no_exit.2:		; preds = %loopexit.2, %no_exit.2, %loopentry.1
	%a.0.4.ph = phi ptr [ %a.1, %loopentry.1 ], [ %inc.0, %loopexit.2 ], [ %a.0.4.ph, %no_exit.2 ]		; <ptr> [#uses=3]
	%b.1.4.ph = phi ptr [ @B, %loopentry.1 ], [ %inc.1, %loopexit.2 ], [ %b.1.4.ph, %no_exit.2 ]		; <ptr> [#uses=3]
	%indvar17 = phi i32 [ 0, %loopentry.1 ], [ %indvar.next18, %loopexit.2 ], [ %indvar17, %no_exit.2 ]		; <i32> [#uses=2]
	%indvar = phi i32 [ %indvar.next, %no_exit.2 ], [ 0, %loopexit.2 ], [ 0, %loopentry.1 ]		; <i32> [#uses=5]
	%b.1.4.rec = bitcast i32 %indvar to i32		; <i32> [#uses=1]
	%gep.upgrd.1 = zext i32 %indvar to i64		; <i64> [#uses=1]
	%c.2.4 = getelementptr [100 x i32], ptr @C, i32 0, i64 %gep.upgrd.1		; <ptr> [#uses=1]
	%gep.upgrd.2 = zext i32 %indvar to i64		; <i64> [#uses=1]
	%a.0.4 = getelementptr i32, ptr %a.0.4.ph, i64 %gep.upgrd.2		; <ptr> [#uses=1]
	%gep.upgrd.3 = zext i32 %indvar to i64		; <i64> [#uses=1]
	%b.1.4 = getelementptr i32, ptr %b.1.4.ph, i64 %gep.upgrd.3		; <ptr> [#uses=1]
	%inc.0.rec = add i32 %b.1.4.rec, 1		; <i32> [#uses=2]
	%inc.0 = getelementptr i32, ptr %a.0.4.ph, i32 %inc.0.rec		; <ptr> [#uses=2]
	%tmp.13 = load i32, ptr %a.0.4		; <i32> [#uses=1]
	%inc.1 = getelementptr i32, ptr %b.1.4.ph, i32 %inc.0.rec		; <ptr> [#uses=1]
	%tmp.15 = load i32, ptr %b.1.4		; <i32> [#uses=1]
	%tmp.18 = load i32, ptr %c.2.4		; <i32> [#uses=1]
	%tmp.16 = mul i32 %tmp.15, %tmp.13		; <i32> [#uses=1]
	%tmp.19 = mul i32 %tmp.16, %tmp.18		; <i32> [#uses=1]
	%tmp.20 = load i32, ptr @Z		; <i32> [#uses=1]
	%tmp.21 = add i32 %tmp.19, %tmp.20		; <i32> [#uses=1]
	store i32 %tmp.21, ptr @Z
	%indvar.next = add i32 %indvar, 1		; <i32> [#uses=2]
	%exitcond = icmp eq i32 %indvar.next, 100		; <i1> [#uses=1]
	br i1 %exitcond, label %loopexit.2, label %no_exit.2
loopexit.2:		; preds = %no_exit.2
	%indvar.next18 = add i32 %indvar17, 1		; <i32> [#uses=2]
	%exitcond19 = icmp eq i32 %indvar.next18, 200		; <i1> [#uses=1]
	br i1 %exitcond19, label %loopexit.1, label %no_exit.2
loopexit.1:		; preds = %loopexit.2
	%indvar.next21 = add i32 %indvar20, 1		; <i32> [#uses=2]
	%exitcond22 = icmp eq i32 %indvar.next21, 300		; <i1> [#uses=1]
	br i1 %exitcond22, label %return, label %loopentry.1
return:		; preds = %loopexit.1
	ret i32 undef
}

declare void @__main()
