298 lines · plain
1; RUN: opt < %s -loop-reduce2target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"3target triple = "aarch64-unknown-linux-gnu"4 5@d = internal unnamed_addr global ptr null, align 86 7define dso_local i32 @main(i1 %arg) local_unnamed_addr {8entry:9 %.pre.pre = load ptr, ptr @d, align 810 br label %for.body911 12for.body9: ; preds = %for.body9, %entry13 %i = phi ptr [ %.pre.pre, %entry ], [ %incdec.ptr, %for.body9 ]14 %incdec.ptr = getelementptr inbounds ptr, ptr %i, i64 -115 br i1 %arg, label %for.body9, label %for.inc16 17for.inc: ; preds = %for.body918 br label %for.body9.11819 20for.body9.1: ; preds = %for.inc.547, %for.body9.121 %i1 = phi ptr [ %incdec.ptr.1, %for.body9.1 ], [ %incdec.ptr.542, %for.inc.547 ]22 %incdec.ptr.1 = getelementptr inbounds ptr, ptr %i1, i64 -123 br i1 %arg, label %for.body9.1, label %for.inc.124 25for.inc.1: ; preds = %for.body9.126 br label %for.body9.1.127 28for.body9.2: ; preds = %for.inc.1.5, %for.body9.229 %i2 = phi ptr [ %incdec.ptr.2, %for.body9.2 ], [ %incdec.ptr.1.5, %for.inc.1.5 ]30 %incdec.ptr.2 = getelementptr inbounds ptr, ptr %i2, i64 -131 br i1 %arg, label %for.body9.2, label %for.inc.232 33for.inc.2: ; preds = %for.body9.234 br label %for.body9.2.135 36for.body9.3: ; preds = %for.inc.2.5, %for.body9.337 %i3 = phi ptr [ %incdec.ptr.3, %for.body9.3 ], [ %incdec.ptr.2.5, %for.inc.2.5 ]38 %incdec.ptr.3 = getelementptr inbounds ptr, ptr %i3, i64 -139 br i1 %arg, label %for.body9.3, label %for.inc.340 41for.inc.3: ; preds = %for.body9.342 br label %for.body9.3.143 44for.body9.4: ; preds = %for.inc.3.5, %for.body9.445 %i4 = phi ptr [ %incdec.ptr.4, %for.body9.4 ], [ %incdec.ptr.3.5, %for.inc.3.5 ]46 %incdec.ptr.4 = getelementptr inbounds ptr, ptr %i4, i64 -147 br i1 %arg, label %for.body9.4, label %for.inc.448 49for.inc.4: ; preds = %for.body9.450 br label %for.body9.4.151 52for.body9.5: ; preds = %for.inc.4.5, %for.body9.553 %i5 = phi ptr [ %incdec.ptr.5, %for.body9.5 ], [ %incdec.ptr.4.5, %for.inc.4.5 ]54 %incdec.ptr.5 = getelementptr inbounds ptr, ptr %i5, i64 -155 br i1 %arg, label %for.body9.5, label %for.inc.556 57for.inc.5: ; preds = %for.body9.558 br label %for.body9.5.159 60for.body9.5.1: ; preds = %for.body9.5.1, %for.inc.561 %i6 = phi ptr [ %incdec.ptr.5.1, %for.body9.5.1 ], [ %incdec.ptr.5, %for.inc.5 ]62 %incdec.ptr.5.1 = getelementptr inbounds ptr, ptr %i6, i64 -163 br i1 %arg, label %for.body9.5.1, label %for.inc.5.164 65for.inc.5.1: ; preds = %for.body9.5.166 br label %for.body9.5.267 68for.body9.5.2: ; preds = %for.body9.5.2, %for.inc.5.169 %i7 = phi ptr [ %incdec.ptr.5.2, %for.body9.5.2 ], [ %incdec.ptr.5.1, %for.inc.5.1 ]70 %incdec.ptr.5.2 = getelementptr inbounds ptr, ptr %i7, i64 -171 br i1 %arg, label %for.body9.5.2, label %for.inc.5.272 73for.inc.5.2: ; preds = %for.body9.5.274 br label %for.body9.5.375 76for.body9.5.3: ; preds = %for.body9.5.3, %for.inc.5.277 %i8 = phi ptr [ %incdec.ptr.5.3, %for.body9.5.3 ], [ %incdec.ptr.5.2, %for.inc.5.2 ]78 %incdec.ptr.5.3 = getelementptr inbounds ptr, ptr %i8, i64 -179 br i1 %arg, label %for.body9.5.3, label %for.inc.5.380 81for.inc.5.3: ; preds = %for.body9.5.382 br label %for.body9.5.483 84for.body9.5.4: ; preds = %for.body9.5.4, %for.inc.5.385 %i9 = phi ptr [ %incdec.ptr.5.4, %for.body9.5.4 ], [ %incdec.ptr.5.3, %for.inc.5.3 ]86 %incdec.ptr.5.4 = getelementptr inbounds ptr, ptr %i9, i64 -187 br i1 %arg, label %for.body9.5.4, label %for.inc.5.488 89for.inc.5.4: ; preds = %for.body9.5.490 br label %for.body9.5.591 92for.body9.5.5: ; preds = %for.body9.5.5, %for.inc.5.493 %i10 = phi ptr [ undef, %for.body9.5.5 ], [ %incdec.ptr.5.4, %for.inc.5.4 ]94 %i12 = load i64, ptr %i10, align 895 br label %for.body9.5.596 97for.body9.4.1: ; preds = %for.body9.4.1, %for.inc.498 %i13 = phi ptr [ %incdec.ptr.4.1, %for.body9.4.1 ], [ %incdec.ptr.4, %for.inc.4 ]99 %incdec.ptr.4.1 = getelementptr inbounds ptr, ptr %i13, i64 -1100 br i1 %arg, label %for.body9.4.1, label %for.inc.4.1101 102for.inc.4.1: ; preds = %for.body9.4.1103 br label %for.body9.4.2104 105for.body9.4.2: ; preds = %for.body9.4.2, %for.inc.4.1106 %i14 = phi ptr [ %incdec.ptr.4.2, %for.body9.4.2 ], [ %incdec.ptr.4.1, %for.inc.4.1 ]107 %incdec.ptr.4.2 = getelementptr inbounds ptr, ptr %i14, i64 -1108 br i1 %arg, label %for.body9.4.2, label %for.inc.4.2109 110for.inc.4.2: ; preds = %for.body9.4.2111 br label %for.body9.4.3112 113for.body9.4.3: ; preds = %for.body9.4.3, %for.inc.4.2114 %i15 = phi ptr [ %incdec.ptr.4.3, %for.body9.4.3 ], [ %incdec.ptr.4.2, %for.inc.4.2 ]115 %incdec.ptr.4.3 = getelementptr inbounds ptr, ptr %i15, i64 -1116 br i1 %arg, label %for.body9.4.3, label %for.inc.4.3117 118for.inc.4.3: ; preds = %for.body9.4.3119 br label %for.body9.4.4120 121for.body9.4.4: ; preds = %for.body9.4.4, %for.inc.4.3122 %i16 = phi ptr [ %incdec.ptr.4.4, %for.body9.4.4 ], [ %incdec.ptr.4.3, %for.inc.4.3 ]123 %incdec.ptr.4.4 = getelementptr inbounds ptr, ptr %i16, i64 -1124 br i1 %arg, label %for.body9.4.4, label %for.inc.4.4125 126for.inc.4.4: ; preds = %for.body9.4.4127 br label %for.body9.4.5128 129for.body9.4.5: ; preds = %for.body9.4.5, %for.inc.4.4130 %i17 = phi ptr [ %incdec.ptr.4.5, %for.body9.4.5 ], [ %incdec.ptr.4.4, %for.inc.4.4 ]131 %incdec.ptr.4.5 = getelementptr inbounds ptr, ptr %i17, i64 -1132 br i1 %arg, label %for.body9.4.5, label %for.inc.4.5133 134for.inc.4.5: ; preds = %for.body9.4.5135 br label %for.body9.5136 137for.body9.3.1: ; preds = %for.body9.3.1, %for.inc.3138 %i18 = phi ptr [ %incdec.ptr.3.1, %for.body9.3.1 ], [ %incdec.ptr.3, %for.inc.3 ]139 %incdec.ptr.3.1 = getelementptr inbounds ptr, ptr %i18, i64 -1140 br i1 %arg, label %for.body9.3.1, label %for.inc.3.1141 142for.inc.3.1: ; preds = %for.body9.3.1143 br label %for.body9.3.2144 145for.body9.3.2: ; preds = %for.body9.3.2, %for.inc.3.1146 %i19 = phi ptr [ %incdec.ptr.3.2, %for.body9.3.2 ], [ %incdec.ptr.3.1, %for.inc.3.1 ]147 %incdec.ptr.3.2 = getelementptr inbounds ptr, ptr %i19, i64 -1148 br i1 %arg, label %for.body9.3.2, label %for.inc.3.2149 150for.inc.3.2: ; preds = %for.body9.3.2151 br label %for.body9.3.3152 153for.body9.3.3: ; preds = %for.body9.3.3, %for.inc.3.2154 %i20 = phi ptr [ %incdec.ptr.3.3, %for.body9.3.3 ], [ %incdec.ptr.3.2, %for.inc.3.2 ]155 %incdec.ptr.3.3 = getelementptr inbounds ptr, ptr %i20, i64 -1156 br i1 %arg, label %for.body9.3.3, label %for.inc.3.3157 158for.inc.3.3: ; preds = %for.body9.3.3159 br label %for.body9.3.4160 161for.body9.3.4: ; preds = %for.body9.3.4, %for.inc.3.3162 %i21 = phi ptr [ %incdec.ptr.3.4, %for.body9.3.4 ], [ %incdec.ptr.3.3, %for.inc.3.3 ]163 %incdec.ptr.3.4 = getelementptr inbounds ptr, ptr %i21, i64 -1164 br i1 %arg, label %for.body9.3.4, label %for.inc.3.4165 166for.inc.3.4: ; preds = %for.body9.3.4167 br label %for.body9.3.5168 169for.body9.3.5: ; preds = %for.body9.3.5, %for.inc.3.4170 %i22 = phi ptr [ %incdec.ptr.3.5, %for.body9.3.5 ], [ %incdec.ptr.3.4, %for.inc.3.4 ]171 %incdec.ptr.3.5 = getelementptr inbounds ptr, ptr %i22, i64 -1172 br i1 %arg, label %for.body9.3.5, label %for.inc.3.5173 174for.inc.3.5: ; preds = %for.body9.3.5175 br label %for.body9.4176 177for.body9.2.1: ; preds = %for.body9.2.1, %for.inc.2178 %i23 = phi ptr [ %incdec.ptr.2.1, %for.body9.2.1 ], [ %incdec.ptr.2, %for.inc.2 ]179 %incdec.ptr.2.1 = getelementptr inbounds ptr, ptr %i23, i64 -1180 br i1 %arg, label %for.body9.2.1, label %for.inc.2.1181 182for.inc.2.1: ; preds = %for.body9.2.1183 br label %for.body9.2.2184 185for.body9.2.2: ; preds = %for.body9.2.2, %for.inc.2.1186 %i24 = phi ptr [ %incdec.ptr.2.2, %for.body9.2.2 ], [ %incdec.ptr.2.1, %for.inc.2.1 ]187 %incdec.ptr.2.2 = getelementptr inbounds ptr, ptr %i24, i64 -1188 br i1 %arg, label %for.body9.2.2, label %for.inc.2.2189 190for.inc.2.2: ; preds = %for.body9.2.2191 br label %for.body9.2.3192 193for.body9.2.3: ; preds = %for.body9.2.3, %for.inc.2.2194 %i25 = phi ptr [ %incdec.ptr.2.3, %for.body9.2.3 ], [ %incdec.ptr.2.2, %for.inc.2.2 ]195 %incdec.ptr.2.3 = getelementptr inbounds ptr, ptr %i25, i64 -1196 br i1 %arg, label %for.body9.2.3, label %for.inc.2.3197 198for.inc.2.3: ; preds = %for.body9.2.3199 br label %for.body9.2.4200 201for.body9.2.4: ; preds = %for.body9.2.4, %for.inc.2.3202 %i26 = phi ptr [ %incdec.ptr.2.4, %for.body9.2.4 ], [ %incdec.ptr.2.3, %for.inc.2.3 ]203 %incdec.ptr.2.4 = getelementptr inbounds ptr, ptr %i26, i64 -1204 br i1 %arg, label %for.body9.2.4, label %for.inc.2.4205 206for.inc.2.4: ; preds = %for.body9.2.4207 br label %for.body9.2.5208 209for.body9.2.5: ; preds = %for.body9.2.5, %for.inc.2.4210 %i27 = phi ptr [ %incdec.ptr.2.5, %for.body9.2.5 ], [ %incdec.ptr.2.4, %for.inc.2.4 ]211 %incdec.ptr.2.5 = getelementptr inbounds ptr, ptr %i27, i64 -1212 br i1 %arg, label %for.body9.2.5, label %for.inc.2.5213 214for.inc.2.5: ; preds = %for.body9.2.5215 br label %for.body9.3216 217for.body9.1.1: ; preds = %for.body9.1.1, %for.inc.1218 %i28 = phi ptr [ %incdec.ptr.1.1, %for.body9.1.1 ], [ %incdec.ptr.1, %for.inc.1 ]219 %incdec.ptr.1.1 = getelementptr inbounds ptr, ptr %i28, i64 -1220 br i1 %arg, label %for.body9.1.1, label %for.inc.1.1221 222for.inc.1.1: ; preds = %for.body9.1.1223 br label %for.body9.1.2224 225for.body9.1.2: ; preds = %for.body9.1.2, %for.inc.1.1226 %i29 = phi ptr [ %incdec.ptr.1.2, %for.body9.1.2 ], [ %incdec.ptr.1.1, %for.inc.1.1 ]227 %incdec.ptr.1.2 = getelementptr inbounds ptr, ptr %i29, i64 -1228 br i1 %arg, label %for.body9.1.2, label %for.inc.1.2229 230for.inc.1.2: ; preds = %for.body9.1.2231 br label %for.body9.1.3232 233for.body9.1.3: ; preds = %for.body9.1.3, %for.inc.1.2234 %i30 = phi ptr [ %incdec.ptr.1.3, %for.body9.1.3 ], [ %incdec.ptr.1.2, %for.inc.1.2 ]235 %incdec.ptr.1.3 = getelementptr inbounds ptr, ptr %i30, i64 -1236 br i1 %arg, label %for.body9.1.3, label %for.inc.1.3237 238for.inc.1.3: ; preds = %for.body9.1.3239 br label %for.body9.1.4240 241for.body9.1.4: ; preds = %for.body9.1.4, %for.inc.1.3242 %i31 = phi ptr [ %incdec.ptr.1.4, %for.body9.1.4 ], [ %incdec.ptr.1.3, %for.inc.1.3 ]243 %incdec.ptr.1.4 = getelementptr inbounds ptr, ptr %i31, i64 -1244 br i1 %arg, label %for.body9.1.4, label %for.inc.1.4245 246for.inc.1.4: ; preds = %for.body9.1.4247 br label %for.body9.1.5248 249for.body9.1.5: ; preds = %for.body9.1.5, %for.inc.1.4250 %i32 = phi ptr [ %incdec.ptr.1.5, %for.body9.1.5 ], [ %incdec.ptr.1.4, %for.inc.1.4 ]251 %incdec.ptr.1.5 = getelementptr inbounds ptr, ptr %i32, i64 -1252 br i1 %arg, label %for.body9.1.5, label %for.inc.1.5253 254for.inc.1.5: ; preds = %for.body9.1.5255 br label %for.body9.2256 257for.body9.118: ; preds = %for.body9.118, %for.inc258 %i33 = phi ptr [ %incdec.ptr, %for.inc ], [ %incdec.ptr.114, %for.body9.118 ]259 %incdec.ptr.114 = getelementptr inbounds ptr, ptr %i33, i64 -1260 br i1 %arg, label %for.body9.118, label %for.inc.119261 262for.inc.119: ; preds = %for.body9.118263 br label %for.body9.225264 265for.body9.225: ; preds = %for.body9.225, %for.inc.119266 %i34 = phi ptr [ %incdec.ptr.114, %for.inc.119 ], [ %incdec.ptr.221, %for.body9.225 ]267 %incdec.ptr.221 = getelementptr inbounds ptr, ptr %i34, i64 -1268 %i36 = load i64, ptr %i34, align 8269 br i1 %arg, label %for.body9.225, label %for.inc.226270 271for.inc.226: ; preds = %for.body9.225272 br label %for.body9.332273 274for.body9.332: ; preds = %for.body9.332, %for.inc.226275 %i37 = phi ptr [ %incdec.ptr.221, %for.inc.226 ], [ %incdec.ptr.328, %for.body9.332 ]276 %incdec.ptr.328 = getelementptr inbounds ptr, ptr %i37, i64 -1277 br i1 %arg, label %for.body9.332, label %for.inc.333278 279for.inc.333: ; preds = %for.body9.332280 br label %for.body9.439281 282for.body9.439: ; preds = %for.body9.439, %for.inc.333283 %i38 = phi ptr [ %incdec.ptr.328, %for.inc.333 ], [ %incdec.ptr.435, %for.body9.439 ]284 %incdec.ptr.435 = getelementptr inbounds ptr, ptr %i38, i64 -1285 br i1 %arg, label %for.body9.439, label %for.inc.440286 287for.inc.440: ; preds = %for.body9.439288 br label %for.body9.546289 290for.body9.546: ; preds = %for.body9.546, %for.inc.440291 %i39 = phi ptr [ %incdec.ptr.435, %for.inc.440 ], [ %incdec.ptr.542, %for.body9.546 ]292 %incdec.ptr.542 = getelementptr inbounds ptr, ptr %i39, i64 -1293 br i1 %arg, label %for.body9.546, label %for.inc.547294 295for.inc.547: ; preds = %for.body9.546296 br label %for.body9.1297}298