381 lines · plain
1; RUN: opt -passes=loop-unroll-and-jam -allow-unroll-and-jam -unroll-and-jam-count=4 < %s -S | FileCheck %s2target 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 45@b = common dso_local local_unnamed_addr global i8 0, align 16@e = common dso_local local_unnamed_addr global i64 0, align 87@c = common dso_local local_unnamed_addr global ptr null, align 88@g = common dso_local local_unnamed_addr global i64 0, align 89@f = common dso_local local_unnamed_addr global i32 0, align 410 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: test114; CHECK: entry15; CHECK: for.cond1.preheader.lr.ph16; CHECK: for.cond1.preheader17; CHECK: for.cond13.preheader18; CHECK: for.cond4.preheader19; CHECK: for.cond.for.end27_crit_edge20; CHECK: for.end2721define dso_local void @test1(i32 %i) {22entry:23 %0 = load i32, ptr @a, align 4, !tbaa !124 %tobool40 = icmp eq i32 %0, 025 br i1 %tobool40, label %for.end27, label %for.cond1.preheader.lr.ph26 27for.cond1.preheader.lr.ph: ; preds = %entry28 %1 = load ptr, ptr @c, align 8, !tbaa !529 br label %for.cond1.preheader30 31for.cond1.preheader: ; preds = %for.cond1.preheader.lr.ph, %for.cond13.preheader32 %i.addr.041 = phi i32 [ %i, %for.cond1.preheader.lr.ph ], [ %xor.8.9, %for.cond13.preheader ]33 br label %for.cond4.preheader34 35for.cond13.preheader: ; preds = %for.cond4.preheader36 %tobool21 = icmp ne i32 %i.addr.041, 037 %lor.ext = zext i1 %tobool21 to i3238 %xor = xor i32 %i.addr.041, %lor.ext39 %tobool21.1 = icmp ne i32 %xor, 040 %lor.ext.1 = zext i1 %tobool21.1 to i3241 %xor.1 = xor i32 %xor, %lor.ext.142 %tobool21.2 = icmp ne i32 %xor.1, 043 %lor.ext.2 = zext i1 %tobool21.2 to i3244 %xor.2 = xor i32 %xor.1, %lor.ext.245 %tobool21.3 = icmp ne i32 %xor.2, 046 %lor.ext.3 = zext i1 %tobool21.3 to i3247 %xor.3 = xor i32 %xor.2, %lor.ext.348 %tobool21.4 = icmp ne i32 %xor.3, 049 %lor.ext.4 = zext i1 %tobool21.4 to i3250 %xor.4 = xor i32 %xor.3, %lor.ext.451 %tobool21.5 = icmp ne i32 %xor.4, 052 %lor.ext.5 = zext i1 %tobool21.5 to i3253 %xor.5 = xor i32 %xor.4, %lor.ext.554 %tobool21.6 = icmp ne i32 %xor.5, 055 %lor.ext.6 = zext i1 %tobool21.6 to i3256 %xor.6 = xor i32 %xor.5, %lor.ext.657 %tobool21.7 = icmp ne i32 %xor.6, 058 %lor.ext.7 = zext i1 %tobool21.7 to i3259 %xor.7 = xor i32 %xor.6, %lor.ext.760 %tobool21.8 = icmp ne i32 %xor.7, 061 %lor.ext.8 = zext i1 %tobool21.8 to i3262 %xor.8 = xor i32 %xor.7, %lor.ext.863 %tobool21.142 = icmp ne i32 %xor.8, 064 %lor.ext.143 = zext i1 %tobool21.142 to i3265 %xor.144 = xor i32 %xor.8, %lor.ext.14366 %tobool21.1.1 = icmp ne i32 %xor.144, 067 %lor.ext.1.1 = zext i1 %tobool21.1.1 to i3268 %xor.1.1 = xor i32 %xor.144, %lor.ext.1.169 %tobool21.2.1 = icmp ne i32 %xor.1.1, 070 %lor.ext.2.1 = zext i1 %tobool21.2.1 to i3271 %xor.2.1 = xor i32 %xor.1.1, %lor.ext.2.172 %tobool21.3.1 = icmp ne i32 %xor.2.1, 073 %lor.ext.3.1 = zext i1 %tobool21.3.1 to i3274 %xor.3.1 = xor i32 %xor.2.1, %lor.ext.3.175 %tobool21.4.1 = icmp ne i32 %xor.3.1, 076 %lor.ext.4.1 = zext i1 %tobool21.4.1 to i3277 %xor.4.1 = xor i32 %xor.3.1, %lor.ext.4.178 %tobool21.5.1 = icmp ne i32 %xor.4.1, 079 %lor.ext.5.1 = zext i1 %tobool21.5.1 to i3280 %xor.5.1 = xor i32 %xor.4.1, %lor.ext.5.181 %tobool21.6.1 = icmp ne i32 %xor.5.1, 082 %lor.ext.6.1 = zext i1 %tobool21.6.1 to i3283 %xor.6.1 = xor i32 %xor.5.1, %lor.ext.6.184 %tobool21.7.1 = icmp ne i32 %xor.6.1, 085 %lor.ext.7.1 = zext i1 %tobool21.7.1 to i3286 %xor.7.1 = xor i32 %xor.6.1, %lor.ext.7.187 %tobool21.8.1 = icmp ne i32 %xor.7.1, 088 %lor.ext.8.1 = zext i1 %tobool21.8.1 to i3289 %xor.8.1 = xor i32 %xor.7.1, %lor.ext.8.190 %tobool21.245 = icmp ne i32 %xor.8.1, 091 %lor.ext.246 = zext i1 %tobool21.245 to i3292 %xor.247 = xor i32 %xor.8.1, %lor.ext.24693 %tobool21.1.2 = icmp ne i32 %xor.247, 094 %lor.ext.1.2 = zext i1 %tobool21.1.2 to i3295 %xor.1.2 = xor i32 %xor.247, %lor.ext.1.296 %tobool21.2.2 = icmp ne i32 %xor.1.2, 097 %lor.ext.2.2 = zext i1 %tobool21.2.2 to i3298 %xor.2.2 = xor i32 %xor.1.2, %lor.ext.2.299 %tobool21.3.2 = icmp ne i32 %xor.2.2, 0100 %lor.ext.3.2 = zext i1 %tobool21.3.2 to i32101 %xor.3.2 = xor i32 %xor.2.2, %lor.ext.3.2102 %tobool21.4.2 = icmp ne i32 %xor.3.2, 0103 %lor.ext.4.2 = zext i1 %tobool21.4.2 to i32104 %xor.4.2 = xor i32 %xor.3.2, %lor.ext.4.2105 %tobool21.5.2 = icmp ne i32 %xor.4.2, 0106 %lor.ext.5.2 = zext i1 %tobool21.5.2 to i32107 %xor.5.2 = xor i32 %xor.4.2, %lor.ext.5.2108 %tobool21.6.2 = icmp ne i32 %xor.5.2, 0109 %lor.ext.6.2 = zext i1 %tobool21.6.2 to i32110 %xor.6.2 = xor i32 %xor.5.2, %lor.ext.6.2111 %tobool21.7.2 = icmp ne i32 %xor.6.2, 0112 %lor.ext.7.2 = zext i1 %tobool21.7.2 to i32113 %xor.7.2 = xor i32 %xor.6.2, %lor.ext.7.2114 %tobool21.8.2 = icmp ne i32 %xor.7.2, 0115 %lor.ext.8.2 = zext i1 %tobool21.8.2 to i32116 %xor.8.2 = xor i32 %xor.7.2, %lor.ext.8.2117 %tobool21.348 = icmp ne i32 %xor.8.2, 0118 %lor.ext.349 = zext i1 %tobool21.348 to i32119 %xor.350 = xor i32 %xor.8.2, %lor.ext.349120 %tobool21.1.3 = icmp ne i32 %xor.350, 0121 %lor.ext.1.3 = zext i1 %tobool21.1.3 to i32122 %xor.1.3 = xor i32 %xor.350, %lor.ext.1.3123 %tobool21.2.3 = icmp ne i32 %xor.1.3, 0124 %lor.ext.2.3 = zext i1 %tobool21.2.3 to i32125 %xor.2.3 = xor i32 %xor.1.3, %lor.ext.2.3126 %tobool21.3.3 = icmp ne i32 %xor.2.3, 0127 %lor.ext.3.3 = zext i1 %tobool21.3.3 to i32128 %xor.3.3 = xor i32 %xor.2.3, %lor.ext.3.3129 %tobool21.4.3 = icmp ne i32 %xor.3.3, 0130 %lor.ext.4.3 = zext i1 %tobool21.4.3 to i32131 %xor.4.3 = xor i32 %xor.3.3, %lor.ext.4.3132 %tobool21.5.3 = icmp ne i32 %xor.4.3, 0133 %lor.ext.5.3 = zext i1 %tobool21.5.3 to i32134 %xor.5.3 = xor i32 %xor.4.3, %lor.ext.5.3135 %tobool21.6.3 = icmp ne i32 %xor.5.3, 0136 %lor.ext.6.3 = zext i1 %tobool21.6.3 to i32137 %xor.6.3 = xor i32 %xor.5.3, %lor.ext.6.3138 %tobool21.7.3 = icmp ne i32 %xor.6.3, 0139 %lor.ext.7.3 = zext i1 %tobool21.7.3 to i32140 %xor.7.3 = xor i32 %xor.6.3, %lor.ext.7.3141 %tobool21.8.3 = icmp ne i32 %xor.7.3, 0142 %lor.ext.8.3 = zext i1 %tobool21.8.3 to i32143 %xor.8.3 = xor i32 %xor.7.3, %lor.ext.8.3144 %tobool21.451 = icmp ne i32 %xor.8.3, 0145 %lor.ext.452 = zext i1 %tobool21.451 to i32146 %xor.453 = xor i32 %xor.8.3, %lor.ext.452147 %tobool21.1.4 = icmp ne i32 %xor.453, 0148 %lor.ext.1.4 = zext i1 %tobool21.1.4 to i32149 %xor.1.4 = xor i32 %xor.453, %lor.ext.1.4150 %tobool21.2.4 = icmp ne i32 %xor.1.4, 0151 %lor.ext.2.4 = zext i1 %tobool21.2.4 to i32152 %xor.2.4 = xor i32 %xor.1.4, %lor.ext.2.4153 %tobool21.3.4 = icmp ne i32 %xor.2.4, 0154 %lor.ext.3.4 = zext i1 %tobool21.3.4 to i32155 %xor.3.4 = xor i32 %xor.2.4, %lor.ext.3.4156 %tobool21.4.4 = icmp ne i32 %xor.3.4, 0157 %lor.ext.4.4 = zext i1 %tobool21.4.4 to i32158 %xor.4.4 = xor i32 %xor.3.4, %lor.ext.4.4159 %tobool21.5.4 = icmp ne i32 %xor.4.4, 0160 %lor.ext.5.4 = zext i1 %tobool21.5.4 to i32161 %xor.5.4 = xor i32 %xor.4.4, %lor.ext.5.4162 %tobool21.6.4 = icmp ne i32 %xor.5.4, 0163 %lor.ext.6.4 = zext i1 %tobool21.6.4 to i32164 %xor.6.4 = xor i32 %xor.5.4, %lor.ext.6.4165 %tobool21.7.4 = icmp ne i32 %xor.6.4, 0166 %lor.ext.7.4 = zext i1 %tobool21.7.4 to i32167 %xor.7.4 = xor i32 %xor.6.4, %lor.ext.7.4168 %tobool21.8.4 = icmp ne i32 %xor.7.4, 0169 %lor.ext.8.4 = zext i1 %tobool21.8.4 to i32170 %xor.8.4 = xor i32 %xor.7.4, %lor.ext.8.4171 %tobool21.554 = icmp ne i32 %xor.8.4, 0172 %lor.ext.555 = zext i1 %tobool21.554 to i32173 %xor.556 = xor i32 %xor.8.4, %lor.ext.555174 %tobool21.1.5 = icmp ne i32 %xor.556, 0175 %lor.ext.1.5 = zext i1 %tobool21.1.5 to i32176 %xor.1.5 = xor i32 %xor.556, %lor.ext.1.5177 %tobool21.2.5 = icmp ne i32 %xor.1.5, 0178 %lor.ext.2.5 = zext i1 %tobool21.2.5 to i32179 %xor.2.5 = xor i32 %xor.1.5, %lor.ext.2.5180 %tobool21.3.5 = icmp ne i32 %xor.2.5, 0181 %lor.ext.3.5 = zext i1 %tobool21.3.5 to i32182 %xor.3.5 = xor i32 %xor.2.5, %lor.ext.3.5183 %tobool21.4.5 = icmp ne i32 %xor.3.5, 0184 %lor.ext.4.5 = zext i1 %tobool21.4.5 to i32185 %xor.4.5 = xor i32 %xor.3.5, %lor.ext.4.5186 %tobool21.5.5 = icmp ne i32 %xor.4.5, 0187 %lor.ext.5.5 = zext i1 %tobool21.5.5 to i32188 %xor.5.5 = xor i32 %xor.4.5, %lor.ext.5.5189 %tobool21.6.5 = icmp ne i32 %xor.5.5, 0190 %lor.ext.6.5 = zext i1 %tobool21.6.5 to i32191 %xor.6.5 = xor i32 %xor.5.5, %lor.ext.6.5192 %tobool21.7.5 = icmp ne i32 %xor.6.5, 0193 %lor.ext.7.5 = zext i1 %tobool21.7.5 to i32194 %xor.7.5 = xor i32 %xor.6.5, %lor.ext.7.5195 %tobool21.8.5 = icmp ne i32 %xor.7.5, 0196 %lor.ext.8.5 = zext i1 %tobool21.8.5 to i32197 %xor.8.5 = xor i32 %xor.7.5, %lor.ext.8.5198 %tobool21.657 = icmp ne i32 %xor.8.5, 0199 %lor.ext.658 = zext i1 %tobool21.657 to i32200 %xor.659 = xor i32 %xor.8.5, %lor.ext.658201 %tobool21.1.6 = icmp ne i32 %xor.659, 0202 %lor.ext.1.6 = zext i1 %tobool21.1.6 to i32203 %xor.1.6 = xor i32 %xor.659, %lor.ext.1.6204 %tobool21.2.6 = icmp ne i32 %xor.1.6, 0205 %lor.ext.2.6 = zext i1 %tobool21.2.6 to i32206 %xor.2.6 = xor i32 %xor.1.6, %lor.ext.2.6207 %tobool21.3.6 = icmp ne i32 %xor.2.6, 0208 %lor.ext.3.6 = zext i1 %tobool21.3.6 to i32209 %xor.3.6 = xor i32 %xor.2.6, %lor.ext.3.6210 %tobool21.4.6 = icmp ne i32 %xor.3.6, 0211 %lor.ext.4.6 = zext i1 %tobool21.4.6 to i32212 %xor.4.6 = xor i32 %xor.3.6, %lor.ext.4.6213 %tobool21.5.6 = icmp ne i32 %xor.4.6, 0214 %lor.ext.5.6 = zext i1 %tobool21.5.6 to i32215 %xor.5.6 = xor i32 %xor.4.6, %lor.ext.5.6216 %tobool21.6.6 = icmp ne i32 %xor.5.6, 0217 %lor.ext.6.6 = zext i1 %tobool21.6.6 to i32218 %xor.6.6 = xor i32 %xor.5.6, %lor.ext.6.6219 %tobool21.7.6 = icmp ne i32 %xor.6.6, 0220 %lor.ext.7.6 = zext i1 %tobool21.7.6 to i32221 %xor.7.6 = xor i32 %xor.6.6, %lor.ext.7.6222 %tobool21.8.6 = icmp ne i32 %xor.7.6, 0223 %lor.ext.8.6 = zext i1 %tobool21.8.6 to i32224 %xor.8.6 = xor i32 %xor.7.6, %lor.ext.8.6225 %tobool21.760 = icmp ne i32 %xor.8.6, 0226 %lor.ext.761 = zext i1 %tobool21.760 to i32227 %xor.762 = xor i32 %xor.8.6, %lor.ext.761228 %tobool21.1.7 = icmp ne i32 %xor.762, 0229 %lor.ext.1.7 = zext i1 %tobool21.1.7 to i32230 %xor.1.7 = xor i32 %xor.762, %lor.ext.1.7231 %tobool21.2.7 = icmp ne i32 %xor.1.7, 0232 %lor.ext.2.7 = zext i1 %tobool21.2.7 to i32233 %xor.2.7 = xor i32 %xor.1.7, %lor.ext.2.7234 %tobool21.3.7 = icmp ne i32 %xor.2.7, 0235 %lor.ext.3.7 = zext i1 %tobool21.3.7 to i32236 %xor.3.7 = xor i32 %xor.2.7, %lor.ext.3.7237 %tobool21.4.7 = icmp ne i32 %xor.3.7, 0238 %lor.ext.4.7 = zext i1 %tobool21.4.7 to i32239 %xor.4.7 = xor i32 %xor.3.7, %lor.ext.4.7240 %tobool21.5.7 = icmp ne i32 %xor.4.7, 0241 %lor.ext.5.7 = zext i1 %tobool21.5.7 to i32242 %xor.5.7 = xor i32 %xor.4.7, %lor.ext.5.7243 %tobool21.6.7 = icmp ne i32 %xor.5.7, 0244 %lor.ext.6.7 = zext i1 %tobool21.6.7 to i32245 %xor.6.7 = xor i32 %xor.5.7, %lor.ext.6.7246 %tobool21.7.7 = icmp ne i32 %xor.6.7, 0247 %lor.ext.7.7 = zext i1 %tobool21.7.7 to i32248 %xor.7.7 = xor i32 %xor.6.7, %lor.ext.7.7249 %tobool21.8.7 = icmp ne i32 %xor.7.7, 0250 %lor.ext.8.7 = zext i1 %tobool21.8.7 to i32251 %xor.8.7 = xor i32 %xor.7.7, %lor.ext.8.7252 %tobool21.863 = icmp ne i32 %xor.8.7, 0253 %lor.ext.864 = zext i1 %tobool21.863 to i32254 %xor.865 = xor i32 %xor.8.7, %lor.ext.864255 %tobool21.1.8 = icmp ne i32 %xor.865, 0256 %lor.ext.1.8 = zext i1 %tobool21.1.8 to i32257 %xor.1.8 = xor i32 %xor.865, %lor.ext.1.8258 %tobool21.2.8 = icmp ne i32 %xor.1.8, 0259 %lor.ext.2.8 = zext i1 %tobool21.2.8 to i32260 %xor.2.8 = xor i32 %xor.1.8, %lor.ext.2.8261 %tobool21.3.8 = icmp ne i32 %xor.2.8, 0262 %lor.ext.3.8 = zext i1 %tobool21.3.8 to i32263 %xor.3.8 = xor i32 %xor.2.8, %lor.ext.3.8264 %tobool21.4.8 = icmp ne i32 %xor.3.8, 0265 %lor.ext.4.8 = zext i1 %tobool21.4.8 to i32266 %xor.4.8 = xor i32 %xor.3.8, %lor.ext.4.8267 %tobool21.5.8 = icmp ne i32 %xor.4.8, 0268 %lor.ext.5.8 = zext i1 %tobool21.5.8 to i32269 %xor.5.8 = xor i32 %xor.4.8, %lor.ext.5.8270 %tobool21.6.8 = icmp ne i32 %xor.5.8, 0271 %lor.ext.6.8 = zext i1 %tobool21.6.8 to i32272 %xor.6.8 = xor i32 %xor.5.8, %lor.ext.6.8273 %tobool21.7.8 = icmp ne i32 %xor.6.8, 0274 %lor.ext.7.8 = zext i1 %tobool21.7.8 to i32275 %xor.7.8 = xor i32 %xor.6.8, %lor.ext.7.8276 %tobool21.8.8 = icmp ne i32 %xor.7.8, 0277 %lor.ext.8.8 = zext i1 %tobool21.8.8 to i32278 %xor.8.8 = xor i32 %xor.7.8, %lor.ext.8.8279 %tobool21.9 = icmp ne i32 %xor.8.8, 0280 %lor.ext.9 = zext i1 %tobool21.9 to i32281 %xor.9 = xor i32 %xor.8.8, %lor.ext.9282 %tobool21.1.9 = icmp ne i32 %xor.9, 0283 %lor.ext.1.9 = zext i1 %tobool21.1.9 to i32284 %xor.1.9 = xor i32 %xor.9, %lor.ext.1.9285 %tobool21.2.9 = icmp ne i32 %xor.1.9, 0286 %lor.ext.2.9 = zext i1 %tobool21.2.9 to i32287 %xor.2.9 = xor i32 %xor.1.9, %lor.ext.2.9288 %tobool21.3.9 = icmp ne i32 %xor.2.9, 0289 %lor.ext.3.9 = zext i1 %tobool21.3.9 to i32290 %xor.3.9 = xor i32 %xor.2.9, %lor.ext.3.9291 %tobool21.4.9 = icmp ne i32 %xor.3.9, 0292 %lor.ext.4.9 = zext i1 %tobool21.4.9 to i32293 %xor.4.9 = xor i32 %xor.3.9, %lor.ext.4.9294 %tobool21.5.9 = icmp ne i32 %xor.4.9, 0295 %lor.ext.5.9 = zext i1 %tobool21.5.9 to i32296 %xor.5.9 = xor i32 %xor.4.9, %lor.ext.5.9297 %tobool21.6.9 = icmp ne i32 %xor.5.9, 0298 %lor.ext.6.9 = zext i1 %tobool21.6.9 to i32299 %xor.6.9 = xor i32 %xor.5.9, %lor.ext.6.9300 %tobool21.7.9 = icmp ne i32 %xor.6.9, 0301 %lor.ext.7.9 = zext i1 %tobool21.7.9 to i32302 %xor.7.9 = xor i32 %xor.6.9, %lor.ext.7.9303 %tobool21.8.9 = icmp ne i32 %xor.7.9, 0304 %lor.ext.8.9 = zext i1 %tobool21.8.9 to i32305 %xor.8.9 = xor i32 %xor.7.9, %lor.ext.8.9306 store i32 10, ptr @f, align 4, !tbaa !1307 %2 = load i32, ptr @a, align 4, !tbaa !1308 %tobool = icmp eq i32 %2, 0309 br i1 %tobool, label %for.cond.for.end27_crit_edge, label %for.cond1.preheader310 311for.cond4.preheader: ; preds = %for.cond1.preheader, %for.cond4.preheader312 %j.035 = phi i32 [ 9, %for.cond1.preheader ], [ %dec11, %for.cond4.preheader ]313 %3 = load i8, ptr @b, align 1, !tbaa !7314 %conv = zext i8 %3 to i32315 %cmp = icmp sgt i32 %i.addr.041, %conv316 %conv7 = zext i1 %cmp to i32317 store i32 %conv7, ptr %1, align 4, !tbaa !1318 %4 = load i8, ptr @b, align 1, !tbaa !7319 %conv.1 = zext i8 %4 to i32320 %cmp.1 = icmp sgt i32 %i.addr.041, %conv.1321 %conv7.1 = zext i1 %cmp.1 to i32322 store i32 %conv7.1, ptr %1, align 4, !tbaa !1323 %5 = load i8, ptr @b, align 1, !tbaa !7324 %conv.2 = zext i8 %5 to i32325 %cmp.2 = icmp sgt i32 %i.addr.041, %conv.2326 %conv7.2 = zext i1 %cmp.2 to i32327 store i32 %conv7.2, ptr %1, align 4, !tbaa !1328 %6 = load i8, ptr @b, align 1, !tbaa !7329 %conv.3 = zext i8 %6 to i32330 %cmp.3 = icmp sgt i32 %i.addr.041, %conv.3331 %conv7.3 = zext i1 %cmp.3 to i32332 store i32 %conv7.3, ptr %1, align 4, !tbaa !1333 %7 = load i8, ptr @b, align 1, !tbaa !7334 %conv.4 = zext i8 %7 to i32335 %cmp.4 = icmp sgt i32 %i.addr.041, %conv.4336 %conv7.4 = zext i1 %cmp.4 to i32337 store i32 %conv7.4, ptr %1, align 4, !tbaa !1338 %8 = load i8, ptr @b, align 1, !tbaa !7339 %conv.5 = zext i8 %8 to i32340 %cmp.5 = icmp sgt i32 %i.addr.041, %conv.5341 %conv7.5 = zext i1 %cmp.5 to i32342 store i32 %conv7.5, ptr %1, align 4, !tbaa !1343 %9 = load i8, ptr @b, align 1, !tbaa !7344 %conv.6 = zext i8 %9 to i32345 %cmp.6 = icmp sgt i32 %i.addr.041, %conv.6346 %conv7.6 = zext i1 %cmp.6 to i32347 store i32 %conv7.6, ptr %1, align 4, !tbaa !1348 %10 = load i8, ptr @b, align 1, !tbaa !7349 %conv.7 = zext i8 %10 to i32350 %cmp.7 = icmp sgt i32 %i.addr.041, %conv.7351 %conv7.7 = zext i1 %cmp.7 to i32352 store i32 %conv7.7, ptr %1, align 4, !tbaa !1353 %11 = load i8, ptr @b, align 1, !tbaa !7354 %conv.8 = zext i8 %11 to i32355 %cmp.8 = icmp sgt i32 %i.addr.041, %conv.8356 %conv7.8 = zext i1 %cmp.8 to i32357 store i32 %conv7.8, ptr %1, align 4, !tbaa !1358 %dec11 = add nsw i32 %j.035, -1359 %tobool2 = icmp eq i32 %dec11, 0360 br i1 %tobool2, label %for.cond13.preheader, label %for.cond4.preheader361 362for.cond.for.end27_crit_edge: ; preds = %for.cond13.preheader363 %conv8.le.le = zext i1 %cmp.8 to i64364 store i64 %conv8.le.le, ptr @e, align 8, !tbaa !8365 store i64 10, ptr @g, align 8, !tbaa !8366 br label %for.end27367 368for.end27: ; preds = %for.cond.for.end27_crit_edge, %entry369 ret void370}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