Home | History | Annotate | Download | only in TailCallElim
      1 ; RUN: opt < %s -tailcallelim -S | FileCheck %s
      2 
      3 ; Don't turn this into an infinite loop, this is probably the implementation
      4 ; of fabs and we expect the codegen to lower fabs.
      5 ; CHECK: @fabs(double %f)
      6 ; CHECK: call
      7 ; CHECK: ret
      8 
      9 define double @fabs(double %f) {
     10 entry:
     11         %tmp2 = call double @fabs( double %f )          ; <double> [#uses=1]
     12         ret double %tmp2
     13 }
     14 
     15 ; Do turn other calls into infinite loops though.
     16 
     17 ; CHECK-LABEL: define double @foo(
     18 ; CHECK-NOT: call
     19 ; CHECK: }
     20 define double @foo(double %f) {
     21         %t= call double @foo(double %f)
     22         ret double %t
     23 }
     24 
     25 ; CHECK-LABEL: define float @fabsf(
     26 ; CHECK-NOT: call
     27 ; CHECK: }
     28 define float @fabsf(float %f) {
     29         %t= call float @fabsf(float 2.0)
     30         ret float %t
     31 }
     32 
     33 declare x86_fp80 @fabsl(x86_fp80 %f)
     34