New test case.
authorEvan Cheng <evan.cheng@apple.com>
Thu, 3 May 2007 23:53:36 +0000 (23:53 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Thu, 3 May 2007 23:53:36 +0000 (23:53 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36717 91177308-0d34-0410-b5e6-96231b3b80d8

test/CodeGen/ARM/2007-05-03-BadPostIndexedLd.ll [new file with mode: 0644]

diff --git a/test/CodeGen/ARM/2007-05-03-BadPostIndexedLd.ll b/test/CodeGen/ARM/2007-05-03-BadPostIndexedLd.ll
new file mode 100644 (file)
index 0000000..b850728
--- /dev/null
@@ -0,0 +1,113 @@
+; RUN: llvm-as < %s | llc -mtriple=arm-apple-darwin
+
+       %struct.Connection = type { i32, [10 x i8], i32 }
+       %struct.IntChunk = type { %struct.cppobjtype, i32, i32*, i32 }
+       %struct.Point = type { i8*, %struct.cppobjtype, i16 (%struct.Point*) sext *, i16 (%struct.Point*) sext *, double (%struct.Point*)*, double (%struct.Point*)* }
+       %struct.RefPoint = type { %struct.Point*, %struct.cppobjtype }
+       %struct.ShortArray = type { %struct.cppobjtype, i32, i16* }
+       %struct.TestObj = type { i8*, %struct.cppobjtype, i8, [32 x i8], i8*, i8**, i16, i16, i32, i32, i32, i32, float, double, %struct.cppobjtype, i32, i16*, i16**, i8**, i32, %struct.XyPoint, [3 x %struct.Connection], %struct.Point*, %struct.XyPoint*, i32, i8*, i8*, i16*, %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]              ; <[256 x i8]*> [#uses=1]
+@.str53615 = external constant [48 x i8]               ; <[48 x i8]*> [#uses=1]
+@FirstTime.4637.b = external global i1         ; <i1*> [#uses=1]
+
+define fastcc void @Draw7(i32 %Option, i32* %Status) {
+entry:
+       %tmp115.b = load i1* @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 %struct.TestObj** null          ; <%struct.TestObj*> [#uses=2]
+       %tmp2930.i = ptrtoint %struct.TestObj* %tmp1273 to i32          ; <i32> [#uses=1]
+       %tmp42.i348 = sub i32 0, %tmp2930.i             ; <i32> [#uses=1]
+       %tmp45.i = getelementptr %struct.TestObj* %tmp1273, i32 0, i32 0                ; <i8**> [#uses=2]
+       %tmp48.i = load i8** %tmp45.i           ; <i8*> [#uses=1]
+       %tmp50.i350 = call i32 (i8*, i8*, ...)* @sprintf( i8* getelementptr ([256 x i8]* @Msg, i32 0, i32 0), i8* getelementptr ([48 x i8]* @.str53615, i32 0, i32 0), i8* null, i8** %tmp45.i, i8* %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* null, i32 %tmp42.i348              ; <i8*> [#uses=0]
+       ret void
+
+cond_next1275:         ; preds = %cond_next1267
+       ret void
+
+bb1326:                ; preds = %cond_next315, %cond_next253
+       ret void
+}
+
+declare i32 @sprintf(i8*, i8*, ...)