Tests: rewrite 'opt ... %s' to 'opt ... < %s' so that opt does not emit a ModuleID
[oota-llvm.git] / test / Transforms / TailCallElim / dup_tail.ll
1 ; Duplicate the return into if.end to enable TCE.
2 ; RUN: opt -tailcallelim -stats -disable-output < %s 2>&1 | FileCheck %s
3
4 ; CHECK: Number of return duplicated
5
6 define i32 @fib(i32 %n) nounwind ssp {
7 entry:
8   %cmp = icmp slt i32 %n, 2
9   br i1 %cmp, label %if.then, label %if.end
10
11 if.then:                                          ; preds = %entry
12   br label %return
13
14 if.end:                                           ; preds = %entry
15   %sub = add nsw i32 %n, -2
16   %call = call i32 @fib(i32 %sub)
17   %sub3 = add nsw i32 %n, -1
18   %call4 = call i32 @fib(i32 %sub3)
19   %add = add nsw i32 %call, %call4
20   br label %return
21
22 return:                                           ; preds = %if.end, %if.then
23   %retval.0 = phi i32 [ 1, %if.then ], [ %add, %if.end ]
24   ret i32 %retval.0
25 }