diff options
author | H.J. Lu <hongjiu.lu@intel.com> | 2008-01-30 14:36:58 +0000 |
---|---|---|
committer | H.J. Lu <hjl@gcc.gnu.org> | 2008-01-30 06:36:58 -0800 |
commit | 7f92e24236b7a7cc238fa65b6843de0cfa92778c (patch) | |
tree | dcd9bca2d5eca6dec19c0986de42932ff8ef664d /libffi | |
parent | ac9e6043ea006adfa5ad55a2084aeaba5f9f3483 (diff) | |
download | gcc-7f92e24236b7a7cc238fa65b6843de0cfa92778c.zip gcc-7f92e24236b7a7cc238fa65b6843de0cfa92778c.tar.gz gcc-7f92e24236b7a7cc238fa65b6843de0cfa92778c.tar.bz2 |
re PR libffi/34612 ([4.1/4.2] libffi doesn't work with -fomit-frame-pointer on ia32)
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.
From-SVN: r131964
Diffstat (limited to 'libffi')
-rw-r--r-- | libffi/ChangeLog | 9 | ||||
-rw-r--r-- | libffi/src/x86/sysv.S | 6 | ||||
-rw-r--r-- | libffi/testsuite/libffi.call/call.exp | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/libffi/ChangeLog b/libffi/ChangeLog index 7026706..2dc82af 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -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-24 David Edelsohn <edelsohn@gnu.org> * configure: Regenerate. diff --git a/libffi/src/x86/sysv.S b/libffi/src/x86/sysv.S index f22c939..a0daf1d 100644 --- a/libffi/src/x86/sysv.S +++ b/libffi/src/x86/sysv.S @@ -210,6 +210,8 @@ ffi_closure_SYSV: je .Lcls_retldouble cmpl $FFI_TYPE_SINT64, %eax je .Lcls_retllong + cmpl $FFI_TYPE_STRUCT, %eax + je .Lcls_retstruct .Lcls_epilogue: movl %ebp, %esp popl %ebp @@ -230,6 +232,10 @@ ffi_closure_SYSV: movl (%ecx), %eax movl 4(%ecx), %edx jmp .Lcls_epilogue +.Lcls_retstruct: + movl %ebp, %esp + popl %ebp + ret $4 .LFE2: .size ffi_closure_SYSV, .-ffi_closure_SYSV diff --git a/libffi/testsuite/libffi.call/call.exp b/libffi/testsuite/libffi.call/call.exp index bd4d2e8..25e0109 100644 --- a/libffi/testsuite/libffi.call/call.exp +++ b/libffi/testsuite/libffi.call/call.exp @@ -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\]]] "-O3" "" dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-Os" "" +dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "-O2 -fomit-frame-pointer" "" dg-finish |