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