1 ; RUN: llc < %s -mtriple=i686-pc-linux-gnu -relocation-model=pic | FileCheck %s
3 ; While many of these could be tail called, we don't do it because it forces
6 declare void @external()
8 define hidden void @tailcallee_hidden() {
13 define void @tailcall_hidden() {
15 tail call void @tailcallee_hidden()
18 ; CHECK: tailcall_hidden:
19 ; CHECK: jmp tailcallee_hidden
21 define internal void @tailcallee_internal() {
26 define void @tailcall_internal() {
28 tail call void @tailcallee_internal()
31 ; CHECK: tailcall_internal:
32 ; CHECK: jmp tailcallee_internal
34 define default void @tailcallee_default() {
39 define void @tailcall_default() {
41 tail call void @tailcallee_default()
44 ; CHECK: tailcall_default:
45 ; CHECK: calll tailcallee_default@PLT
47 define void @tailcallee_default_implicit() {
52 define void @tailcall_default_implicit() {
54 tail call void @tailcallee_default_implicit()
57 ; CHECK: tailcall_default_implicit:
58 ; CHECK: calll tailcallee_default_implicit@PLT
60 define void @tailcall_external() {
61 tail call void @external()
64 ; CHECK: tailcall_external:
65 ; CHECK: calll external@PLT
67 define void @musttail_external() {
68 musttail call void @external()
71 ; CHECK: musttail_external:
72 ; CHECK: movl external@GOT