Add HJ's -fomit-frame-pointer struct return fix

This commit is contained in:
green
2008-01-30 13:21:02 +00:00
parent d420424039
commit e332366d15
3 changed files with 16 additions and 0 deletions

View File

@@ -1,3 +1,12 @@
2008-01-30 H.J. Lu <hongjiu.lu@intel.com>
PR libffi/34612
* src/x86/sysv.S (ffi_closure_SYSV): Pop 4 byte from stack when
returning struct.
* testsuite/libffi.call/call.exp: Add "-O2 -fomit-frame-pointer"
tests.
2008-01-30 Anthony Green <green@redhat.com> 2008-01-30 Anthony Green <green@redhat.com>
* Makefile.am, include/Makefile.am: Move headers to * Makefile.am, include/Makefile.am: Move headers to

View File

@@ -210,6 +210,8 @@ ffi_closure_SYSV:
je .Lcls_retldouble je .Lcls_retldouble
cmpl $FFI_TYPE_SINT64, %eax cmpl $FFI_TYPE_SINT64, %eax
je .Lcls_retllong je .Lcls_retllong
cmpl $FFI_TYPE_STRUCT, %eax
je .Lcls_retstruct
.Lcls_epilogue: .Lcls_epilogue:
movl %ebp, %esp movl %ebp, %esp
popl %ebp popl %ebp
@@ -230,6 +232,10 @@ ffi_closure_SYSV:
movl (%ecx), %eax movl (%ecx), %eax
movl 4(%ecx), %edx movl 4(%ecx), %edx
jmp .Lcls_epilogue jmp .Lcls_epilogue
.Lcls_retstruct:
movl %ebp, %esp
popl %ebp
ret $4
.LFE2: .LFE2:
.size ffi_closure_SYSV, .-ffi_closure_SYSV .size ffi_closure_SYSV, .-ffi_closure_SYSV

View File

@@ -27,6 +27,7 @@ dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O0 -W -Wall" ""
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2" "" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2" ""
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O3" "" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O3" ""
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-Os" "" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-Os" ""
dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2 -fomit-frame-pointer" ""
dg-finish dg-finish