llvm/llvm/test/CodeGen/ARM/2007-05-03-BadPostIndexedLd.ll

; RUN: llc < %s -mtriple=arm-apple-darwin

	%struct.Connection = type { i32, [10 x i8], i32 }
	%struct.IntChunk = type { %struct.cppobjtype, i32, ptr, i32 }
	%struct.Point = type { ptr, %struct.cppobjtype, ptr, ptr, ptr, ptr }
	%struct.RefPoint = type { ptr, %struct.cppobjtype }
	%struct.ShortArray = type { %struct.cppobjtype, i32, ptr }
	%struct.TestObj = type { ptr, %struct.cppobjtype, i8, [32 x i8], ptr, ptr, i16, i16, i32, i32, i32, i32, float, double, %struct.cppobjtype, i32, ptr, ptr, ptr, i32, %struct.XyPoint, [3 x %struct.Connection], ptr, ptr, i32, ptr, ptr, ptr, %struct.ShortArray, %struct.IntChunk, %struct.cppobjtype, %struct.cppobjtype, %struct.RefPoint, i32, %struct.cppobjtype, %struct.cppobjtype }
	%struct.XyPoint = type { i16, i16 }
	%struct.cppobjtype = type { i32, i16, i16 }
@Msg = external global [256 x i8]		; <ptr> [#uses=1]
@.str53615 = external constant [48 x i8]		; <ptr> [#uses=1]
@FirstTime.4637.b = external global i1		; <ptr> [#uses=1]

define fastcc void @Draw7(i32 %Option, ptr %Status) {
entry:
	%tmp115.b = load i1, ptr @FirstTime.4637.b		; <i1> [#uses=1]
	br i1 %tmp115.b, label %cond_next239, label %cond_next.i

cond_next.i:		; preds = %entry
	ret void

cond_next239:		; preds = %entry
	%tmp242 = icmp eq i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp242, label %cond_next253, label %cond_next296

cond_next253:		; preds = %cond_next239
	switch i32 %Option, label %bb1326 [
		 i32 3, label %cond_true258
		 i32 4, label %cond_true268
		 i32 2, label %cond_true279
		 i32 1, label %cond_next315
	]

cond_true258:		; preds = %cond_next253
	ret void

cond_true268:		; preds = %cond_next253
	ret void

cond_true279:		; preds = %cond_next253
	ret void

cond_next296:		; preds = %cond_next239
	ret void

cond_next315:		; preds = %cond_next253
	%tmp1140 = icmp eq i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp1140, label %cond_true1143, label %bb1326

cond_true1143:		; preds = %cond_next315
	%tmp1148 = icmp eq i32 0, 0		; <i1> [#uses=4]
	br i1 %tmp1148, label %cond_next1153, label %cond_true1151

cond_true1151:		; preds = %cond_true1143
	ret void

cond_next1153:		; preds = %cond_true1143
	%tmp8.i.i185 = icmp eq i32 0, 0		; <i1> [#uses=1]
	br i1 %tmp8.i.i185, label %TestObj_new1.exit, label %cond_true.i.i187

cond_true.i.i187:		; preds = %cond_next1153
	ret void

TestObj_new1.exit:		; preds = %cond_next1153
	%tmp1167 = icmp eq i16 0, 0		; <i1> [#uses=1]
	%tmp1178 = icmp eq i32 0, 0		; <i1> [#uses=1]
	%bothcond = and i1 %tmp1167, %tmp1178		; <i1> [#uses=1]
	br i1 %bothcond, label %bb1199, label %bb1181

bb1181:		; preds = %TestObj_new1.exit
	ret void

bb1199:		; preds = %TestObj_new1.exit
	br i1 %tmp1148, label %cond_next1235, label %Object_Dump.exit302

Object_Dump.exit302:		; preds = %bb1199
	ret void

cond_next1235:		; preds = %bb1199
	%bothcond10485 = or i1 false, %tmp1148		; <i1> [#uses=1]
	br i1 %bothcond10485, label %cond_next1267, label %cond_true1248

cond_true1248:		; preds = %cond_next1235
	ret void

cond_next1267:		; preds = %cond_next1235
	br i1 %tmp1148, label %cond_next1275, label %cond_true1272

cond_true1272:		; preds = %cond_next1267
	%tmp1273 = load ptr, ptr null		; <ptr> [#uses=2]
	%tmp2930.i = ptrtoint ptr %tmp1273 to i32		; <i32> [#uses=1]
	%tmp42.i348 = sub i32 0, %tmp2930.i		; <i32> [#uses=1]
	%tmp45.i = getelementptr %struct.TestObj, ptr %tmp1273, i32 0, i32 0		; <ptr> [#uses=2]
	%tmp48.i = load ptr, ptr %tmp45.i		; <ptr> [#uses=1]
	%tmp50.i350 = call i32 (ptr, ptr, ...) @sprintf( ptr @Msg, ptr @.str53615, ptr null, ptr %tmp45.i, ptr %tmp48.i )		; <i32> [#uses=0]
	br i1 false, label %cond_true.i632.i, label %Ut_TraceMsg.exit648.i

cond_true.i632.i:		; preds = %cond_true1272
	ret void

Ut_TraceMsg.exit648.i:		; preds = %cond_true1272
	%tmp57.i = getelementptr i8, ptr null, i32 %tmp42.i348		; <ptr> [#uses=0]
	ret void

cond_next1275:		; preds = %cond_next1267
	ret void

bb1326:		; preds = %cond_next315, %cond_next253
	ret void
}

declare i32 @sprintf(ptr, ptr, ...)