1; RUN: opt %loadNPMPolly '-passes=print<polly-detect>,print<polly-function-scops>' -disable-output \ 2; RUN: < %s 2>&1 | FileCheck %s 3 4; CHECK-NOT: Assumed Context: 5target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128" 6 7%struct.hoge = type { i32, ptr, ptr, ptr, i32, ptr, ptr, i32, i32, ptr, i32, ptr, [6 x i32], i32, ptr, i32 } 8%struct.widget = type { i32, i32, ptr, ptr, ptr, i32, ptr, i32, i32, [3 x i32], i32 } 9%struct.quux = type { ptr, ptr, ptr, i32, i32, i32, ptr } 10%struct.hoge.0 = type { i32, ptr } 11%struct.barney = type { [3 x i32], [3 x i32] } 12%struct.ham = type { ptr, i32, i32, i32, i32 } 13%struct.wombat = type { ptr, i32, i32 } 14%struct.foo = type { i32, i32, i32, i32, ptr, ptr, ptr, ptr, ptr, ptr, ptr, ptr } 15%struct.wibble = type { ptr, i32 } 16%struct.foo.1 = type { [3 x i32], [3 x i32], i32, i32, [4 x i32], [4 x i32] } 17 18; Function Attrs: nounwind uwtable 19define void @hoge() #0 { 20bb: 21 %tmp52 = alloca ptr, align 8 22 %tmp53 = alloca ptr, align 8 23 %tmp54 = alloca ptr, align 8 24 %tmp55 = alloca ptr, align 8 25 br label %bb56 26 27bb56: ; preds = %bb 28 switch i32 undef, label %bb59 [ 29 i32 0, label %bb57 30 i32 1, label %bb58 31 ] 32 33bb57: ; preds = %bb56 34 unreachable 35 36bb58: ; preds = %bb56 37 unreachable 38 39bb59: ; preds = %bb56 40 %tmp = load ptr, ptr %tmp54, align 8, !tbaa !1 41 %tmp60 = getelementptr inbounds %struct.barney, ptr %tmp, i32 0, i32 1 42 %tmp62 = load i32, ptr %tmp60, align 4, !tbaa !5 43 %tmp63 = load ptr, ptr %tmp54, align 8, !tbaa !1 44 %tmp66 = sub nsw i32 %tmp62, 0 45 %tmp67 = add nsw i32 %tmp66, 1 46 %tmp68 = icmp slt i32 0, %tmp67 47 br i1 %tmp68, label %bb69, label %bb70 48 49bb69: ; preds = %bb59 50 br label %bb70 51 52bb70: ; preds = %bb69, %bb59 53 %tmp71 = load ptr, ptr %tmp54, align 8, !tbaa !1 54 %tmp72 = getelementptr inbounds %struct.barney, ptr %tmp71, i32 0, i32 1 55 %tmp73 = getelementptr inbounds [3 x i32], ptr %tmp72, i64 0, i64 1 56 %tmp74 = load i32, ptr %tmp73, align 4, !tbaa !5 57 %tmp75 = load ptr, ptr %tmp54, align 8, !tbaa !1 58 %tmp77 = getelementptr inbounds [3 x i32], ptr %tmp75, i64 0, i64 1 59 %tmp78 = sub nsw i32 %tmp74, 0 60 %tmp79 = add nsw i32 %tmp78, 1 61 %tmp80 = icmp slt i32 0, %tmp79 62 br i1 %tmp80, label %bb81, label %bb82 63 64bb81: ; preds = %bb70 65 br label %bb82 66 67bb82: ; preds = %bb81, %bb70 68 %tmp83 = load ptr, ptr %tmp54, align 8, !tbaa !1 69 %tmp84 = getelementptr inbounds %struct.barney, ptr %tmp83, i32 0, i32 1 70 %tmp86 = load i32, ptr %tmp84, align 4, !tbaa !5 71 %tmp87 = load ptr, ptr %tmp54, align 8, !tbaa !1 72 %tmp90 = sub nsw i32 %tmp86, 0 73 %tmp91 = add nsw i32 %tmp90, 1 74 %tmp92 = icmp slt i32 0, %tmp91 75 br i1 %tmp92, label %bb93, label %bb94 76 77bb93: ; preds = %bb82 78 br label %bb94 79 80bb94: ; preds = %bb93, %bb82 81 %tmp95 = load ptr, ptr %tmp54, align 8, !tbaa !1 82 %tmp96 = getelementptr inbounds %struct.barney, ptr %tmp95, i32 0, i32 1 83 %tmp98 = load i32, ptr %tmp96, align 4, !tbaa !5 84 %tmp99 = load ptr, ptr %tmp54, align 8, !tbaa !1 85 %tmp102 = sub nsw i32 %tmp98, 0 86 %tmp103 = add nsw i32 %tmp102, 1 87 %tmp104 = icmp slt i32 0, %tmp103 88 br i1 %tmp104, label %bb105, label %bb106 89 90bb105: ; preds = %bb94 91 br label %bb106 92 93bb106: ; preds = %bb105, %bb94 94 %tmp107 = load ptr, ptr %tmp53, align 8, !tbaa !1 95 %tmp108 = getelementptr inbounds %struct.barney, ptr %tmp107, i32 0, i32 1 96 %tmp109 = getelementptr inbounds [3 x i32], ptr %tmp108, i64 0, i64 1 97 %tmp110 = load i32, ptr %tmp109, align 4, !tbaa !5 98 %tmp111 = load ptr, ptr %tmp53, align 8, !tbaa !1 99 %tmp113 = getelementptr inbounds [3 x i32], ptr %tmp111, i64 0, i64 1 100 %tmp114 = sub nsw i32 %tmp110, 0 101 %tmp115 = add nsw i32 %tmp114, 1 102 %tmp116 = icmp slt i32 0, %tmp115 103 br i1 %tmp116, label %bb117, label %bb118 104 105bb117: ; preds = %bb106 106 br label %bb118 107 108bb118: ; preds = %bb117, %bb106 109 %tmp119 = load ptr, ptr %tmp53, align 8, !tbaa !1 110 %tmp120 = getelementptr inbounds %struct.barney, ptr %tmp119, i32 0, i32 1 111 %tmp122 = load i32, ptr %tmp120, align 4, !tbaa !5 112 %tmp123 = load ptr, ptr %tmp53, align 8, !tbaa !1 113 %tmp126 = sub nsw i32 %tmp122, 0 114 %tmp127 = add nsw i32 %tmp126, 1 115 %tmp128 = icmp slt i32 0, %tmp127 116 br i1 %tmp128, label %bb129, label %bb130 117 118bb129: ; preds = %bb118 119 br label %bb130 120 121bb130: ; preds = %bb129, %bb118 122 %tmp131 = load ptr, ptr %tmp54, align 8, !tbaa !1 123 %tmp132 = getelementptr inbounds %struct.barney, ptr %tmp131, i32 0, i32 1 124 %tmp134 = load i32, ptr %tmp132, align 4, !tbaa !5 125 %tmp135 = load ptr, ptr %tmp54, align 8, !tbaa !1 126 %tmp138 = sub nsw i32 %tmp134, 0 127 %tmp139 = add nsw i32 %tmp138, 1 128 %tmp140 = icmp slt i32 0, %tmp139 129 br i1 %tmp140, label %bb141, label %bb142 130 131bb141: ; preds = %bb130 132 br label %bb142 133 134bb142: ; preds = %bb141, %bb130 135 %tmp143 = load ptr, ptr %tmp55, align 8, !tbaa !1 136 %tmp144 = getelementptr inbounds %struct.barney, ptr %tmp143, i32 0, i32 1 137 %tmp146 = load i32, ptr %tmp144, align 4, !tbaa !5 138 %tmp147 = load ptr, ptr %tmp55, align 8, !tbaa !1 139 %tmp150 = sub nsw i32 %tmp146, 0 140 %tmp151 = add nsw i32 %tmp150, 1 141 %tmp152 = icmp slt i32 0, %tmp151 142 br i1 %tmp152, label %bb153, label %bb154 143 144bb153: ; preds = %bb142 145 br label %bb154 146 147bb154: ; preds = %bb153, %bb142 148 %tmp155 = load ptr, ptr %tmp53, align 8, !tbaa !1 149 %tmp156 = getelementptr inbounds %struct.barney, ptr %tmp155, i32 0, i32 1 150 %tmp158 = load i32, ptr %tmp156, align 4, !tbaa !5 151 %tmp159 = load ptr, ptr %tmp53, align 8, !tbaa !1 152 %tmp162 = load i32, ptr %tmp159, align 4, !tbaa !5 153 %tmp163 = sub nsw i32 %tmp158, %tmp162 154 %tmp164 = add nsw i32 %tmp163, 1 155 %tmp165 = icmp slt i32 0, %tmp164 156 br i1 %tmp165, label %bb166, label %bb167 157 158bb166: ; preds = %bb154 159 br label %bb167 160 161bb167: ; preds = %bb166, %bb154 162 %tmp168 = load ptr, ptr %tmp53, align 8, !tbaa !1 163 %tmp169 = getelementptr inbounds %struct.barney, ptr %tmp168, i32 0, i32 1 164 %tmp171 = load i32, ptr %tmp169, align 4, !tbaa !5 165 %tmp172 = load ptr, ptr %tmp53, align 8, !tbaa !1 166 %tmp175 = load i32, ptr %tmp172, align 4, !tbaa !5 167 %tmp176 = sub nsw i32 %tmp171, %tmp175 168 %tmp177 = add nsw i32 %tmp176, 1 169 %tmp178 = icmp slt i32 0, %tmp177 170 br i1 %tmp178, label %bb179, label %bb180 171 172bb179: ; preds = %bb167 173 br label %bb180 174 175bb180: ; preds = %bb179, %bb167 176 %tmp181 = load ptr, ptr %tmp53, align 8, !tbaa !1 177 %tmp182 = getelementptr inbounds %struct.barney, ptr %tmp181, i32 0, i32 1 178 %tmp183 = getelementptr inbounds [3 x i32], ptr %tmp182, i64 0, i64 1 179 %tmp184 = load i32, ptr %tmp183, align 4, !tbaa !5 180 %tmp185 = load ptr, ptr %tmp53, align 8, !tbaa !1 181 %tmp187 = getelementptr inbounds [3 x i32], ptr %tmp185, i64 0, i64 1 182 %tmp188 = load i32, ptr %tmp187, align 4, !tbaa !5 183 %tmp189 = sub nsw i32 %tmp184, %tmp188 184 %tmp190 = add nsw i32 %tmp189, 1 185 %tmp191 = icmp slt i32 0, %tmp190 186 br i1 %tmp191, label %bb192, label %bb193 187 188bb192: ; preds = %bb180 189 br label %bb193 190 191bb193: ; preds = %bb192, %bb180 192 %tmp194 = load ptr, ptr %tmp54, align 8, !tbaa !1 193 %tmp195 = getelementptr inbounds %struct.barney, ptr %tmp194, i32 0, i32 1 194 %tmp197 = load i32, ptr %tmp195, align 4, !tbaa !5 195 %tmp198 = load ptr, ptr %tmp54, align 8, !tbaa !1 196 %tmp201 = load i32, ptr %tmp198, align 4, !tbaa !5 197 %tmp202 = sub nsw i32 %tmp197, %tmp201 198 %tmp203 = add nsw i32 %tmp202, 1 199 %tmp204 = icmp slt i32 0, %tmp203 200 br i1 %tmp204, label %bb205, label %bb206 201 202bb205: ; preds = %bb193 203 br label %bb206 204 205bb206: ; preds = %bb205, %bb193 206 %tmp207 = load ptr, ptr %tmp54, align 8, !tbaa !1 207 %tmp208 = getelementptr inbounds %struct.barney, ptr %tmp207, i32 0, i32 1 208 %tmp210 = load i32, ptr %tmp208, align 4, !tbaa !5 209 %tmp211 = load ptr, ptr %tmp54, align 8, !tbaa !1 210 %tmp214 = load i32, ptr %tmp211, align 4, !tbaa !5 211 %tmp215 = sub nsw i32 %tmp210, %tmp214 212 %tmp216 = add nsw i32 %tmp215, 1 213 %tmp217 = icmp slt i32 0, %tmp216 214 br i1 %tmp217, label %bb218, label %bb219 215 216bb218: ; preds = %bb206 217 br label %bb219 218 219bb219: ; preds = %bb218, %bb206 220 %tmp220 = load ptr, ptr %tmp54, align 8, !tbaa !1 221 %tmp221 = getelementptr inbounds %struct.barney, ptr %tmp220, i32 0, i32 1 222 %tmp222 = getelementptr inbounds [3 x i32], ptr %tmp221, i64 0, i64 1 223 %tmp223 = load i32, ptr %tmp222, align 4, !tbaa !5 224 %tmp224 = load ptr, ptr %tmp54, align 8, !tbaa !1 225 %tmp226 = getelementptr inbounds [3 x i32], ptr %tmp224, i64 0, i64 1 226 %tmp227 = load i32, ptr %tmp226, align 4, !tbaa !5 227 %tmp228 = sub nsw i32 %tmp223, %tmp227 228 %tmp229 = add nsw i32 %tmp228, 1 229 %tmp230 = icmp slt i32 0, %tmp229 230 br i1 %tmp230, label %bb231, label %bb232 231 232bb231: ; preds = %bb219 233 br label %bb232 234 235bb232: ; preds = %bb231, %bb219 236 %tmp233 = load ptr, ptr %tmp55, align 8, !tbaa !1 237 %tmp234 = getelementptr inbounds %struct.barney, ptr %tmp233, i32 0, i32 1 238 %tmp236 = load i32, ptr %tmp234, align 4, !tbaa !5 239 %tmp237 = load ptr, ptr %tmp55, align 8, !tbaa !1 240 %tmp240 = load i32, ptr %tmp237, align 4, !tbaa !5 241 %tmp241 = sub nsw i32 %tmp236, %tmp240 242 %tmp242 = add nsw i32 %tmp241, 1 243 %tmp243 = icmp slt i32 0, %tmp242 244 br i1 %tmp243, label %bb244, label %bb245 245 246bb244: ; preds = %bb232 247 br label %bb245 248 249bb245: ; preds = %bb244, %bb232 250 unreachable 251} 252 253attributes #0 = { nounwind uwtable "disable-tail-calls"="false" "less-precise-fpmad"="false" "frame-pointer"="none" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="x86-64" "target-features"="+fxsr,+mmx,+sse,+sse2" "unsafe-fp-math"="false" "use-soft-float"="false" } 254 255!llvm.ident = !{!0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0, !0} 256 257!0 = !{!"clang version 3.8.0 (trunk 252261) (llvm/trunk 252271)"} 258!1 = !{!2, !2, i64 0} 259!2 = !{!"any pointer", !3, i64 0} 260!3 = !{!"omnipotent char", !4, i64 0} 261!4 = !{!"Simple C/C++ TBAA"} 262!5 = !{!6, !6, i64 0} 263!6 = !{!"int", !3, i64 0} 264