brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.4 KiB · edc5805 Raw
74 lines · plain
1; RUN: llc < %s -mtriple=i686-pc-linux-gnu -relocation-model=pic | FileCheck %s2 3; While many of these could be tail called, we don't do it because it forces4; early binding.5 6declare void @external()7 8define hidden void @tailcallee_hidden() {9entry:10  ret void11}12 13define void @tailcall_hidden() {14entry:15  tail call void @tailcallee_hidden()16  ret void17}18; CHECK: tailcall_hidden:19; CHECK: jmp tailcallee_hidden20 21define internal void @tailcallee_internal() {22entry:23  ret void24}25 26define void @tailcall_internal() {27entry:28  tail call void @tailcallee_internal()29  ret void30}31; CHECK: tailcall_internal:32; CHECK: jmp tailcallee_internal33 34define default void @tailcallee_default() {35entry:36  ret void37}38 39define void @tailcall_default() {40entry:41  tail call void @tailcallee_default()42  ret void43}44; CHECK: tailcall_default:45; CHECK: calll tailcallee_default@PLT46 47define void @tailcallee_default_implicit() {48entry:49  ret void50}51 52define void @tailcall_default_implicit() {53entry:54  tail call void @tailcallee_default_implicit()55  ret void56}57; CHECK: tailcall_default_implicit:58; CHECK: calll tailcallee_default_implicit@PLT59 60define void @tailcall_external() {61  tail call void @external()62  ret void63}64; CHECK: tailcall_external:65; CHECK: calll external@PLT66 67define void @musttail_external() {68  musttail call void @external()69  ret void70}71; CHECK: musttail_external:72; CHECK: movl external@GOT73; CHECK: jmpl74