; RUN: opt < %s -loop-unswitch -instcombine -disable-output
; RUN: opt < %s -loop-unswitch -enable-mssa-loop-dependency=true -verify-memoryssa -instcombine -disable-output
	%struct.ClassDef = type { %struct.QByteArray, %struct.QByteArray, %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", i8, i8, %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QList<ArgumentDef>", %"struct.QMap<QByteArray,QByteArray>", %"struct.QList<ArgumentDef>", %"struct.QMap<QByteArray,QByteArray>", i32, i32 }
	%struct.FILE = type { i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, %struct._IO_marker*, %struct.FILE*, i32, i32, i32, i16, i8, [1 x i8], i8*, i64, i8*, i8*, i8*, i8*, i32, i32, [40 x i8] }
	%struct.Generator = type { %struct.FILE*, %struct.ClassDef*, %"struct.QList<ArgumentDef>", %struct.QByteArray, %"struct.QList<ArgumentDef>" }
	%struct.QBasicAtomic = type { i32 }
	%struct.QByteArray = type { %"struct.QByteArray::Data"* }
	%"struct.QByteArray::Data" = type { %struct.QBasicAtomic, i32, i32, i8*, [1 x i8] }
	%"struct.QList<ArgumentDef>" = type { %"struct.QList<ArgumentDef>::._19" }
	%"struct.QList<ArgumentDef>::._19" = type { %struct.QListData }
	%struct.QListData = type { %"struct.QListData::Data"* }
	%"struct.QListData::Data" = type { %struct.QBasicAtomic, i32, i32, i32, i8, [1 x i8*] }
	%"struct.QMap<QByteArray,QByteArray>" = type { %"struct.QMap<QByteArray,QByteArray>::._56" }
	%"struct.QMap<QByteArray,QByteArray>::._56" = type { %struct.QMapData* }
	%struct.QMapData = type { %struct.QMapData*, [12 x %struct.QMapData*], %struct.QBasicAtomic, i32, i32, i32, i8 }
	%struct._IO_marker = type { %struct._IO_marker*, %struct.FILE*, i32 }
@.str9 = external constant [1 x i8]		; <[1 x i8]*> [#uses=1]

declare i32 @strcmp(i8*, i8*)

define i32 @_ZN9Generator6strregEPKc(%struct.Generator* %this, i8* %s) {
entry:
	%s_addr.0 = select i1 false, i8* getelementptr ([1 x i8], [1 x i8]* @.str9, i32 0, i32 0), i8* %s		; <i8*> [#uses=2]
	%tmp122 = icmp eq i8* %s_addr.0, null		; <i1> [#uses=1]
	br label %bb184

bb55:		; preds = %bb184
	ret i32 0

bb88:		; preds = %bb184
	br i1 %tmp122, label %bb154, label %bb128

bb128:		; preds = %bb88
	%tmp138 = call i32 @strcmp( i8* null, i8* %s_addr.0 )		; <i32> [#uses=1]
	%iftmp.37.0.in4 = icmp eq i32 %tmp138, 0		; <i1> [#uses=1]
	br i1 %iftmp.37.0.in4, label %bb250, label %bb166

bb154:		; preds = %bb88
	br i1 false, label %bb250, label %bb166

bb166:		; preds = %bb154, %bb128
	%tmp175 = add i32 %idx.0, 1		; <i32> [#uses=1]
	%tmp177 = add i32 %tmp175, 0		; <i32> [#uses=1]
	%tmp181 = add i32 %tmp177, 0		; <i32> [#uses=1]
	%tmp183 = add i32 %i33.0, 1		; <i32> [#uses=1]
	br label %bb184

bb184:		; preds = %bb166, %entry
	%i33.0 = phi i32 [ 0, %entry ], [ %tmp183, %bb166 ]		; <i32> [#uses=2]
	%idx.0 = phi i32 [ 0, %entry ], [ %tmp181, %bb166 ]		; <i32> [#uses=2]
	%tmp49 = icmp slt i32 %i33.0, 0		; <i1> [#uses=1]
	br i1 %tmp49, label %bb88, label %bb55

bb250:		; preds = %bb154, %bb128
	ret i32 %idx.0
}
