Home | History | Annotate | Download | only in TailCallElim
      1 ; RUN: opt < %s -tailcallelim -S | FileCheck %s
      2 
      3 ; Test that we don't tail call in a functions that calls returns_twice
      4 ; functions.
      5 
      6 declare void @bar()
      7 
      8 ; CHECK: foo1
      9 ; CHECK-NOT: tail call void @bar()
     10 
     11 define void @foo1(i32* %x) {
     12 bb:
     13   %tmp75 = tail call i32 @setjmp(i32* %x)
     14   call void @bar()
     15   ret void
     16 }
     17 
     18 declare i32 @setjmp(i32*)
     19 
     20 ; CHECK: foo2
     21 ; CHECK-NOT: tail call void @bar()
     22 
     23 define void @foo2(i32* %x) {
     24 bb:
     25   %tmp75 = tail call i32 @zed2(i32* %x)
     26   call void @bar()
     27   ret void
     28 }
     29 declare i32 @zed2(i32*) returns_twice
     30