; 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} ;.