2 Purpose: Check return value float.
5 Originator: <andreast@gcc.gnu.org> 20050212 */
10 /* To avoid a false negative on ix86 do not declare the return_fl static.
13 float return_fl(float fl1, float fl2, float fl3, float fl4)
15 return fl1 + fl2 + fl3 + fl4;
20 ffi_type *args[MAX_ARGS];
21 void *values[MAX_ARGS];
22 float fl1, fl2, fl3, fl4, rfl;
24 args[0] = &ffi_type_float;
25 args[1] = &ffi_type_float;
26 args[2] = &ffi_type_float;
27 args[3] = &ffi_type_float;
33 /* Initialize the cif */
34 CHECK(ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 4,
35 &ffi_type_float, args) == FFI_OK);
41 ffi_call(&cif, FFI_FN(return_fl), &rfl, values);
42 printf ("%f vs %f\n", rfl, return_fl(fl1, fl2, fl3, fl4));
43 CHECK(rfl == fl1 + fl2 + fl3 + fl4);