Home | History | Annotate | Download | only in X86
      1 ; RUN: llc -disable-tail-calls < %s | FileCheck --check-prefix=CALL %s
      2 ; RUN: llc < %s | FileCheck --check-prefix=JMP %s
      3 
      4 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
      5 target triple = "x86_64-unknown-linux-gnu"
      6 
      7 define i32 @helper() nounwind {
      8 entry:
      9   ret i32 7
     10 }
     11 
     12 define i32 @test1() nounwind {
     13 entry:
     14   %call = tail call i32 @helper()
     15   ret i32 %call
     16 }
     17 
     18 ; CALL-LABEL: test1:
     19 ; CALL-NOT: ret
     20 ; CALL: callq helper
     21 ; CALL: ret
     22 
     23 ; JMP-LABEL: test1:
     24 ; JMP-NOT: ret
     25 ; JMP: jmp helper # TAILCALL
     26 
     27 define i32 @test2() nounwind {
     28 entry:
     29   %call = tail call i32 @test2()
     30   ret i32 %call
     31 }
     32 
     33 ; CALL-LABEL: test2:
     34 ; CALL-NOT: ret
     35 ; CALL: callq test2
     36 ; CALL: ret
     37 
     38 ; JMP-LABEL: test2:
     39 ; JMP-NOT: ret
     40 ; JMP: jmp test2 # TAILCALL
     41