1; RUN: opt -passes=loop-unroll-and-jam -allow-unroll-and-jam -unroll-and-jam-count=4 < %s -S | FileCheck %s 2target datalayout = "e-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128" 3 4@a = common dso_local local_unnamed_addr global i32 0, align 4 5@b = common dso_local local_unnamed_addr global i8 0, align 1 6@e = common dso_local local_unnamed_addr global i64 0, align 8 7@c = common dso_local local_unnamed_addr global ptr null, align 8 8@g = common dso_local local_unnamed_addr global i64 0, align 8 9@f = common dso_local local_unnamed_addr global i32 0, align 4 10 11; Check that the loop won't be UAJ and it will finish. 12; This loops triggers a exponential explosion of the algorithm. 13; CHECK-LABEL: test1 14; CHECK: entry 15; CHECK: for.cond1.preheader.lr.ph 16; CHECK: for.cond1.preheader 17; CHECK: for.cond13.preheader 18; CHECK: for.cond4.preheader 19; CHECK: for.cond.for.end27_crit_edge 20; CHECK: for.end27 21define dso_local void @test1(i32 %i) { 22entry: 23 %0 = load i32, ptr @a, align 4, !tbaa !1 24 %tobool40 = icmp eq i32 %0, 0 25 br i1 %tobool40, label %for.end27, label %for.cond1.preheader.lr.ph 26 27for.cond1.preheader.lr.ph: ; preds = %entry 28 %1 = load ptr, ptr @c, align 8, !tbaa !5 29 br label %for.cond1.preheader 30 31for.cond1.preheader: ; preds = %for.cond1.preheader.lr.ph, %for.cond13.preheader 32 %i.addr.041 = phi i32 [ %i, %for.cond1.preheader.lr.ph ], [ %xor.8.9, %for.cond13.preheader ] 33 br label %for.cond4.preheader 34 35for.cond13.preheader: ; preds = %for.cond4.preheader 36 %tobool21 = icmp ne i32 %i.addr.041, 0 37 %lor.ext = zext i1 %tobool21 to i32 38 %xor = xor i32 %i.addr.041, %lor.ext 39 %tobool21.1 = icmp ne i32 %xor, 0 40 %lor.ext.1 = zext i1 %tobool21.1 to i32 41 %xor.1 = xor i32 %xor, %lor.ext.1 42 %tobool21.2 = icmp ne i32 %xor.1, 0 43 %lor.ext.2 = zext i1 %tobool21.2 to i32 44 %xor.2 = xor i32 %xor.1, %lor.ext.2 45 %tobool21.3 = icmp ne i32 %xor.2, 0 46 %lor.ext.3 = zext i1 %tobool21.3 to i32 47 %xor.3 = xor i32 %xor.2, %lor.ext.3 48 %tobool21.4 = icmp ne i32 %xor.3, 0 49 %lor.ext.4 = zext i1 %tobool21.4 to i32 50 %xor.4 = xor i32 %xor.3, %lor.ext.4 51 %tobool21.5 = icmp ne i32 %xor.4, 0 52 %lor.ext.5 = zext i1 %tobool21.5 to i32 53 %xor.5 = xor i32 %xor.4, %lor.ext.5 54 %tobool21.6 = icmp ne i32 %xor.5, 0 55 %lor.ext.6 = zext i1 %tobool21.6 to i32 56 %xor.6 = xor i32 %xor.5, %lor.ext.6 57 %tobool21.7 = icmp ne i32 %xor.6, 0 58 %lor.ext.7 = zext i1 %tobool21.7 to i32 59 %xor.7 = xor i32 %xor.6, %lor.ext.7 60 %tobool21.8 = icmp ne i32 %xor.7, 0 61 %lor.ext.8 = zext i1 %tobool21.8 to i32 62 %xor.8 = xor i32 %xor.7, %lor.ext.8 63 %tobool21.142 = icmp ne i32 %xor.8, 0 64 %lor.ext.143 = zext i1 %tobool21.142 to i32 65 %xor.144 = xor i32 %xor.8, %lor.ext.143 66 %tobool21.1.1 = icmp ne i32 %xor.144, 0 67 %lor.ext.1.1 = zext i1 %tobool21.1.1 to i32 68 %xor.1.1 = xor i32 %xor.144, %lor.ext.1.1 69 %tobool21.2.1 = icmp ne i32 %xor.1.1, 0 70 %lor.ext.2.1 = zext i1 %tobool21.2.1 to i32 71 %xor.2.1 = xor i32 %xor.1.1, %lor.ext.2.1 72 %tobool21.3.1 = icmp ne i32 %xor.2.1, 0 73 %lor.ext.3.1 = zext i1 %tobool21.3.1 to i32 74 %xor.3.1 = xor i32 %xor.2.1, %lor.ext.3.1 75 %tobool21.4.1 = icmp ne i32 %xor.3.1, 0 76 %lor.ext.4.1 = zext i1 %tobool21.4.1 to i32 77 %xor.4.1 = xor i32 %xor.3.1, %lor.ext.4.1 78 %tobool21.5.1 = icmp ne i32 %xor.4.1, 0 79 %lor.ext.5.1 = zext i1 %tobool21.5.1 to i32 80 %xor.5.1 = xor i32 %xor.4.1, %lor.ext.5.1 81 %tobool21.6.1 = icmp ne i32 %xor.5.1, 0 82 %lor.ext.6.1 = zext i1 %tobool21.6.1 to i32 83 %xor.6.1 = xor i32 %xor.5.1, %lor.ext.6.1 84 %tobool21.7.1 = icmp ne i32 %xor.6.1, 0 85 %lor.ext.7.1 = zext i1 %tobool21.7.1 to i32 86 %xor.7.1 = xor i32 %xor.6.1, %lor.ext.7.1 87 %tobool21.8.1 = icmp ne i32 %xor.7.1, 0 88 %lor.ext.8.1 = zext i1 %tobool21.8.1 to i32 89 %xor.8.1 = xor i32 %xor.7.1, %lor.ext.8.1 90 %tobool21.245 = icmp ne i32 %xor.8.1, 0 91 %lor.ext.246 = zext i1 %tobool21.245 to i32 92 %xor.247 = xor i32 %xor.8.1, %lor.ext.246 93 %tobool21.1.2 = icmp ne i32 %xor.247, 0 94 %lor.ext.1.2 = zext i1 %tobool21.1.2 to i32 95 %xor.1.2 = xor i32 %xor.247, %lor.ext.1.2 96 %tobool21.2.2 = icmp ne i32 %xor.1.2, 0 97 %lor.ext.2.2 = zext i1 %tobool21.2.2 to i32 98 %xor.2.2 = xor i32 %xor.1.2, %lor.ext.2.2 99 %tobool21.3.2 = icmp ne i32 %xor.2.2, 0 100 %lor.ext.3.2 = zext i1 %tobool21.3.2 to i32 101 %xor.3.2 = xor i32 %xor.2.2, %lor.ext.3.2 102 %tobool21.4.2 = icmp ne i32 %xor.3.2, 0 103 %lor.ext.4.2 = zext i1 %tobool21.4.2 to i32 104 %xor.4.2 = xor i32 %xor.3.2, %lor.ext.4.2 105 %tobool21.5.2 = icmp ne i32 %xor.4.2, 0 106 %lor.ext.5.2 = zext i1 %tobool21.5.2 to i32 107 %xor.5.2 = xor i32 %xor.4.2, %lor.ext.5.2 108 %tobool21.6.2 = icmp ne i32 %xor.5.2, 0 109 %lor.ext.6.2 = zext i1 %tobool21.6.2 to i32 110 %xor.6.2 = xor i32 %xor.5.2, %lor.ext.6.2 111 %tobool21.7.2 = icmp ne i32 %xor.6.2, 0 112 %lor.ext.7.2 = zext i1 %tobool21.7.2 to i32 113 %xor.7.2 = xor i32 %xor.6.2, %lor.ext.7.2 114 %tobool21.8.2 = icmp ne i32 %xor.7.2, 0 115 %lor.ext.8.2 = zext i1 %tobool21.8.2 to i32 116 %xor.8.2 = xor i32 %xor.7.2, %lor.ext.8.2 117 %tobool21.348 = icmp ne i32 %xor.8.2, 0 118 %lor.ext.349 = zext i1 %tobool21.348 to i32 119 %xor.350 = xor i32 %xor.8.2, %lor.ext.349 120 %tobool21.1.3 = icmp ne i32 %xor.350, 0 121 %lor.ext.1.3 = zext i1 %tobool21.1.3 to i32 122 %xor.1.3 = xor i32 %xor.350, %lor.ext.1.3 123 %tobool21.2.3 = icmp ne i32 %xor.1.3, 0 124 %lor.ext.2.3 = zext i1 %tobool21.2.3 to i32 125 %xor.2.3 = xor i32 %xor.1.3, %lor.ext.2.3 126 %tobool21.3.3 = icmp ne i32 %xor.2.3, 0 127 %lor.ext.3.3 = zext i1 %tobool21.3.3 to i32 128 %xor.3.3 = xor i32 %xor.2.3, %lor.ext.3.3 129 %tobool21.4.3 = icmp ne i32 %xor.3.3, 0 130 %lor.ext.4.3 = zext i1 %tobool21.4.3 to i32 131 %xor.4.3 = xor i32 %xor.3.3, %lor.ext.4.3 132 %tobool21.5.3 = icmp ne i32 %xor.4.3, 0 133 %lor.ext.5.3 = zext i1 %tobool21.5.3 to i32 134 %xor.5.3 = xor i32 %xor.4.3, %lor.ext.5.3 135 %tobool21.6.3 = icmp ne i32 %xor.5.3, 0 136 %lor.ext.6.3 = zext i1 %tobool21.6.3 to i32 137 %xor.6.3 = xor i32 %xor.5.3, %lor.ext.6.3 138 %tobool21.7.3 = icmp ne i32 %xor.6.3, 0 139 %lor.ext.7.3 = zext i1 %tobool21.7.3 to i32 140 %xor.7.3 = xor i32 %xor.6.3, %lor.ext.7.3 141 %tobool21.8.3 = icmp ne i32 %xor.7.3, 0 142 %lor.ext.8.3 = zext i1 %tobool21.8.3 to i32 143 %xor.8.3 = xor i32 %xor.7.3, %lor.ext.8.3 144 %tobool21.451 = icmp ne i32 %xor.8.3, 0 145 %lor.ext.452 = zext i1 %tobool21.451 to i32 146 %xor.453 = xor i32 %xor.8.3, %lor.ext.452 147 %tobool21.1.4 = icmp ne i32 %xor.453, 0 148 %lor.ext.1.4 = zext i1 %tobool21.1.4 to i32 149 %xor.1.4 = xor i32 %xor.453, %lor.ext.1.4 150 %tobool21.2.4 = icmp ne i32 %xor.1.4, 0 151 %lor.ext.2.4 = zext i1 %tobool21.2.4 to i32 152 %xor.2.4 = xor i32 %xor.1.4, %lor.ext.2.4 153 %tobool21.3.4 = icmp ne i32 %xor.2.4, 0 154 %lor.ext.3.4 = zext i1 %tobool21.3.4 to i32 155 %xor.3.4 = xor i32 %xor.2.4, %lor.ext.3.4 156 %tobool21.4.4 = icmp ne i32 %xor.3.4, 0 157 %lor.ext.4.4 = zext i1 %tobool21.4.4 to i32 158 %xor.4.4 = xor i32 %xor.3.4, %lor.ext.4.4 159 %tobool21.5.4 = icmp ne i32 %xor.4.4, 0 160 %lor.ext.5.4 = zext i1 %tobool21.5.4 to i32 161 %xor.5.4 = xor i32 %xor.4.4, %lor.ext.5.4 162 %tobool21.6.4 = icmp ne i32 %xor.5.4, 0 163 %lor.ext.6.4 = zext i1 %tobool21.6.4 to i32 164 %xor.6.4 = xor i32 %xor.5.4, %lor.ext.6.4 165 %tobool21.7.4 = icmp ne i32 %xor.6.4, 0 166 %lor.ext.7.4 = zext i1 %tobool21.7.4 to i32 167 %xor.7.4 = xor i32 %xor.6.4, %lor.ext.7.4 168 %tobool21.8.4 = icmp ne i32 %xor.7.4, 0 169 %lor.ext.8.4 = zext i1 %tobool21.8.4 to i32 170 %xor.8.4 = xor i32 %xor.7.4, %lor.ext.8.4 171 %tobool21.554 = icmp ne i32 %xor.8.4, 0 172 %lor.ext.555 = zext i1 %tobool21.554 to i32 173 %xor.556 = xor i32 %xor.8.4, %lor.ext.555 174 %tobool21.1.5 = icmp ne i32 %xor.556, 0 175 %lor.ext.1.5 = zext i1 %tobool21.1.5 to i32 176 %xor.1.5 = xor i32 %xor.556, %lor.ext.1.5 177 %tobool21.2.5 = icmp ne i32 %xor.1.5, 0 178 %lor.ext.2.5 = zext i1 %tobool21.2.5 to i32 179 %xor.2.5 = xor i32 %xor.1.5, %lor.ext.2.5 180 %tobool21.3.5 = icmp ne i32 %xor.2.5, 0 181 %lor.ext.3.5 = zext i1 %tobool21.3.5 to i32 182 %xor.3.5 = xor i32 %xor.2.5, %lor.ext.3.5 183 %tobool21.4.5 = icmp ne i32 %xor.3.5, 0 184 %lor.ext.4.5 = zext i1 %tobool21.4.5 to i32 185 %xor.4.5 = xor i32 %xor.3.5, %lor.ext.4.5 186 %tobool21.5.5 = icmp ne i32 %xor.4.5, 0 187 %lor.ext.5.5 = zext i1 %tobool21.5.5 to i32 188 %xor.5.5 = xor i32 %xor.4.5, %lor.ext.5.5 189 %tobool21.6.5 = icmp ne i32 %xor.5.5, 0 190 %lor.ext.6.5 = zext i1 %tobool21.6.5 to i32 191 %xor.6.5 = xor i32 %xor.5.5, %lor.ext.6.5 192 %tobool21.7.5 = icmp ne i32 %xor.6.5, 0 193 %lor.ext.7.5 = zext i1 %tobool21.7.5 to i32 194 %xor.7.5 = xor i32 %xor.6.5, %lor.ext.7.5 195 %tobool21.8.5 = icmp ne i32 %xor.7.5, 0 196 %lor.ext.8.5 = zext i1 %tobool21.8.5 to i32 197 %xor.8.5 = xor i32 %xor.7.5, %lor.ext.8.5 198 %tobool21.657 = icmp ne i32 %xor.8.5, 0 199 %lor.ext.658 = zext i1 %tobool21.657 to i32 200 %xor.659 = xor i32 %xor.8.5, %lor.ext.658 201 %tobool21.1.6 = icmp ne i32 %xor.659, 0 202 %lor.ext.1.6 = zext i1 %tobool21.1.6 to i32 203 %xor.1.6 = xor i32 %xor.659, %lor.ext.1.6 204 %tobool21.2.6 = icmp ne i32 %xor.1.6, 0 205 %lor.ext.2.6 = zext i1 %tobool21.2.6 to i32 206 %xor.2.6 = xor i32 %xor.1.6, %lor.ext.2.6 207 %tobool21.3.6 = icmp ne i32 %xor.2.6, 0 208 %lor.ext.3.6 = zext i1 %tobool21.3.6 to i32 209 %xor.3.6 = xor i32 %xor.2.6, %lor.ext.3.6 210 %tobool21.4.6 = icmp ne i32 %xor.3.6, 0 211 %lor.ext.4.6 = zext i1 %tobool21.4.6 to i32 212 %xor.4.6 = xor i32 %xor.3.6, %lor.ext.4.6 213 %tobool21.5.6 = icmp ne i32 %xor.4.6, 0 214 %lor.ext.5.6 = zext i1 %tobool21.5.6 to i32 215 %xor.5.6 = xor i32 %xor.4.6, %lor.ext.5.6 216 %tobool21.6.6 = icmp ne i32 %xor.5.6, 0 217 %lor.ext.6.6 = zext i1 %tobool21.6.6 to i32 218 %xor.6.6 = xor i32 %xor.5.6, %lor.ext.6.6 219 %tobool21.7.6 = icmp ne i32 %xor.6.6, 0 220 %lor.ext.7.6 = zext i1 %tobool21.7.6 to i32 221 %xor.7.6 = xor i32 %xor.6.6, %lor.ext.7.6 222 %tobool21.8.6 = icmp ne i32 %xor.7.6, 0 223 %lor.ext.8.6 = zext i1 %tobool21.8.6 to i32 224 %xor.8.6 = xor i32 %xor.7.6, %lor.ext.8.6 225 %tobool21.760 = icmp ne i32 %xor.8.6, 0 226 %lor.ext.761 = zext i1 %tobool21.760 to i32 227 %xor.762 = xor i32 %xor.8.6, %lor.ext.761 228 %tobool21.1.7 = icmp ne i32 %xor.762, 0 229 %lor.ext.1.7 = zext i1 %tobool21.1.7 to i32 230 %xor.1.7 = xor i32 %xor.762, %lor.ext.1.7 231 %tobool21.2.7 = icmp ne i32 %xor.1.7, 0 232 %lor.ext.2.7 = zext i1 %tobool21.2.7 to i32 233 %xor.2.7 = xor i32 %xor.1.7, %lor.ext.2.7 234 %tobool21.3.7 = icmp ne i32 %xor.2.7, 0 235 %lor.ext.3.7 = zext i1 %tobool21.3.7 to i32 236 %xor.3.7 = xor i32 %xor.2.7, %lor.ext.3.7 237 %tobool21.4.7 = icmp ne i32 %xor.3.7, 0 238 %lor.ext.4.7 = zext i1 %tobool21.4.7 to i32 239 %xor.4.7 = xor i32 %xor.3.7, %lor.ext.4.7 240 %tobool21.5.7 = icmp ne i32 %xor.4.7, 0 241 %lor.ext.5.7 = zext i1 %tobool21.5.7 to i32 242 %xor.5.7 = xor i32 %xor.4.7, %lor.ext.5.7 243 %tobool21.6.7 = icmp ne i32 %xor.5.7, 0 244 %lor.ext.6.7 = zext i1 %tobool21.6.7 to i32 245 %xor.6.7 = xor i32 %xor.5.7, %lor.ext.6.7 246 %tobool21.7.7 = icmp ne i32 %xor.6.7, 0 247 %lor.ext.7.7 = zext i1 %tobool21.7.7 to i32 248 %xor.7.7 = xor i32 %xor.6.7, %lor.ext.7.7 249 %tobool21.8.7 = icmp ne i32 %xor.7.7, 0 250 %lor.ext.8.7 = zext i1 %tobool21.8.7 to i32 251 %xor.8.7 = xor i32 %xor.7.7, %lor.ext.8.7 252 %tobool21.863 = icmp ne i32 %xor.8.7, 0 253 %lor.ext.864 = zext i1 %tobool21.863 to i32 254 %xor.865 = xor i32 %xor.8.7, %lor.ext.864 255 %tobool21.1.8 = icmp ne i32 %xor.865, 0 256 %lor.ext.1.8 = zext i1 %tobool21.1.8 to i32 257 %xor.1.8 = xor i32 %xor.865, %lor.ext.1.8 258 %tobool21.2.8 = icmp ne i32 %xor.1.8, 0 259 %lor.ext.2.8 = zext i1 %tobool21.2.8 to i32 260 %xor.2.8 = xor i32 %xor.1.8, %lor.ext.2.8 261 %tobool21.3.8 = icmp ne i32 %xor.2.8, 0 262 %lor.ext.3.8 = zext i1 %tobool21.3.8 to i32 263 %xor.3.8 = xor i32 %xor.2.8, %lor.ext.3.8 264 %tobool21.4.8 = icmp ne i32 %xor.3.8, 0 265 %lor.ext.4.8 = zext i1 %tobool21.4.8 to i32 266 %xor.4.8 = xor i32 %xor.3.8, %lor.ext.4.8 267 %tobool21.5.8 = icmp ne i32 %xor.4.8, 0 268 %lor.ext.5.8 = zext i1 %tobool21.5.8 to i32 269 %xor.5.8 = xor i32 %xor.4.8, %lor.ext.5.8 270 %tobool21.6.8 = icmp ne i32 %xor.5.8, 0 271 %lor.ext.6.8 = zext i1 %tobool21.6.8 to i32 272 %xor.6.8 = xor i32 %xor.5.8, %lor.ext.6.8 273 %tobool21.7.8 = icmp ne i32 %xor.6.8, 0 274 %lor.ext.7.8 = zext i1 %tobool21.7.8 to i32 275 %xor.7.8 = xor i32 %xor.6.8, %lor.ext.7.8 276 %tobool21.8.8 = icmp ne i32 %xor.7.8, 0 277 %lor.ext.8.8 = zext i1 %tobool21.8.8 to i32 278 %xor.8.8 = xor i32 %xor.7.8, %lor.ext.8.8 279 %tobool21.9 = icmp ne i32 %xor.8.8, 0 280 %lor.ext.9 = zext i1 %tobool21.9 to i32 281 %xor.9 = xor i32 %xor.8.8, %lor.ext.9 282 %tobool21.1.9 = icmp ne i32 %xor.9, 0 283 %lor.ext.1.9 = zext i1 %tobool21.1.9 to i32 284 %xor.1.9 = xor i32 %xor.9, %lor.ext.1.9 285 %tobool21.2.9 = icmp ne i32 %xor.1.9, 0 286 %lor.ext.2.9 = zext i1 %tobool21.2.9 to i32 287 %xor.2.9 = xor i32 %xor.1.9, %lor.ext.2.9 288 %tobool21.3.9 = icmp ne i32 %xor.2.9, 0 289 %lor.ext.3.9 = zext i1 %tobool21.3.9 to i32 290 %xor.3.9 = xor i32 %xor.2.9, %lor.ext.3.9 291 %tobool21.4.9 = icmp ne i32 %xor.3.9, 0 292 %lor.ext.4.9 = zext i1 %tobool21.4.9 to i32 293 %xor.4.9 = xor i32 %xor.3.9, %lor.ext.4.9 294 %tobool21.5.9 = icmp ne i32 %xor.4.9, 0 295 %lor.ext.5.9 = zext i1 %tobool21.5.9 to i32 296 %xor.5.9 = xor i32 %xor.4.9, %lor.ext.5.9 297 %tobool21.6.9 = icmp ne i32 %xor.5.9, 0 298 %lor.ext.6.9 = zext i1 %tobool21.6.9 to i32 299 %xor.6.9 = xor i32 %xor.5.9, %lor.ext.6.9 300 %tobool21.7.9 = icmp ne i32 %xor.6.9, 0 301 %lor.ext.7.9 = zext i1 %tobool21.7.9 to i32 302 %xor.7.9 = xor i32 %xor.6.9, %lor.ext.7.9 303 %tobool21.8.9 = icmp ne i32 %xor.7.9, 0 304 %lor.ext.8.9 = zext i1 %tobool21.8.9 to i32 305 %xor.8.9 = xor i32 %xor.7.9, %lor.ext.8.9 306 store i32 10, ptr @f, align 4, !tbaa !1 307 %2 = load i32, ptr @a, align 4, !tbaa !1 308 %tobool = icmp eq i32 %2, 0 309 br i1 %tobool, label %for.cond.for.end27_crit_edge, label %for.cond1.preheader 310 311for.cond4.preheader: ; preds = %for.cond1.preheader, %for.cond4.preheader 312 %j.035 = phi i32 [ 9, %for.cond1.preheader ], [ %dec11, %for.cond4.preheader ] 313 %3 = load i8, ptr @b, align 1, !tbaa !7 314 %conv = zext i8 %3 to i32 315 %cmp = icmp sgt i32 %i.addr.041, %conv 316 %conv7 = zext i1 %cmp to i32 317 store i32 %conv7, ptr %1, align 4, !tbaa !1 318 %4 = load i8, ptr @b, align 1, !tbaa !7 319 %conv.1 = zext i8 %4 to i32 320 %cmp.1 = icmp sgt i32 %i.addr.041, %conv.1 321 %conv7.1 = zext i1 %cmp.1 to i32 322 store i32 %conv7.1, ptr %1, align 4, !tbaa !1 323 %5 = load i8, ptr @b, align 1, !tbaa !7 324 %conv.2 = zext i8 %5 to i32 325 %cmp.2 = icmp sgt i32 %i.addr.041, %conv.2 326 %conv7.2 = zext i1 %cmp.2 to i32 327 store i32 %conv7.2, ptr %1, align 4, !tbaa !1 328 %6 = load i8, ptr @b, align 1, !tbaa !7 329 %conv.3 = zext i8 %6 to i32 330 %cmp.3 = icmp sgt i32 %i.addr.041, %conv.3 331 %conv7.3 = zext i1 %cmp.3 to i32 332 store i32 %conv7.3, ptr %1, align 4, !tbaa !1 333 %7 = load i8, ptr @b, align 1, !tbaa !7 334 %conv.4 = zext i8 %7 to i32 335 %cmp.4 = icmp sgt i32 %i.addr.041, %conv.4 336 %conv7.4 = zext i1 %cmp.4 to i32 337 store i32 %conv7.4, ptr %1, align 4, !tbaa !1 338 %8 = load i8, ptr @b, align 1, !tbaa !7 339 %conv.5 = zext i8 %8 to i32 340 %cmp.5 = icmp sgt i32 %i.addr.041, %conv.5 341 %conv7.5 = zext i1 %cmp.5 to i32 342 store i32 %conv7.5, ptr %1, align 4, !tbaa !1 343 %9 = load i8, ptr @b, align 1, !tbaa !7 344 %conv.6 = zext i8 %9 to i32 345 %cmp.6 = icmp sgt i32 %i.addr.041, %conv.6 346 %conv7.6 = zext i1 %cmp.6 to i32 347 store i32 %conv7.6, ptr %1, align 4, !tbaa !1 348 %10 = load i8, ptr @b, align 1, !tbaa !7 349 %conv.7 = zext i8 %10 to i32 350 %cmp.7 = icmp sgt i32 %i.addr.041, %conv.7 351 %conv7.7 = zext i1 %cmp.7 to i32 352 store i32 %conv7.7, ptr %1, align 4, !tbaa !1 353 %11 = load i8, ptr @b, align 1, !tbaa !7 354 %conv.8 = zext i8 %11 to i32 355 %cmp.8 = icmp sgt i32 %i.addr.041, %conv.8 356 %conv7.8 = zext i1 %cmp.8 to i32 357 store i32 %conv7.8, ptr %1, align 4, !tbaa !1 358 %dec11 = add nsw i32 %j.035, -1 359 %tobool2 = icmp eq i32 %dec11, 0 360 br i1 %tobool2, label %for.cond13.preheader, label %for.cond4.preheader 361 362for.cond.for.end27_crit_edge: ; preds = %for.cond13.preheader 363 %conv8.le.le = zext i1 %cmp.8 to i64 364 store i64 %conv8.le.le, ptr @e, align 8, !tbaa !8 365 store i64 10, ptr @g, align 8, !tbaa !8 366 br label %for.end27 367 368for.end27: ; preds = %for.cond.for.end27_crit_edge, %entry 369 ret void 370} 371 372!1 = !{!2, !2, i64 0} 373!2 = !{!"int", !3, i64 0} 374!3 = !{!"omnipotent char", !4, i64 0} 375!4 = !{!"Simple C/C++ TBAA"} 376!5 = !{!6, !6, i64 0} 377!6 = !{!"any pointer", !3, i64 0} 378!7 = !{!3, !3, i64 0} 379!8 = !{!9, !9, i64 0} 380!9 = !{!"long", !3, i64 0} 381