1 ; RUN: opt %s -tailcallelim -S | FileCheck %s
3 define i64 @fib(i64 %n) nounwind readnone {
7 ; CHECK: %accumulator.tr = phi i64 [ %n, %entry ], [ %3, %bb1 ]
8 ; CHECK: %n.tr = phi i64 [ %n, %entry ], [ %2, %bb1 ]
9 switch i64 %n, label %bb1 [
10 ; CHECK: switch i64 %n.tr, label %bb1 [
18 ; CHECK: %0 = add i64 %n.tr, -1
19 %1 = tail call i64 @fib(i64 %0) nounwind
20 ; CHECK: %1 = tail call i64 @fib(i64 %0)
22 ; CHECK: %2 = add i64 %n.tr, -2
23 %3 = tail call i64 @fib(i64 %2) nounwind
24 ; CHECK-NOT: tail call i64 @fib
25 %4 = add nsw i64 %3, %1
26 ; CHECK: add nsw i64 %accumulator.tr, %1
28 ; CHECK: br label %tailrecurse
33 ; CHECK: ret i64 %accumulator.tr