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"
void *values[MAX_ARGS];
float f;
long double ld;
+ long double original;
args[0] = &ffi_type_float;
values[0] = &f;
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);