[docs] Add LICENSE.txt to the root of the mono-repo
[llvm-project.git] / llvm / test / CodeGen / X86 / tailcallpic3.ll
blobedc58052d82f68b62ba2ed1a16400d0175897ebf
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
4 ; early binding.
6 declare void @external()
8 define hidden void @tailcallee_hidden() {
9 entry:
10   ret void
13 define void @tailcall_hidden() {
14 entry:
15   tail call void @tailcallee_hidden()
16   ret void
18 ; CHECK: tailcall_hidden:
19 ; CHECK: jmp tailcallee_hidden
21 define internal void @tailcallee_internal() {
22 entry:
23   ret void
26 define void @tailcall_internal() {
27 entry:
28   tail call void @tailcallee_internal()
29   ret void
31 ; CHECK: tailcall_internal:
32 ; CHECK: jmp tailcallee_internal
34 define default void @tailcallee_default() {
35 entry:
36   ret void
39 define void @tailcall_default() {
40 entry:
41   tail call void @tailcallee_default()
42   ret void
44 ; CHECK: tailcall_default:
45 ; CHECK: calll tailcallee_default@PLT
47 define void @tailcallee_default_implicit() {
48 entry:
49   ret void
52 define void @tailcall_default_implicit() {
53 entry:
54   tail call void @tailcallee_default_implicit()
55   ret void
57 ; CHECK: tailcall_default_implicit:
58 ; CHECK: calll tailcallee_default_implicit@PLT
60 define void @tailcall_external() {
61   tail call void @external()
62   ret void
64 ; CHECK: tailcall_external:
65 ; CHECK: calll external@PLT
67 define void @musttail_external() {
68   musttail call void @external()
69   ret void
71 ; CHECK: musttail_external:
72 ; CHECK: movl external@GOT
73 ; CHECK: jmpl