[AArch64,ELF] Restrict MOVZ/MOVK to non-PIC large code model (#70178)
[llvm-project.git] / llvm / test / CodeGen / ARM / 2007-05-03-BadPostIndexedLd.ll
blobfc349bfb8c8e00919d6bed736a693441481961cf
1 ; RUN: llc < %s -mtriple=arm-apple-darwin
3         %struct.Connection = type { i32, [10 x i8], i32 }
4         %struct.IntChunk = type { %struct.cppobjtype, i32, ptr, i32 }
5         %struct.Point = type { ptr, %struct.cppobjtype, ptr, ptr, ptr, ptr }
6         %struct.RefPoint = type { ptr, %struct.cppobjtype }
7         %struct.ShortArray = type { %struct.cppobjtype, i32, ptr }
8         %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 }
9         %struct.XyPoint = type { i16, i16 }
10         %struct.cppobjtype = type { i32, i16, i16 }
11 @Msg = external global [256 x i8]               ; <ptr> [#uses=1]
12 @.str53615 = external constant [48 x i8]                ; <ptr> [#uses=1]
13 @FirstTime.4637.b = external global i1          ; <ptr> [#uses=1]
15 define fastcc void @Draw7(i32 %Option, ptr %Status) {
16 entry:
17         %tmp115.b = load i1, ptr @FirstTime.4637.b              ; <i1> [#uses=1]
18         br i1 %tmp115.b, label %cond_next239, label %cond_next.i
20 cond_next.i:            ; preds = %entry
21         ret void
23 cond_next239:           ; preds = %entry
24         %tmp242 = icmp eq i32 0, 0              ; <i1> [#uses=1]
25         br i1 %tmp242, label %cond_next253, label %cond_next296
27 cond_next253:           ; preds = %cond_next239
28         switch i32 %Option, label %bb1326 [
29                  i32 3, label %cond_true258
30                  i32 4, label %cond_true268
31                  i32 2, label %cond_true279
32                  i32 1, label %cond_next315
33         ]
35 cond_true258:           ; preds = %cond_next253
36         ret void
38 cond_true268:           ; preds = %cond_next253
39         ret void
41 cond_true279:           ; preds = %cond_next253
42         ret void
44 cond_next296:           ; preds = %cond_next239
45         ret void
47 cond_next315:           ; preds = %cond_next253
48         %tmp1140 = icmp eq i32 0, 0             ; <i1> [#uses=1]
49         br i1 %tmp1140, label %cond_true1143, label %bb1326
51 cond_true1143:          ; preds = %cond_next315
52         %tmp1148 = icmp eq i32 0, 0             ; <i1> [#uses=4]
53         br i1 %tmp1148, label %cond_next1153, label %cond_true1151
55 cond_true1151:          ; preds = %cond_true1143
56         ret void
58 cond_next1153:          ; preds = %cond_true1143
59         %tmp8.i.i185 = icmp eq i32 0, 0         ; <i1> [#uses=1]
60         br i1 %tmp8.i.i185, label %TestObj_new1.exit, label %cond_true.i.i187
62 cond_true.i.i187:               ; preds = %cond_next1153
63         ret void
65 TestObj_new1.exit:              ; preds = %cond_next1153
66         %tmp1167 = icmp eq i16 0, 0             ; <i1> [#uses=1]
67         %tmp1178 = icmp eq i32 0, 0             ; <i1> [#uses=1]
68         %bothcond = and i1 %tmp1167, %tmp1178           ; <i1> [#uses=1]
69         br i1 %bothcond, label %bb1199, label %bb1181
71 bb1181:         ; preds = %TestObj_new1.exit
72         ret void
74 bb1199:         ; preds = %TestObj_new1.exit
75         br i1 %tmp1148, label %cond_next1235, label %Object_Dump.exit302
77 Object_Dump.exit302:            ; preds = %bb1199
78         ret void
80 cond_next1235:          ; preds = %bb1199
81         %bothcond10485 = or i1 false, %tmp1148          ; <i1> [#uses=1]
82         br i1 %bothcond10485, label %cond_next1267, label %cond_true1248
84 cond_true1248:          ; preds = %cond_next1235
85         ret void
87 cond_next1267:          ; preds = %cond_next1235
88         br i1 %tmp1148, label %cond_next1275, label %cond_true1272
90 cond_true1272:          ; preds = %cond_next1267
91         %tmp1273 = load ptr, ptr null           ; <ptr> [#uses=2]
92         %tmp2930.i = ptrtoint ptr %tmp1273 to i32               ; <i32> [#uses=1]
93         %tmp42.i348 = sub i32 0, %tmp2930.i             ; <i32> [#uses=1]
94         %tmp45.i = getelementptr %struct.TestObj, ptr %tmp1273, i32 0, i32 0            ; <ptr> [#uses=2]
95         %tmp48.i = load ptr, ptr %tmp45.i               ; <ptr> [#uses=1]
96         %tmp50.i350 = call i32 (ptr, ptr, ...) @sprintf( ptr @Msg, ptr @.str53615, ptr null, ptr %tmp45.i, ptr %tmp48.i )               ; <i32> [#uses=0]
97         br i1 false, label %cond_true.i632.i, label %Ut_TraceMsg.exit648.i
99 cond_true.i632.i:               ; preds = %cond_true1272
100         ret void
102 Ut_TraceMsg.exit648.i:          ; preds = %cond_true1272
103         %tmp57.i = getelementptr i8, ptr null, i32 %tmp42.i348          ; <ptr> [#uses=0]
104         ret void
106 cond_next1275:          ; preds = %cond_next1267
107         ret void
109 bb1326:         ; preds = %cond_next315, %cond_next253
110         ret void
113 declare i32 @sprintf(ptr, ptr, ...)