; RUN: opt < %s -indvars -disable-output

declare void @q_atomic_increment()

declare void @_Z9qt_assertPKcS0_i()

define void @_ZN13QMetaResourceC1EPKh() {
entry:
	invoke void @_Z9qt_assertPKcS0_i( )
			to label %endif.1 unwind label %then.i.i551

then.i.i551:		; preds = %entry
        %exn551 = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
                 cleanup
	ret void

endif.1:		; preds = %entry
	br i1 false, label %then.2, label %then.i.i

then.2:		; preds = %endif.1
	invoke void @q_atomic_increment( )
			to label %loopentry.0 unwind label %invoke_catch.6

invoke_catch.6:		; preds = %then.2
        %exn6 = landingpad {i8*, i32} personality i32 (...)* @__gxx_personality_v0
                 cleanup
	ret void

loopentry.0:		; preds = %then.2
	br i1 false, label %shortcirc_next.i, label %endif.3

endif.3:		; preds = %loopentry.0
	ret void

shortcirc_next.i:		; preds = %loopentry.0
	br i1 false, label %_ZNK7QString2atEi.exit, label %then.i

then.i:		; preds = %shortcirc_next.i
	ret void

_ZNK7QString2atEi.exit:		; preds = %shortcirc_next.i
	br i1 false, label %endif.4, label %then.4

then.4:		; preds = %_ZNK7QString2atEi.exit
	ret void

endif.4:		; preds = %_ZNK7QString2atEi.exit
	%tmp.115 = load i8* null		; <i8> [#uses=1]
	br i1 false, label %loopexit.1, label %no_exit.0

no_exit.0:		; preds = %no_exit.0, %endif.4
	%bytes_in_len.4.5 = phi i8 [ %dec, %no_exit.0 ], [ %tmp.115, %endif.4 ]		; <i8> [#uses=1]
	%off.5.5.in = phi i32 [ %off.5.5, %no_exit.0 ], [ 0, %endif.4 ]		; <i32> [#uses=1]
	%off.5.5 = add i32 %off.5.5.in, 1		; <i32> [#uses=2]
	%dec = add i8 %bytes_in_len.4.5, -1		; <i8> [#uses=2]
	%tmp.123631 = icmp eq i8 %dec, 0		; <i1> [#uses=1]
	br i1 %tmp.123631, label %loopexit.1, label %no_exit.0

loopexit.1:		; preds = %no_exit.0, %endif.4
	%off.5.in.6 = phi i32 [ 0, %endif.4 ], [ %off.5.5, %no_exit.0 ]		; <i32> [#uses=0]
	ret void

then.i.i:		; preds = %endif.1
	ret void
}

declare i32 @__gxx_personality_v0(...)
