]>
Commit | Line | Data |
---|---|---|
6cbfba8c | 1 | /* Area: ffi_call |
2 | Purpose: Check return value double. | |
3 | Limitations: none. | |
4 | PR: none. | |
5 | Originator: <andreast@gcc.gnu.org> 20050212 */ | |
6 | ||
7 | /* { dg-do run } */ | |
8 | #include "ffitest.h" | |
9 | ||
10 | static double return_dbl(double dbl) | |
11 | { | |
89d8a412 | 12 | printf ("%f\n", dbl); |
6cbfba8c | 13 | return 2 * dbl; |
14 | } | |
15 | int main (void) | |
16 | { | |
17 | ffi_cif cif; | |
18 | ffi_type *args[MAX_ARGS]; | |
19 | void *values[MAX_ARGS]; | |
20 | double dbl, rdbl; | |
21 | ||
22 | args[0] = &ffi_type_double; | |
23 | values[0] = &dbl; | |
24 | ||
25 | /* Initialize the cif */ | |
26 | CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 1, | |
27 | &ffi_type_double, args) == FFI_OK); | |
28 | ||
29 | for (dbl = -127.3; dbl < 127; dbl++) | |
30 | { | |
31 | ffi_call(&cif, FFI_FN(return_dbl), &rdbl, values); | |
32 | printf ("%f vs %f\n", rdbl, return_dbl(dbl)); | |
33 | CHECK(rdbl == 2 * dbl); | |
34 | } | |
35 | exit(0); | |
36 | } |