diff options
author | Andreas Tobler <andreast@gcc.gnu.org> | 2003-09-04 16:49:22 +0200 |
---|---|---|
committer | Andreas Tobler <andreast@gcc.gnu.org> | 2003-09-04 16:49:22 +0200 |
commit | 8a6b509ea857a07be12738d10403d3ab0f647ffe (patch) | |
tree | 864061fb5d14971ea20a6bca207ddced6dc8f374 /libffi/testsuite/libffi.call/float1.c | |
parent | bbf3057bf97696d4c5ba5c624c26ea0a9b1e04fa (diff) | |
download | gcc-8a6b509ea857a07be12738d10403d3ab0f647ffe.zip gcc-8a6b509ea857a07be12738d10403d3ab0f647ffe.tar.gz gcc-8a6b509ea857a07be12738d10403d3ab0f647ffe.tar.bz2 |
*** empty log message ***
From-SVN: r71069
Diffstat (limited to 'libffi/testsuite/libffi.call/float1.c')
-rw-r--r-- | libffi/testsuite/libffi.call/float1.c | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/libffi/testsuite/libffi.call/float1.c b/libffi/testsuite/libffi.call/float1.c new file mode 100644 index 0000000..94636a2 --- /dev/null +++ b/libffi/testsuite/libffi.call/float1.c @@ -0,0 +1,42 @@ +/* Area: ffi_call + Purpose: Check return value double. + Limitations: none. + PR: none. + Originator: From the original ffitest.c */ + +/* { dg-do run } */ +#include "ffitest.h" +#include "float.h" + +static double dblit(float f) +{ + return f/3.0; +} + +int main (void) +{ + ffi_cif cif; + ffi_type *args[MAX_ARGS]; + void *values[MAX_ARGS]; + float f; + double d; + + + args[0] = &ffi_type_float; + values[0] = &f; + + /* Initialize the cif */ + CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, + &ffi_type_double, args) == FFI_OK); + + f = 3.14159; + + ffi_call(&cif, FFI_FN(dblit), &d, values); + + /* These are not always the same!! Check for a reasonable delta */ + + CHECK(d - dblit(f) < DBL_EPSILON); + + exit(0); + +} |