@@ -243,43 +243,37 @@ define void @f_thunk(ptr %this, ...) {
243243; X86-NOSSE: # %bb.0:
244244; X86-NOSSE-NEXT: pushl %ebp
245245; X86-NOSSE-NEXT: movl %esp, %ebp
246- ; X86-NOSSE-NEXT: pushl %esi
247246; X86-NOSSE-NEXT: andl $-16, %esp
248247; X86-NOSSE-NEXT: subl $32, %esp
249- ; X86-NOSSE-NEXT: movl 8(%ebp), %esi
250- ; X86-NOSSE-NEXT: leal 12(%ebp), %eax
251- ; X86-NOSSE-NEXT: movl %eax , (%esp)
252- ; X86-NOSSE-NEXT: pushl %esi
248+ ; X86-NOSSE-NEXT: movl 8(%ebp), %eax
249+ ; X86-NOSSE-NEXT: leal 12(%ebp), %ecx
250+ ; X86-NOSSE-NEXT: movl %ecx , (%esp)
251+ ; X86-NOSSE-NEXT: pushl %eax
253252; X86-NOSSE-NEXT: calll _get_f
254253; X86-NOSSE-NEXT: addl $4, %esp
255- ; X86-NOSSE-NEXT: movl %esi, 8(%ebp)
256- ; X86-NOSSE-NEXT: leal -4(%ebp), %esp
257- ; X86-NOSSE-NEXT: popl %esi
254+ ; X86-NOSSE-NEXT: movl %ebp, %esp
258255; X86-NOSSE-NEXT: popl %ebp
259256; X86-NOSSE-NEXT: jmpl *%eax # TAILCALL
260257;
261258; X86-SSE-LABEL: f_thunk:
262259; X86-SSE: # %bb.0:
263260; X86-SSE-NEXT: pushl %ebp
264261; X86-SSE-NEXT: movl %esp, %ebp
265- ; X86-SSE-NEXT: pushl %esi
266262; X86-SSE-NEXT: andl $-16, %esp
267263; X86-SSE-NEXT: subl $80, %esp
268264; X86-SSE-NEXT: movaps %xmm2, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill
269265; X86-SSE-NEXT: movaps %xmm1, {{[-0-9]+}}(%e{{[sb]}}p) # 16-byte Spill
270266; X86-SSE-NEXT: movaps %xmm0, (%esp) # 16-byte Spill
271- ; X86-SSE-NEXT: movl 8(%ebp), %esi
272- ; X86-SSE-NEXT: leal 12(%ebp), %eax
273- ; X86-SSE-NEXT: movl %eax , {{[0-9]+}}(%esp)
274- ; X86-SSE-NEXT: pushl %esi
267+ ; X86-SSE-NEXT: movl 8(%ebp), %eax
268+ ; X86-SSE-NEXT: leal 12(%ebp), %ecx
269+ ; X86-SSE-NEXT: movl %ecx , {{[0-9]+}}(%esp)
270+ ; X86-SSE-NEXT: pushl %eax
275271; X86-SSE-NEXT: calll _get_f
276272; X86-SSE-NEXT: addl $4, %esp
277- ; X86-SSE-NEXT: movl %esi, 8(%ebp)
278273; X86-SSE-NEXT: movaps (%esp), %xmm0 # 16-byte Reload
279274; X86-SSE-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm1 # 16-byte Reload
280275; X86-SSE-NEXT: movaps {{[-0-9]+}}(%e{{[sb]}}p), %xmm2 # 16-byte Reload
281- ; X86-SSE-NEXT: leal -4(%ebp), %esp
282- ; X86-SSE-NEXT: popl %esi
276+ ; X86-SSE-NEXT: movl %ebp, %esp
283277; X86-SSE-NEXT: popl %ebp
284278; X86-SSE-NEXT: jmpl *%eax # TAILCALL
285279 %ap = alloca [4 x ptr ], align 16
@@ -310,11 +304,14 @@ define void @g_thunk(ptr %fptr_i8, ...) {
310304; WINDOWS: # %bb.0:
311305; WINDOWS-NEXT: rex64 jmpq *%rcx # TAILCALL
312306;
313- ; X86-LABEL: g_thunk:
314- ; X86: # %bb.0:
315- ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
316- ; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
317- ; X86-NEXT: jmpl *%eax # TAILCALL
307+ ; X86-NOSSE-LABEL: g_thunk:
308+ ; X86-NOSSE: # %bb.0:
309+ ; X86-NOSSE-NEXT: jmpl *{{[0-9]+}}(%esp) # TAILCALL
310+ ;
311+ ; X86-SSE-LABEL: g_thunk:
312+ ; X86-SSE: # %bb.0:
313+ ; X86-SSE-NEXT: movl {{[0-9]+}}(%esp), %eax
314+ ; X86-SSE-NEXT: jmpl *%eax # TAILCALL
318315 musttail call void (ptr , ...) %fptr_i8 (ptr %fptr_i8 , ...)
319316 ret void
320317}
@@ -374,10 +371,9 @@ define void @h_thunk(ptr %this, ...) {
374371; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
375372; X86-NEXT: jmpl *%ecx # TAILCALL
376373; X86-NEXT: LBB2_2: # %else
377- ; X86-NEXT: movl 8(%eax), %ecx
374+ ; X86-NEXT: movl 8(%eax), %eax
378375; X86-NEXT: movl $42, _g
379- ; X86-NEXT: movl %eax, {{[0-9]+}}(%esp)
380- ; X86-NEXT: jmpl *%ecx # TAILCALL
376+ ; X86-NEXT: jmpl *%eax # TAILCALL
381377 %cond = load i1 , ptr %this
382378 br i1 %cond , label %then , label %else
383379
0 commit comments