This is the mail archive of the
java-patches@gcc.gnu.org
mailing list for the Java project.
[Patch] libffi: New test case.
- From: David Daney <ddaney at avtrex dot com>
- To: Java Patch List <java-patches at gcc dot gnu dot org>, andreast at gcc dot gnu dot org
- Cc: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Fri, 24 Aug 2007 12:10:04 -0700
- Subject: [Patch] libffi: New test case.
I would like to add this test case. Combined with return_ul.c, it will
let us definitively close:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=21229
Tested on x86_64-pc-linux-gnu and mips64-linux-gnu
OK to commit?
2007-08-24 David Daney <ddaney@avtrex.com>
* testsuite/libffi.call/return_sl.c: New test.
Index: testsuite/libffi.call/return_sl.c
===================================================================
--- testsuite/libffi.call/return_sl.c (revision 0)
+++ testsuite/libffi.call/return_sl.c (revision 0)
@@ -0,0 +1,38 @@
+/* Area: ffi_call
+ Purpose: Check if long as return type is handled correctly.
+ Limitations: none.
+ PR: none.
+ */
+
+/* { dg-do run } */
+#include "ffitest.h"
+static long return_sl(long l1, long l2)
+{
+ return l1 - l2;
+}
+
+int main (void)
+{
+ ffi_cif cif;
+ ffi_type *args[MAX_ARGS];
+ void *values[MAX_ARGS];
+ ffi_arg res;
+ unsigned long l1, l2;
+
+ args[0] = &ffi_type_slong;
+ args[1] = &ffi_type_slong;
+ values[0] = &l1;
+ values[1] = &l2;
+
+ CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2,
+ &ffi_type_slong, args) == FFI_OK);
+
+ l1 = 1073741823L;
+ l2 = 1073741824L;
+
+ ffi_call(&cif, FFI_FN(return_sl), &res, values);
+ printf("res: %ld, %ld\n", (long)res, l1 - l2);
+ /* { dg-output "res: -1, -1" } */
+
+ exit(0);
+}