1; RUN: opt < %s -S -loop-unroll -unroll-allow-partial | FileCheck %s 2; Loop size = 3, when the function has the optsize attribute, the 3; OptSizeUnrollThreshold, i.e. 50, is used, hence the loop should be unrolled 4; by 32 times because (1 * 32) + 2 < 50 (whereas (1 * 64 + 2) is not). 5define void @unroll_opt_for_size() nounwind optsize { 6entry: 7 br label %loop 8 9loop: 10 %iv = phi i32 [ 0, %entry ], [ %inc, %loop ] 11 %inc = add i32 %iv, 1 12 %exitcnd = icmp uge i32 %inc, 1024 13 br i1 %exitcnd, label %exit, label %loop 14 15exit: 16 ret void 17} 18 19; CHECK: add 20; CHECK-NEXT: add 21; CHECK-NEXT: add 22; CHECK-NEXT: add 23; CHECK-NEXT: add 24; CHECK-NEXT: add 25; CHECK-NEXT: add 26; CHECK-NEXT: add 27; CHECK-NEXT: add 28; CHECK-NEXT: add 29; CHECK-NEXT: add 30; CHECK-NEXT: add 31; CHECK-NEXT: add 32; CHECK-NEXT: add 33; CHECK-NEXT: add 34; CHECK-NEXT: add 35; CHECK-NEXT: add 36; CHECK-NEXT: add 37; CHECK-NEXT: add 38; CHECK-NEXT: add 39; CHECK-NEXT: add 40; CHECK-NEXT: add 41; CHECK-NEXT: add 42; CHECK-NEXT: add 43; CHECK-NEXT: add 44; CHECK-NEXT: add 45; CHECK-NEXT: add 46; CHECK-NEXT: add 47; CHECK-NEXT: add 48; CHECK-NEXT: add 49; CHECK-NEXT: add 50; CHECK-NEXT: add 51; CHECK-NEXT: icmp 52 53