; 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(...)
