; RUN: opt -loop-unroll -S %s | FileCheck %s ; extern void f(int); ; void test1(int v) { ; for (int i=v; i<=v+1; ++i) ; f(i); ; } ; ; We can use the nsw information to see that the tripcount will be 2, so the ; loop should be unrolled as this is always beneficial declare void @f(i32) ; CHECK-LABEL: @test1 define void @test1(i32 %v) { entry: %add = add nsw i32 %v, 1 br label %for.body for.body: %i.04 = phi i32 [ %v, %entry ], [ %inc, %for.body ] tail call void @f(i32 %i.04) %inc = add nsw i32 %i.04, 1 %cmp = icmp slt i32 %i.04, %add br i1 %cmp, label %for.body, label %for.end ; CHECK: call void @f ; CHECK-NOT: br i1 ; CHECK: call void @f for.end: ret void }