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