Link declaration lazily.
[oota-llvm.git] / test / Transforms / LoopUnroll / partial-unroll-optsize.ll
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).
5 define void @unroll_opt_for_size() nounwind optsize {
6 entry:
7   br label %loop
8
9 loop:
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
15 exit:
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