diff options
Diffstat (limited to 'testsuite/libffi.closures/nested_struct13.c')
-rw-r--r-- | testsuite/libffi.closures/nested_struct13.c | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/testsuite/libffi.closures/nested_struct13.c b/testsuite/libffi.closures/nested_struct13.c index 6c139b9..6edfdcb 100644 --- a/testsuite/libffi.closures/nested_struct13.c +++ b/testsuite/libffi.closures/nested_struct13.c @@ -27,6 +27,14 @@ B B_fn(float b0, struct B b1) printf("%g %g %g %g: %g %g %g\n", b0, b1.x, b1.y.a, b1.y.b, result.x, result.y.a, result.y.b); + CHECK_FLOAT_EQ(b0, 12.125); + CHECK_FLOAT_EQ(b1.x, 24.75); + CHECK_FLOAT_EQ(b1.y.a, 31.625); + CHECK_FLOAT_EQ(b1.y.b, 32.25); + CHECK_FLOAT_EQ(result.x, 36.875); + CHECK_FLOAT_EQ(result.y.a, 43.75); + CHECK_FLOAT_EQ(result.y.b, 44.375); + return result; } @@ -91,17 +99,17 @@ int main (void) ffi_call(&cif, FFI_FN(B_fn), &res_dbl, args_dbl); /* { dg-output "12.125 24.75 31.625 32.25: 36.875 43.75 44.375" } */ - CHECK( res_dbl.x == (e_dbl + f_dbl.x)); - CHECK( res_dbl.y.a == (e_dbl + f_dbl.y.a)); - CHECK( res_dbl.y.b == (e_dbl + f_dbl.y.b)); + CHECK_FLOAT_EQ( res_dbl.x, (e_dbl + f_dbl.x)); + CHECK_FLOAT_EQ( res_dbl.y.a, (e_dbl + f_dbl.y.a)); + CHECK_FLOAT_EQ( res_dbl.y.b, (e_dbl + f_dbl.y.b)); CHECK(ffi_prep_closure_loc(pcl, &cif, B_gn, NULL, code) == FFI_OK); res_dbl = ((B(*)(float, B))(code))(e_dbl, f_dbl); /* { dg-output "\n12.125 24.75 31.625 32.25: 36.875 43.75 44.375" } */ - CHECK( res_dbl.x == (e_dbl + f_dbl.x)); - CHECK( res_dbl.y.a == (e_dbl + f_dbl.y.a)); - CHECK( res_dbl.y.b == (e_dbl + f_dbl.y.b)); + CHECK_FLOAT_EQ( res_dbl.x, (e_dbl + f_dbl.x)); + CHECK_FLOAT_EQ( res_dbl.y.a, (e_dbl + f_dbl.y.a)); + CHECK_FLOAT_EQ( res_dbl.y.b, (e_dbl + f_dbl.y.b)); exit(0); } |