aboutsummaryrefslogtreecommitdiff
path: root/libffi/testsuite/libffi.call/float2.c
diff options
context:
space:
mode:
Diffstat (limited to 'libffi/testsuite/libffi.call/float2.c')
-rw-r--r--libffi/testsuite/libffi.call/float2.c23
1 files changed, 13 insertions, 10 deletions
diff --git a/libffi/testsuite/libffi.call/float2.c b/libffi/testsuite/libffi.call/float2.c
index 55b9fba..57cd9e3 100644
--- a/libffi/testsuite/libffi.call/float2.c
+++ b/libffi/testsuite/libffi.call/float2.c
@@ -3,7 +3,7 @@
Limitations: none.
PR: none.
Originator: From the original ffitest.c */
-/* { dg-do run { target { ! hppa*-*-hpux* } } } */
+/* { dg-do run } */
#include "ffitest.h"
#include "float.h"
@@ -22,6 +22,7 @@ int main (void)
void *values[MAX_ARGS];
float f;
long double ld;
+ long double original;
args[0] = &ffi_type_float;
values[0] = &f;
@@ -32,24 +33,26 @@ int main (void)
f = 3.14159;
-#if 1
- /* This is ifdef'd out for now. long double support under SunOS/gcc
- is pretty much non-existent. You'll get the odd bus error in library
- routines like printf(). */
+#if defined(__sun) && defined(__GNUC__)
+ /* long double support under SunOS/gcc is pretty much non-existent.
+ You'll get the odd bus error in library routines like printf() */
+#else
printf ("%Lf\n", ldblit(f));
#endif
+
ld = 666;
ffi_call(&cif, FFI_FN(ldblit), &ld, values);
-#if 1
- /* This is ifdef'd out for now. long double support under SunOS/gcc
- is pretty much non-existent. You'll get the odd bus error in library
- routines like printf(). */
+#if defined(__sun) && defined(__GNUC__)
+ /* long double support under SunOS/gcc is pretty much non-existent.
+ You'll get the odd bus error in library routines like printf() */
+#else
printf ("%Lf, %Lf, %Lf, %Lf\n", ld, ldblit(f), ld - ldblit(f), LDBL_EPSILON);
#endif
/* These are not always the same!! Check for a reasonable delta */
- if (fabsl(ld - ldblit(f)) < LDBL_EPSILON)
+ original = ldblit(f);
+ if (((ld > original) ? (ld - original) : (original - ld)) < LDBL_EPSILON)
puts("long double return value tests ok!");
else
CHECK(0);