Index: test/Transforms/LoopUnroll/unroll-optnone.ll =================================================================== --- test/Transforms/LoopUnroll/unroll-optnone.ll +++ test/Transforms/LoopUnroll/unroll-optnone.ll @@ -0,0 +1,22 @@ +; RUN: opt < %s -S -loop-unroll -unroll-count=4 | FileCheck %s + +; This test shows that with optnone attribute, the loop is not unrolled +; even if an unroll factor was specified. + +define void @unroll_optnone() nounwind optnone noinline { +entry: + br label %loop + +loop: + %iv = phi i32 [ 0, %entry ], [ %inc, %loop ] + %inc = add i32 %iv, 1 + %exitcnd = icmp uge i32 %inc, 1024 + br i1 %exitcnd, label %exit, label %loop + +exit: + ret void +} + +; CHECK: phi +; CHECK-NEXT: add +; CHECK-NEXT: icmp Index: test/Transforms/LoopUnroll/unroll-optsize1.ll =================================================================== --- test/Transforms/LoopUnroll/unroll-optsize1.ll +++ test/Transforms/LoopUnroll/unroll-optsize1.ll @@ -0,0 +1,25 @@ +; RUN: opt < %s -S -loop-unroll -unroll-count=4 | FileCheck %s + +; This test shows that with optsize attribute, the loop is unrolled +; according to the specified unroll factor. + +define void @unroll_optsize() nounwind optsize { +entry: + br label %loop + +loop: + %iv = phi i32 [ 0, %entry ], [ %inc, %loop ] + %inc = add i32 %iv, 1 + %exitcnd = icmp uge i32 %inc, 1024 + br i1 %exitcnd, label %exit, label %loop + +exit: + ret void +} + +; CHECK: phi +; CHECK-NEXT: add +; CHECK-NEXT: add +; CHECK-NEXT: add +; CHECK-NEXT: add +; CHECK-NEXT: icmp Index: test/Transforms/LoopUnroll/unroll-optsize2.ll =================================================================== --- test/Transforms/LoopUnroll/unroll-optsize2.ll +++ test/Transforms/LoopUnroll/unroll-optsize2.ll @@ -0,0 +1,21 @@ +; RUN: opt < %s -S -loop-unroll | FileCheck %s + +; This test shows that with optsize attribute, the loop is not unrolled. + +define void @unroll_optsize() nounwind optsize { +entry: + br label %loop + +loop: + %iv = phi i32 [ 0, %entry ], [ %inc, %loop ] + %inc = add i32 %iv, 1 + %exitcnd = icmp uge i32 %inc, 1024 + br i1 %exitcnd, label %exit, label %loop + +exit: + ret void +} + +; CHECK: phi +; CHECK-NEXT: add +; CHECK-NEXT: icmp