dup_tail.ll 794 B

1234567891011121314151617181920212223242526
  1. ; REQUIRES: asserts
  2. ; Duplicate the return into if.end to enable TCE.
  3. ; RUN: opt -tailcallelim -stats -disable-output < %s 2>&1 | FileCheck %s
  4. ; CHECK: Number of return duplicated
  5. define i32 @fib(i32 %n) nounwind ssp {
  6. entry:
  7. %cmp = icmp slt i32 %n, 2
  8. br i1 %cmp, label %if.then, label %if.end
  9. if.then: ; preds = %entry
  10. br label %return
  11. if.end: ; preds = %entry
  12. %sub = add nsw i32 %n, -2
  13. %call = call i32 @fib(i32 %sub)
  14. %sub3 = add nsw i32 %n, -1
  15. %call4 = call i32 @fib(i32 %sub3)
  16. %add = add nsw i32 %call, %call4
  17. br label %return
  18. return: ; preds = %if.end, %if.then
  19. %retval.0 = phi i32 [ 1, %if.then ], [ %add, %if.end ]
  20. ret i32 %retval.0
  21. }