blob: 080f77ee720bc69a7746c09d13f28f6766be2001 [file] [edit]
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 6
; RUN: opt -passes=loop-unroll -S < %s | FileCheck %s
; llvm.loop.estimated_trip_count can't actually become a negative value.
; It must be treated as an unsigned all around.
; We are testing the overflow case of EstimatedTripCount + AlreadyPeeled
; e.g AlreadyPeeled == 1 and EstimatedTripCount == -1 (INT_MAX)
; would overflow the <= MaxPeelCount check and peel for a long time.
define void @PR173169() !prof !0 {
; CHECK-LABEL: define void @PR173169(
; CHECK-SAME: ) !prof [[PROF0:![0-9]+]] {
; CHECK-NEXT: [[ENTRY:.*:]]
; CHECK-NEXT: br label %[[LOOP:.*]]
; CHECK: [[LOOP]]:
; CHECK-NEXT: br i1 true, label %[[LOOP]], label %[[EXIT:.*]], !llvm.loop [[LOOP1:![0-9]+]]
; CHECK: [[EXIT]]:
; CHECK-NEXT: ret void
;
entry:
br label %loop
loop: ; preds = %loop, %entry
br i1 true, label %loop, label %exit, !llvm.loop !1
exit: ; preds = %loop
ret void
}
!0 = !{!"function_entry_count", i64 1000}
!1 = distinct !{!1, !2, !3}
!2 = !{!"llvm.loop.peeled.count", i32 1}
!3 = !{!"llvm.loop.estimated_trip_count", i32 -1}
;.
; CHECK: [[PROF0]] = !{!"function_entry_count", i64 1000}
; CHECK: [[LOOP1]] = distinct !{[[LOOP1]], [[META2:![0-9]+]], [[META3:![0-9]+]]}
; CHECK: [[META2]] = !{!"llvm.loop.peeled.count", i32 1}
; CHECK: [[META3]] = !{!"llvm.loop.estimated_trip_count", i32 -1}
;.