diff options
author | kkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-02 07:02:41 +0000 |
---|---|---|
committer | kkojima <kkojima@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-10-02 07:02:41 +0000 |
commit | d601026d37980ee496362bfc870cdd76ad457fd3 (patch) | |
tree | 7a1de4ecc6ddc01adefc722c56cf839279e287a3 /libffi | |
parent | 4efeac21f40dc86db94dc16c776405c832b73417 (diff) | |
download | gcc-d601026d37980ee496362bfc870cdd76ad457fd3.tar.gz |
* testsuite/libffi.call/negint.c: New test case.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@88421 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libffi')
-rw-r--r-- | libffi/ChangeLog | 4 | ||||
-rw-r--r-- | libffi/testsuite/libffi.call/negint.c | 54 |
2 files changed, 58 insertions, 0 deletions
diff --git a/libffi/ChangeLog b/libffi/ChangeLog index a172ea187e4..40e93964668 100644 --- a/libffi/ChangeLog +++ b/libffi/ChangeLog @@ -1,3 +1,7 @@ +2004-10-02 Kaz Kojima <kkojima@gcc.gnu.org> + + * testsuite/libffi.call/negint.c: New test case. + 2004-09-14 H.J. Lu <hongjiu.lu@intel.com> PR libgcj/17465 diff --git a/libffi/testsuite/libffi.call/negint.c b/libffi/testsuite/libffi.call/negint.c new file mode 100644 index 00000000000..1c8ed613562 --- /dev/null +++ b/libffi/testsuite/libffi.call/negint.c @@ -0,0 +1,54 @@ +/* Area: ffi_call + Purpose: Check that negative integers are passed correctly. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +/* { dg-options -O2 } */ + +#include "ffitest.h" + +static int checking(int a, short b, signed char c) +{ + int i; + + return (a < 0 && b < 0 && c < 0); +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + ffi_arg rint; + + signed int si; + signed short ss; + signed char sc; + + args[0] = &ffi_type_sint; + values[0] = &si; + args[1] = &ffi_type_sshort; + values[1] = &ss; + args[2] = &ffi_type_schar; + values[2] = ≻ + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 3, + &ffi_type_sint, args) == FFI_OK); + + si = -6; + ss = -12; + sc = -1; + + checking (si, ss, sc); + + ffi_call(&cif, FFI_FN(checking), &rint, values); + + printf ("%d vs %d\n", (int)rint, checking (si, ss, sc)); + + CHECK(rint != 0); + + exit (0); +} |