1*2e6deb1dSSjoerd Meijer; RUN: opt < %s -passes='print<loop-cache-cost>' -disable-output 2>&1 | FileCheck %s 2*2e6deb1dSSjoerd Meijer 3*2e6deb1dSSjoerd Meijer; For a loop with a very large iteration count, make sure the cost 4*2e6deb1dSSjoerd Meijer; calculation does not overflow: 5*2e6deb1dSSjoerd Meijer; 6*2e6deb1dSSjoerd Meijer; void a(int b) { 7*2e6deb1dSSjoerd Meijer; for (int c;; c += b) 8*2e6deb1dSSjoerd Meijer; for (long d = 0; d < -3ULL; d += 2ULL) 9*2e6deb1dSSjoerd Meijer; A[c][d][d] = 0; 10*2e6deb1dSSjoerd Meijer; } 11*2e6deb1dSSjoerd Meijer 12*2e6deb1dSSjoerd Meijer; CHECK: Loop 'outer.loop' has cost = 9223372036854775807 13*2e6deb1dSSjoerd Meijer; CHECK: Loop 'inner.loop' has cost = 9223372036854775807 14*2e6deb1dSSjoerd Meijer 15*2e6deb1dSSjoerd Meijer@A = local_unnamed_addr global [11 x [11 x [11 x i32]]] zeroinitializer, align 16 16*2e6deb1dSSjoerd Meijer 17*2e6deb1dSSjoerd Meijerdefine void @foo(i32 noundef %b) { 18*2e6deb1dSSjoerd Meijerentry: 19*2e6deb1dSSjoerd Meijer %0 = sext i32 %b to i64 20*2e6deb1dSSjoerd Meijer br label %outer.loop 21*2e6deb1dSSjoerd Meijer 22*2e6deb1dSSjoerd Meijerouter.loop: 23*2e6deb1dSSjoerd Meijer %indvars.iv = phi i64 [ %indvars.iv.next, %outer.loop.cleanup ], [ 0, %entry ] 24*2e6deb1dSSjoerd Meijer br label %inner.loop 25*2e6deb1dSSjoerd Meijer 26*2e6deb1dSSjoerd Meijerouter.loop.cleanup: 27*2e6deb1dSSjoerd Meijer %indvars.iv.next = add nsw i64 %indvars.iv, %0 28*2e6deb1dSSjoerd Meijer br label %outer.loop 29*2e6deb1dSSjoerd Meijer 30*2e6deb1dSSjoerd Meijerinner.loop: 31*2e6deb1dSSjoerd Meijer %inner.iv = phi i64 [ 0, %outer.loop ], [ %add, %inner.loop ] 32*2e6deb1dSSjoerd Meijer %arrayidx3 = getelementptr inbounds [11 x [11 x [11 x i32]]], ptr @A, i64 0, i64 %indvars.iv, i64 %inner.iv, i64 %inner.iv 33*2e6deb1dSSjoerd Meijer store i32 0, ptr %arrayidx3, align 4 34*2e6deb1dSSjoerd Meijer %add = add nuw i64 %inner.iv, 2 35*2e6deb1dSSjoerd Meijer %cmp = icmp ult i64 %inner.iv, -5 36*2e6deb1dSSjoerd Meijer br i1 %cmp, label %inner.loop, label %outer.loop.cleanup 37*2e6deb1dSSjoerd Meijer} 38