22; RUN: llc < %s -mtriple=x86_64-unknown-unknown | FileCheck %s -check-prefix=X64
33; RUN: llc < %s -mtriple=x86_64-windows-msvc | FileCheck %s -check-prefix=UEFI64
44; RUN: llc < %s -mtriple=x86_64-uefi | FileCheck %s -check-prefix=UEFI64
5- ; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s -check-prefix=X32
5+ ; RUN: llc < %s -mtriple=i686-unknown-unknown | FileCheck %s -check-prefix=X86
66
77; With -tailcallopt, CodeGen guarantees a tail call optimization
88; for all of these.
@@ -26,15 +26,15 @@ define dso_local tailcc i32 @tailcaller(i32 %in1, i32 %in2) nounwind {
2626; UEFI64-NEXT: addq $40, %rsp
2727; UEFI64-NEXT: jmp tailcallee # TAILCALL
2828;
29- ; X32 -LABEL: tailcaller:
30- ; X32 : # %bb.0: # %entry
31- ; X32 -NEXT: subl $16, %esp
32- ; X32 -NEXT: movl %ecx, {{[0-9]+}}(%esp)
33- ; X32 -NEXT: movl {{[0-9]+}}(%esp), %eax
34- ; X32 -NEXT: movl %edx, {{[0-9]+}}(%esp)
35- ; X32 -NEXT: movl %eax, {{[0-9]+}}(%esp)
36- ; X32 -NEXT: addl $8, %esp
37- ; X32 -NEXT: jmp tailcallee # TAILCALL
29+ ; X86 -LABEL: tailcaller:
30+ ; X86 : # %bb.0: # %entry
31+ ; X86 -NEXT: subl $16, %esp
32+ ; X86 -NEXT: movl %ecx, {{[0-9]+}}(%esp)
33+ ; X86 -NEXT: movl {{[0-9]+}}(%esp), %eax
34+ ; X86 -NEXT: movl %edx, {{[0-9]+}}(%esp)
35+ ; X86 -NEXT: movl %eax, {{[0-9]+}}(%esp)
36+ ; X86 -NEXT: addl $8, %esp
37+ ; X86 -NEXT: jmp tailcallee # TAILCALL
3838entry:
3939 %tmp11 = tail call tailcc i32 @tailcallee (i32 %in1 , i32 %in2 , i32 %in1 , i32 %in2 )
4040 ret i32 %tmp11
@@ -53,9 +53,9 @@ define tailcc noalias ptr @noalias_caller() nounwind {
5353; UEFI64: # %bb.0:
5454; UEFI64-NEXT: jmp alias_callee # TAILCALL
5555;
56- ; X32 -LABEL: noalias_caller:
57- ; X32 : # %bb.0:
58- ; X32 -NEXT: jmp alias_callee # TAILCALL
56+ ; X86 -LABEL: noalias_caller:
57+ ; X86 : # %bb.0:
58+ ; X86 -NEXT: jmp alias_callee # TAILCALL
5959 %p = tail call tailcc ptr @alias_callee ()
6060 ret ptr %p
6161}
@@ -73,9 +73,9 @@ define dso_local tailcc ptr @alias_caller() nounwind {
7373; UEFI64: # %bb.0:
7474; UEFI64-NEXT: jmp noalias_callee # TAILCALL
7575;
76- ; X32 -LABEL: alias_caller:
77- ; X32 : # %bb.0:
78- ; X32 -NEXT: jmp noalias_callee # TAILCALL
76+ ; X86 -LABEL: alias_caller:
77+ ; X86 : # %bb.0:
78+ ; X86 -NEXT: jmp noalias_callee # TAILCALL
7979 %p = tail call tailcc noalias ptr @noalias_callee ()
8080 ret ptr %p
8181}
@@ -93,9 +93,9 @@ define dso_local tailcc i32 @ret_undef() nounwind {
9393; UEFI64: # %bb.0:
9494; UEFI64-NEXT: jmp i32_callee # TAILCALL
9595;
96- ; X32 -LABEL: ret_undef:
97- ; X32 : # %bb.0:
98- ; X32 -NEXT: jmp i32_callee # TAILCALL
96+ ; X86 -LABEL: ret_undef:
97+ ; X86 : # %bb.0:
98+ ; X86 -NEXT: jmp i32_callee # TAILCALL
9999 %p = tail call tailcc i32 @i32_callee ()
100100 ret i32 undef
101101}
@@ -113,9 +113,9 @@ define dso_local tailcc i32 @noret() nounwind {
113113; UEFI64: # %bb.0:
114114; UEFI64-NEXT: jmp does_not_return # TAILCALL
115115;
116- ; X32 -LABEL: noret:
117- ; X32 : # %bb.0:
118- ; X32 -NEXT: jmp does_not_return # TAILCALL
116+ ; X86 -LABEL: noret:
117+ ; X86 : # %bb.0:
118+ ; X86 -NEXT: jmp does_not_return # TAILCALL
119119 tail call tailcc void @does_not_return ()
120120 unreachable
121121}
@@ -139,22 +139,22 @@ define dso_local tailcc void @void_test(i32, i32, i32, i32) {
139139; UEFI64-NEXT: .seh_endepilogue
140140; UEFI64-NEXT: jmp void_test # TAILCALL
141141;
142- ; X32 -LABEL: void_test:
143- ; X32 : # %bb.0: # %entry
144- ; X32 -NEXT: pushl %esi
145- ; X32 -NEXT: .cfi_def_cfa_offset 8
146- ; X32 -NEXT: subl $8, %esp
147- ; X32 -NEXT: .cfi_def_cfa_offset 16
148- ; X32 -NEXT: .cfi_offset %esi, -8
149- ; X32 -NEXT: movl {{[0-9]+}}(%esp), %eax
150- ; X32 -NEXT: movl {{[0-9]+}}(%esp), %esi
151- ; X32 -NEXT: movl %esi, {{[0-9]+}}(%esp)
152- ; X32 -NEXT: movl %eax, {{[0-9]+}}(%esp)
153- ; X32 -NEXT: addl $8, %esp
154- ; X32 -NEXT: .cfi_def_cfa_offset 8
155- ; X32 -NEXT: popl %esi
156- ; X32 -NEXT: .cfi_def_cfa_offset 4
157- ; X32 -NEXT: jmp void_test # TAILCALL
142+ ; X86 -LABEL: void_test:
143+ ; X86 : # %bb.0: # %entry
144+ ; X86 -NEXT: pushl %esi
145+ ; X86 -NEXT: .cfi_def_cfa_offset 8
146+ ; X86 -NEXT: subl $8, %esp
147+ ; X86 -NEXT: .cfi_def_cfa_offset 16
148+ ; X86 -NEXT: .cfi_offset %esi, -8
149+ ; X86 -NEXT: movl {{[0-9]+}}(%esp), %eax
150+ ; X86 -NEXT: movl {{[0-9]+}}(%esp), %esi
151+ ; X86 -NEXT: movl %esi, {{[0-9]+}}(%esp)
152+ ; X86 -NEXT: movl %eax, {{[0-9]+}}(%esp)
153+ ; X86 -NEXT: addl $8, %esp
154+ ; X86 -NEXT: .cfi_def_cfa_offset 8
155+ ; X86 -NEXT: popl %esi
156+ ; X86 -NEXT: .cfi_def_cfa_offset 4
157+ ; X86 -NEXT: jmp void_test # TAILCALL
158158 entry:
159159 tail call tailcc void @void_test ( i32 %0 , i32 %1 , i32 %2 , i32 %3 )
160160 ret void
@@ -179,22 +179,22 @@ define dso_local tailcc i1 @i1test(i32, i32, i32, i32) {
179179; UEFI64-NEXT: .seh_endepilogue
180180; UEFI64-NEXT: jmp i1test # TAILCALL
181181;
182- ; X32 -LABEL: i1test:
183- ; X32 : # %bb.0: # %entry
184- ; X32 -NEXT: pushl %esi
185- ; X32 -NEXT: .cfi_def_cfa_offset 8
186- ; X32 -NEXT: subl $8, %esp
187- ; X32 -NEXT: .cfi_def_cfa_offset 16
188- ; X32 -NEXT: .cfi_offset %esi, -8
189- ; X32 -NEXT: movl {{[0-9]+}}(%esp), %eax
190- ; X32 -NEXT: movl {{[0-9]+}}(%esp), %esi
191- ; X32 -NEXT: movl %esi, {{[0-9]+}}(%esp)
192- ; X32 -NEXT: movl %eax, {{[0-9]+}}(%esp)
193- ; X32 -NEXT: addl $8, %esp
194- ; X32 -NEXT: .cfi_def_cfa_offset 8
195- ; X32 -NEXT: popl %esi
196- ; X32 -NEXT: .cfi_def_cfa_offset 4
197- ; X32 -NEXT: jmp i1test # TAILCALL
182+ ; X86 -LABEL: i1test:
183+ ; X86 : # %bb.0: # %entry
184+ ; X86 -NEXT: pushl %esi
185+ ; X86 -NEXT: .cfi_def_cfa_offset 8
186+ ; X86 -NEXT: subl $8, %esp
187+ ; X86 -NEXT: .cfi_def_cfa_offset 16
188+ ; X86 -NEXT: .cfi_offset %esi, -8
189+ ; X86 -NEXT: movl {{[0-9]+}}(%esp), %eax
190+ ; X86 -NEXT: movl {{[0-9]+}}(%esp), %esi
191+ ; X86 -NEXT: movl %esi, {{[0-9]+}}(%esp)
192+ ; X86 -NEXT: movl %eax, {{[0-9]+}}(%esp)
193+ ; X86 -NEXT: addl $8, %esp
194+ ; X86 -NEXT: .cfi_def_cfa_offset 8
195+ ; X86 -NEXT: popl %esi
196+ ; X86 -NEXT: .cfi_def_cfa_offset 4
197+ ; X86 -NEXT: jmp i1test # TAILCALL
198198 entry:
199199 %4 = tail call tailcc i1 @i1test ( i32 %0 , i32 %1 , i32 %2 , i32 %3 )
200200 ret i1 %4
0 commit comments