ffi 1.9.23 → 1.9.24

Sign up to get free protection for your applications and to get access to all the features.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +66 -0
  3. data/Rakefile +1 -1
  4. data/ext/ffi_c/Call.c +5 -2
  5. data/ext/ffi_c/Function.c +8 -5
  6. data/ext/ffi_c/Thread.c +1 -0
  7. data/ext/ffi_c/extconf.rb +1 -0
  8. data/ext/ffi_c/libffi/.appveyor.yml +6 -4
  9. data/ext/ffi_c/libffi/.github/issue_template.md +10 -0
  10. data/ext/ffi_c/libffi/.gitignore +2 -0
  11. data/ext/ffi_c/libffi/.travis.yml +20 -16
  12. data/ext/ffi_c/libffi/.travis/ar-lib +270 -0
  13. data/ext/ffi_c/libffi/.travis/build.sh +34 -0
  14. data/ext/ffi_c/libffi/.travis/compile +351 -0
  15. data/ext/ffi_c/libffi/.travis/install.sh +11 -3
  16. data/ext/ffi_c/libffi/.travis/moxie-sim.exp +60 -0
  17. data/ext/ffi_c/libffi/.travis/site.exp +18 -0
  18. data/ext/ffi_c/libffi/LICENSE-BUILDTOOLS +352 -0
  19. data/ext/ffi_c/libffi/Makefile.am +4 -45
  20. data/ext/ffi_c/libffi/{README → README.md} +237 -230
  21. data/ext/ffi_c/libffi/configure.ac +10 -8
  22. data/ext/ffi_c/libffi/configure.host +5 -0
  23. data/ext/ffi_c/libffi/include/ffi.h.in +48 -26
  24. data/ext/ffi_c/libffi/include/ffi_common.h +2 -0
  25. data/ext/ffi_c/libffi/m4/ax_append_flag.m4 +18 -16
  26. data/ext/ffi_c/libffi/m4/ax_cc_maxopt.m4 +21 -8
  27. data/ext/ffi_c/libffi/m4/ax_cflags_warn_all.m4 +4 -4
  28. data/ext/ffi_c/libffi/m4/ax_check_compile_flag.m4 +9 -7
  29. data/ext/ffi_c/libffi/m4/ax_compiler_vendor.m4 +8 -5
  30. data/ext/ffi_c/libffi/m4/ax_configure_args.m4 +5 -5
  31. data/ext/ffi_c/libffi/m4/ax_enable_builddir.m4 +7 -6
  32. data/ext/ffi_c/libffi/m4/ax_gcc_archflag.m4 +99 -61
  33. data/ext/ffi_c/libffi/m4/ax_gcc_x86_cpuid.m4 +18 -8
  34. data/ext/ffi_c/libffi/m4/ax_require_defined.m4 +37 -0
  35. data/ext/ffi_c/libffi/msvcc.sh +82 -14
  36. data/ext/ffi_c/libffi/src/aarch64/ffi.c +8 -31
  37. data/ext/ffi_c/libffi/src/closures.c +31 -1
  38. data/ext/ffi_c/libffi/src/ia64/ffi.c +24 -6
  39. data/ext/ffi_c/libffi/src/ia64/ffitarget.h +2 -1
  40. data/ext/ffi_c/libffi/src/ia64/unix.S +6 -1
  41. data/ext/ffi_c/libffi/src/mips/ffi.c +29 -12
  42. data/ext/ffi_c/libffi/src/mips/ffitarget.h +7 -12
  43. data/ext/ffi_c/libffi/src/moxie/eabi.S +1 -1
  44. data/ext/ffi_c/libffi/src/moxie/ffi.c +18 -5
  45. data/ext/ffi_c/libffi/src/powerpc/ffi_linux64.c +45 -16
  46. data/ext/ffi_c/libffi/src/riscv/ffi.c +445 -0
  47. data/ext/ffi_c/libffi/src/riscv/ffitarget.h +68 -0
  48. data/ext/ffi_c/libffi/src/riscv/sysv.S +214 -0
  49. data/ext/ffi_c/libffi/src/types.c +3 -1
  50. data/ext/ffi_c/libffi/src/x86/ffi.c +18 -0
  51. data/ext/ffi_c/libffi/src/x86/ffi64.c +15 -9
  52. data/ext/ffi_c/libffi/src/x86/ffitarget.h +8 -2
  53. data/ext/ffi_c/libffi/src/x86/ffiw64.c +30 -9
  54. data/ext/ffi_c/libffi/src/xtensa/sysv.S +6 -1
  55. data/ext/ffi_c/libffi/testsuite/Makefile.am +108 -77
  56. data/ext/ffi_c/libffi/testsuite/lib/libffi.exp +195 -5
  57. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/Makefile +28 -0
  58. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/README +78 -0
  59. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/alignof.h +50 -0
  60. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/bhaible.exp +58 -0
  61. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-call.c +1745 -0
  62. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/test-callback.c +2885 -0
  63. data/ext/ffi_c/libffi/testsuite/libffi.bhaible/testcases.c +743 -0
  64. data/ext/ffi_c/libffi/testsuite/libffi.call/align_stdcall.c +46 -0
  65. data/ext/ffi_c/libffi/testsuite/libffi.call/call.exp +14 -1
  66. data/ext/ffi_c/libffi/testsuite/libffi.call/ffitest.h +3 -1
  67. data/ext/ffi_c/libffi/testsuite/libffi.call/nested_struct10.c +1 -0
  68. data/ext/ffi_c/libffi/testsuite/libffi.call/struct10.c +57 -0
  69. data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest.cc +1 -1
  70. data/ext/ffi_c/libffi/testsuite/libffi.call/unwindtest_ffi_call.cc +1 -1
  71. data/lib/ffi/library.rb +2 -4
  72. data/lib/ffi/platform/mips64-linux/types.conf +104 -0
  73. data/lib/ffi/platform/mipsisa32r6-linux/types.conf +102 -0
  74. data/lib/ffi/platform/mipsisa32r6el-linux/types.conf +102 -0
  75. data/lib/ffi/platform/mipsisa64r6-linux/types.conf +104 -0
  76. data/lib/ffi/platform/mipsisa64r6el-linux/types.conf +104 -0
  77. data/lib/ffi/version.rb +1 -1
  78. metadata +29 -3
@@ -0,0 +1,78 @@
1
+ This package contains a test suite for libffi.
2
+
3
+ This test suite can be compiled with a C compiler. No need for 'expect'
4
+ or some other package that is often not installed.
5
+
6
+ The test suite consists of 81 C functions, each with a different signature.
7
+ * test-call verifies that calling each function directly produces the same
8
+ results as calling the function indirectly through 'ffi_call'.
9
+ * test-callback verifies that calling each function directly produces the same
10
+ results as calling a function that is a callback (object build by
11
+ 'ffi_prep_closure_loc') and simulates the original function.
12
+
13
+ Each direct or indirect invocation should produce one line of output to
14
+ stdout. A correct output consists of paired lines, such as
15
+
16
+ void f(void):
17
+ void f(void):
18
+ int f(void):->99
19
+ int f(void):->99
20
+ int f(int):(1)->2
21
+ int f(int):(1)->2
22
+ int f(2*int):(1,2)->3
23
+ int f(2*int):(1,2)->3
24
+ ...
25
+
26
+ The Makefile then creates two files:
27
+ * failed-call, which consists of the non-paired lines of output of
28
+ 'test-call',
29
+ * failed-callback, which consists of the non-paired lines of output of
30
+ 'test-callback'.
31
+
32
+ The test suite passes if both failed-call and failed-callback come out
33
+ as empty.
34
+
35
+
36
+ How to use the test suite
37
+ -------------------------
38
+
39
+ 1. Modify the Makefile's variables
40
+ prefix = the directory in which libffi was installed
41
+ CC = the C compiler, often with options such as "-m32" or "-m64"
42
+ that enforce a certain ABI,
43
+ CFLAGS = optimization options (need to change them only for non-GCC
44
+ compilers)
45
+ 2. Run "make". If it fails already in "test-call", run also
46
+ "make check-callback".
47
+ 3. If this failed, inspect the output files.
48
+
49
+
50
+ How to interpret the results
51
+ ----------------------------
52
+
53
+ The failed-call and failed-callback files consist of paired lines:
54
+ The first line is the result of the direct invocation.
55
+ The second line is the result of invocation through libffi.
56
+
57
+ For example, this output
58
+
59
+ uchar f(uchar,ushort,uint,ulong):(97,2,3,4)->255
60
+ uchar f(uchar,ushort,uint,ulong):(97,2,3,4)->0
61
+
62
+ indicates that the arguments were passed correctly, but the return
63
+ value came out wrong.
64
+
65
+ And this output
66
+
67
+ float f(17*float,3*int,L):(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,6,7,8,561,1105,1729,2465,2821,6601)->15319.1
68
+ float f(17*float,3*int,L):(0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,-140443648,10,268042216,-72537980,-140443648,-140443648,-140443648,-140443648,-140443648)->-6.47158e+08
69
+
70
+ indicates that integer arguments that come after 17 floating-point arguments
71
+ were not passed correctly.
72
+
73
+
74
+ Credits
75
+ -------
76
+
77
+ The test suite is based on the one of GNU libffcall-2.0.
78
+ Authors: Bill Triggs, Bruno Haible
@@ -0,0 +1,50 @@
1
+ /* Determine alignment of types.
2
+ Copyright (C) 2003-2004, 2006, 2009-2017 Free Software Foundation, Inc.
3
+
4
+ This program is free software; you can redistribute it and/or modify
5
+ it under the terms of the GNU General Public License as published by
6
+ the Free Software Foundation; either version 2, or (at your option)
7
+ any later version.
8
+
9
+ This program is distributed in the hope that it will be useful,
10
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
11
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
+ GNU General Public License for more details.
13
+
14
+ You should have received a copy of the GNU General Public License
15
+ along with this program; if not, see <https://www.gnu.org/licenses/>. */
16
+
17
+ #ifndef _ALIGNOF_H
18
+ #define _ALIGNOF_H
19
+
20
+ #include <stddef.h>
21
+
22
+ /* alignof_slot (TYPE)
23
+ Determine the alignment of a structure slot (field) of a given type,
24
+ at compile time. Note that the result depends on the ABI.
25
+ This is the same as alignof (TYPE) and _Alignof (TYPE), defined in
26
+ <stdalign.h> if __alignof_is_defined is 1.
27
+ Note: The result cannot be used as a value for an 'enum' constant,
28
+ due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */
29
+ #if defined __cplusplus
30
+ template <class type> struct alignof_helper { char __slot1; type __slot2; };
31
+ # define alignof_slot(type) offsetof (alignof_helper<type>, __slot2)
32
+ #else
33
+ # define alignof_slot(type) offsetof (struct { char __slot1; type __slot2; }, __slot2)
34
+ #endif
35
+
36
+ /* alignof_type (TYPE)
37
+ Determine the good alignment of an object of the given type at compile time.
38
+ Note that this is not necessarily the same as alignof_slot(type).
39
+ For example, with GNU C on x86 platforms: alignof_type(double) = 8, but
40
+ - when -malign-double is not specified: alignof_slot(double) = 4,
41
+ - when -malign-double is specified: alignof_slot(double) = 8.
42
+ Note: The result cannot be used as a value for an 'enum' constant,
43
+ due to bugs in HP-UX 10.20 cc and AIX 3.2.5 xlc. */
44
+ #if defined __GNUC__ || defined __IBM__ALIGNOF__
45
+ # define alignof_type __alignof__
46
+ #else
47
+ # define alignof_type alignof_slot
48
+ #endif
49
+
50
+ #endif /* _ALIGNOF_H */
@@ -0,0 +1,58 @@
1
+ # Copyright (C) 2003, 2006, 2009, 2010, 2014, 2018 Free Software Foundation, Inc.
2
+
3
+ # This program is free software; you can redistribute it and/or modify
4
+ # it under the terms of the GNU General Public License as published by
5
+ # the Free Software Foundation; either version 3 of the License, or
6
+ # (at your option) any later version.
7
+ #
8
+ # This program is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11
+ # GNU General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU General Public License
14
+ # along with this program; see the file COPYING3. If not see
15
+ # <http://www.gnu.org/licenses/>.
16
+
17
+ dg-init
18
+ libffi-init
19
+
20
+ global srcdir subdir
21
+ global compiler_vendor
22
+ global has_gccbug
23
+
24
+ # The conversion of this testsuite into a dejagnu compatible testsuite
25
+ # was done in a pretty lazy fashion, and requires the use of compiler
26
+ # flags to disable warnings for now.
27
+ if { [string match $compiler_vendor "gnu"] } {
28
+ set warning_options "-Wno-unused-variable -Wno-unused-parameter -Wno-unused-but-set-variable -Wno-uninitialized";
29
+ }
30
+ if { [string match $compiler_vendor "microsoft"] } {
31
+ # -wd4996 suggest use of vsprintf_s instead of vsprintf
32
+ # -wd4116 unnamed type definition
33
+ # -wd4101 unreferenced local variable
34
+ # -wd4244 warning about implicit double to float conversion
35
+ set warning_options "-wd4996 -wd4116 -wd4101 -wd4244";
36
+ }
37
+ if { ![string match $compiler_vendor "microsoft"] && ![string match $compiler_vendor "gnu"] } {
38
+ set warning_options "-Wno-unused-variable -Wno-unused-parameter -Wno-uninitialized";
39
+ }
40
+
41
+
42
+ set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/test-call.c]]
43
+
44
+ for {set i 1} {$i < 82} {incr i} {
45
+ run-many-tests $tlist [format "-DDGTEST=%d %s" $i $warning_options]
46
+ }
47
+
48
+ set tlist [lsort [glob -nocomplain -- $srcdir/$subdir/test-callback.c]]
49
+
50
+ for {set i 1} {$i < 81} {incr i} {
51
+ run-many-tests $tlist [format "-DDGTEST=%d %s" $i $warning_options]
52
+ }
53
+
54
+ dg-finish
55
+
56
+ # Local Variables:
57
+ # tcl-indent-level:4
58
+ # End:
@@ -0,0 +1,1745 @@
1
+ /**
2
+ Copyright 1993 Bill Triggs <Bill.Triggs@inrialpes.fr>
3
+ Copyright 1995-2017 Bruno Haible <bruno@clisp.org>
4
+
5
+ This program is free software: you can redistribute it and/or modify
6
+ it under the terms of the GNU General Public License as published by
7
+ the Free Software Foundation; either version 2 of the License, or
8
+ (at your option) any later version.
9
+
10
+ This program is distributed in the hope that it will be useful,
11
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
12
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13
+ GNU General Public License for more details.
14
+
15
+ You should have received a copy of the GNU General Public License
16
+ along with this program. If not, see <http://www.gnu.org/licenses/>.
17
+ **/
18
+
19
+ /* { dg-do run { xfail gccbug } }*/
20
+
21
+ #include <stdio.h>
22
+ #include <stdlib.h>
23
+ #include <string.h>
24
+ #include <ffi.h>
25
+ #include "alignof.h"
26
+ #include <stdarg.h>
27
+
28
+ /* libffi testsuite local changes -------------------------------- */
29
+ #ifdef DGTEST
30
+ /* Redefine exit(1) as a test failure */
31
+ #define exit(V) (void)((V) ? (abort(), 1) : exit(0))
32
+ int count = 0;
33
+ char rbuf1[2048];
34
+ char rbuf2[2048];
35
+ int _fprintf(FILE *stream, const char *format, ...)
36
+ {
37
+ va_list args;
38
+ va_start(args, format);
39
+
40
+ switch (count++)
41
+ {
42
+ case 0:
43
+ case 1:
44
+ vsprintf(&rbuf1[strlen(rbuf1)], format, args);
45
+ break;
46
+ case 2:
47
+ printf("%s", rbuf1);
48
+ vsprintf(rbuf2, format, args);
49
+ break;
50
+ case 3:
51
+ vsprintf(&rbuf2[strlen(rbuf2)], format, args);
52
+ printf("%s", rbuf2);
53
+ if (strcmp (rbuf1, rbuf2)) abort();
54
+ break;
55
+ }
56
+
57
+ va_end(args);
58
+
59
+ return 0;
60
+ }
61
+ #define fprintf _fprintf
62
+ #endif
63
+ /* --------------------------------------------------------------- */
64
+
65
+ #include "testcases.c"
66
+
67
+ #ifndef ABI_NUM
68
+ #define ABI_NUM FFI_DEFAULT_ABI
69
+ #endif
70
+
71
+ /* Definitions that ought to be part of libffi. */
72
+ static ffi_type ffi_type_char;
73
+ #define ffi_type_slonglong ffi_type_sint64
74
+ #define ffi_type_ulonglong ffi_type_uint64
75
+
76
+ /* libffi does not support arrays inside structs. */
77
+ #define SKIP_EXTRA_STRUCTS
78
+
79
+ #define FFI_PREP_CIF(cif,argtypes,rettype) \
80
+ if (ffi_prep_cif(&(cif),ABI_NUM,sizeof(argtypes)/sizeof(argtypes[0]),&rettype,argtypes) != FFI_OK) abort()
81
+ #define FFI_PREP_CIF_NOARGS(cif,rettype) \
82
+ if (ffi_prep_cif(&(cif),ABI_NUM,0,&rettype,NULL) != FFI_OK) abort()
83
+ #define FFI_CALL(cif,fn,args,retaddr) \
84
+ ffi_call(&(cif),(void(*)(void))(fn),retaddr,args)
85
+
86
+ long clear_traces_i (long a, long b, long c, long d, long e, long f, long g, long h,
87
+ long i, long j, long k, long l, long m, long n, long o, long p)
88
+ { return 0; }
89
+ float clear_traces_f (float a, float b, float c, float d, float e, float f, float g,
90
+ float h, float i, float j, float k, float l, float m, float n,
91
+ float o, float p)
92
+ { return 0.0; }
93
+ double clear_traces_d (double a, double b, double c, double d, double e, double f, double g,
94
+ double h, double i, double j, double k, double l, double m, double n,
95
+ double o, double p)
96
+ { return 0.0; }
97
+ J clear_traces_J (void)
98
+ { J j; j.l1 = j.l2 = 0; return j; }
99
+ void clear_traces (void)
100
+ { clear_traces_i(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
101
+ clear_traces_f(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0);
102
+ clear_traces_d(0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0,0.0);
103
+ clear_traces_J();
104
+ }
105
+
106
+ void
107
+ void_tests (void)
108
+ {
109
+ #if (!defined(DGTEST)) || DGTEST == 1
110
+ v_v();
111
+ clear_traces();
112
+ {
113
+ ffi_cif cif;
114
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_void);
115
+ {
116
+ FFI_CALL(cif,v_v,NULL,NULL);
117
+ }
118
+ }
119
+ #endif
120
+ return;
121
+ }
122
+ void
123
+ int_tests (void)
124
+ {
125
+ int ir;
126
+ ffi_arg retvalue;
127
+ #if (!defined(DGTEST)) || DGTEST == 2
128
+ ir = i_v();
129
+ fprintf(out,"->%d\n",ir);
130
+ fflush(out);
131
+ ir = 0; clear_traces();
132
+ {
133
+ ffi_cif cif;
134
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_sint);
135
+ {
136
+ FFI_CALL(cif,i_v,NULL,&retvalue);
137
+ ir = retvalue;
138
+ }
139
+ }
140
+ fprintf(out,"->%d\n",ir);
141
+ fflush(out);
142
+ #endif
143
+
144
+ #if (!defined(DGTEST)) || DGTEST == 3
145
+ ir = i_i(i1);
146
+ fprintf(out,"->%d\n",ir);
147
+ fflush(out);
148
+ ir = 0; clear_traces();
149
+ {
150
+ ffi_type* argtypes[] = { &ffi_type_sint };
151
+ ffi_cif cif;
152
+ FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
153
+ {
154
+ /*const*/ void* args[] = { &i1 };
155
+ FFI_CALL(cif,i_i,args,&retvalue);
156
+ ir = retvalue;
157
+ }
158
+ }
159
+ fprintf(out,"->%d\n",ir);
160
+ fflush(out);
161
+ #endif
162
+
163
+ #if (!defined(DGTEST)) || DGTEST == 4
164
+ ir = i_i2(i1,i2);
165
+ fprintf(out,"->%d\n",ir);
166
+ fflush(out);
167
+ ir = 0; clear_traces();
168
+ {
169
+ ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint };
170
+ ffi_cif cif;
171
+ FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
172
+ {
173
+ /*const*/ void* args[] = { &i1, &i2 };
174
+ FFI_CALL(cif,i_i2,args,&retvalue);
175
+ ir = retvalue;
176
+ }
177
+ }
178
+ fprintf(out,"->%d\n",ir);
179
+ fflush(out);
180
+ #endif
181
+
182
+ #if (!defined(DGTEST)) || DGTEST == 5
183
+ ir = i_i4(i1,i2,i3,i4);
184
+ fprintf(out,"->%d\n",ir);
185
+ fflush(out);
186
+ ir = 0; clear_traces();
187
+ {
188
+ ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint };
189
+ ffi_cif cif;
190
+ FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
191
+ {
192
+ /*const*/ void* args[] = { &i1, &i2, &i3, &i4 };
193
+ FFI_CALL(cif,i_i4,args,&retvalue);
194
+ ir = retvalue;
195
+ }
196
+ }
197
+ fprintf(out,"->%d\n",ir);
198
+ fflush(out);
199
+ #endif
200
+
201
+ #if (!defined(DGTEST)) || DGTEST == 6
202
+ ir = i_i8(i1,i2,i3,i4,i5,i6,i7,i8);
203
+ fprintf(out,"->%d\n",ir);
204
+ fflush(out);
205
+ ir = 0; clear_traces();
206
+ {
207
+ ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint };
208
+ ffi_cif cif;
209
+ FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
210
+ {
211
+ /*const*/ void* args[] = { &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8 };
212
+ FFI_CALL(cif,i_i8,args,&retvalue);
213
+ ir = retvalue;
214
+ }
215
+ }
216
+ fprintf(out,"->%d\n",ir);
217
+ fflush(out);
218
+ #endif
219
+
220
+ #if (!defined(DGTEST)) || DGTEST == 7
221
+ ir = i_i16(i1,i2,i3,i4,i5,i6,i7,i8,i9,i10,i11,i12,i13,i14,i15,i16);
222
+ fprintf(out,"->%d\n",ir);
223
+ fflush(out);
224
+ ir = 0; clear_traces();
225
+ {
226
+ ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_sint };
227
+ ffi_cif cif;
228
+ FFI_PREP_CIF(cif,argtypes,ffi_type_sint);
229
+ {
230
+ /*const*/ void* args[] = { &i1, &i2, &i3, &i4, &i5, &i6, &i7, &i8, &i9, &i10, &i11, &i12, &i13, &i14, &i15, &i16 };
231
+ FFI_CALL(cif,i_i16,args,&retvalue);
232
+ ir = retvalue;
233
+ }
234
+ }
235
+ fprintf(out,"->%d\n",ir);
236
+ fflush(out);
237
+ #endif
238
+
239
+ return;
240
+ }
241
+ void
242
+ float_tests (void)
243
+ {
244
+ float fr;
245
+
246
+ #if (!defined(DGTEST)) || DGTEST == 8
247
+ fr = f_f(f1);
248
+ fprintf(out,"->%g\n",fr);
249
+ fflush(out);
250
+ fr = 0.0; clear_traces();
251
+ {
252
+ ffi_type* argtypes[] = { &ffi_type_float };
253
+ ffi_cif cif;
254
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
255
+ {
256
+ /*const*/ void* args[] = { &f1 };
257
+ FFI_CALL(cif,f_f,args,&fr);
258
+ }
259
+ }
260
+ fprintf(out,"->%g\n",fr);
261
+ fflush(out);
262
+ #endif
263
+
264
+ #if (!defined(DGTEST)) || DGTEST == 9
265
+ fr = f_f2(f1,f2);
266
+ fprintf(out,"->%g\n",fr);
267
+ fflush(out);
268
+ fr = 0.0; clear_traces();
269
+ {
270
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float };
271
+ ffi_cif cif;
272
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
273
+ {
274
+ /*const*/ void* args[] = { &f1, &f2 };
275
+ FFI_CALL(cif,f_f2,args,&fr);
276
+ }
277
+ }
278
+ fprintf(out,"->%g\n",fr);
279
+ fflush(out);
280
+ #endif
281
+
282
+ #if (!defined(DGTEST)) || DGTEST == 10
283
+ fr = f_f4(f1,f2,f3,f4);
284
+ fprintf(out,"->%g\n",fr);
285
+ fflush(out);
286
+ fr = 0.0; clear_traces();
287
+ {
288
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float };
289
+ ffi_cif cif;
290
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
291
+ {
292
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4 };
293
+ FFI_CALL(cif,f_f4,args,&fr);
294
+ }
295
+ }
296
+ fprintf(out,"->%g\n",fr);
297
+ fflush(out);
298
+ #endif
299
+
300
+ #if (!defined(DGTEST)) || DGTEST == 11
301
+ fr = f_f8(f1,f2,f3,f4,f5,f6,f7,f8);
302
+ fprintf(out,"->%g\n",fr);
303
+ fflush(out);
304
+ fr = 0.0; clear_traces();
305
+ {
306
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float };
307
+ ffi_cif cif;
308
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
309
+ {
310
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8 };
311
+ FFI_CALL(cif,f_f8,args,&fr);
312
+ }
313
+ }
314
+ fprintf(out,"->%g\n",fr);
315
+ fflush(out);
316
+ #endif
317
+
318
+ #if (!defined(DGTEST)) || DGTEST == 12
319
+ fr = f_f16(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16);
320
+ fprintf(out,"->%g\n",fr);
321
+ fflush(out);
322
+ fr = 0.0; clear_traces();
323
+ {
324
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float };
325
+ ffi_cif cif;
326
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
327
+ {
328
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &f13, &f14, &f15, &f16 };
329
+ FFI_CALL(cif,f_f16,args,&fr);
330
+ }
331
+ }
332
+ fprintf(out,"->%g\n",fr);
333
+ fflush(out);
334
+ #endif
335
+
336
+ #if (!defined(DGTEST)) || DGTEST == 13
337
+ fr = f_f24(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,f18,f19,f20,f21,f22,f23,f24);
338
+ fprintf(out,"->%g\n",fr);
339
+ fflush(out);
340
+ fr = 0.0; clear_traces();
341
+ {
342
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float };
343
+ ffi_cif cif;
344
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
345
+ {
346
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &f13, &f14, &f15, &f16, &f17, &f18, &f19, &f20, &f21, &f22, &f23, &f24 };
347
+ FFI_CALL(cif,f_f24,args,&fr);
348
+ }
349
+ }
350
+ fprintf(out,"->%g\n",fr);
351
+ fflush(out);
352
+ #endif
353
+ }
354
+ void
355
+ double_tests (void)
356
+ {
357
+ double dr;
358
+
359
+ #if (!defined(DGTEST)) || DGTEST == 14
360
+
361
+ dr = d_d(d1);
362
+ fprintf(out,"->%g\n",dr);
363
+ fflush(out);
364
+ dr = 0.0; clear_traces();
365
+ {
366
+ ffi_type* argtypes[] = { &ffi_type_double };
367
+ ffi_cif cif;
368
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
369
+ {
370
+ /*const*/ void* args[] = { &d1 };
371
+ FFI_CALL(cif,d_d,args,&dr);
372
+ }
373
+ }
374
+ fprintf(out,"->%g\n",dr);
375
+ fflush(out);
376
+ #endif
377
+
378
+ #if (!defined(DGTEST)) || DGTEST == 15
379
+ dr = d_d2(d1,d2);
380
+ fprintf(out,"->%g\n",dr);
381
+ fflush(out);
382
+ dr = 0.0; clear_traces();
383
+ {
384
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double };
385
+ ffi_cif cif;
386
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
387
+ {
388
+ /*const*/ void* args[] = { &d1, &d2 };
389
+ FFI_CALL(cif,d_d2,args,&dr);
390
+ }
391
+ }
392
+ fprintf(out,"->%g\n",dr);
393
+ fflush(out);
394
+ #endif
395
+
396
+ #if (!defined(DGTEST)) || DGTEST == 16
397
+ dr = d_d4(d1,d2,d3,d4);
398
+ fprintf(out,"->%g\n",dr);
399
+ fflush(out);
400
+ dr = 0.0; clear_traces();
401
+ {
402
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double };
403
+ ffi_cif cif;
404
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
405
+ {
406
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4 };
407
+ FFI_CALL(cif,d_d4,args,&dr);
408
+ }
409
+ }
410
+ fprintf(out,"->%g\n",dr);
411
+ fflush(out);
412
+ #endif
413
+
414
+ #if (!defined(DGTEST)) || DGTEST == 17
415
+ dr = d_d8(d1,d2,d3,d4,d5,d6,d7,d8);
416
+ fprintf(out,"->%g\n",dr);
417
+ fflush(out);
418
+ dr = 0.0; clear_traces();
419
+ {
420
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double };
421
+ ffi_cif cif;
422
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
423
+ {
424
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8 };
425
+ FFI_CALL(cif,d_d8,args,&dr);
426
+ }
427
+ }
428
+ fprintf(out,"->%g\n",dr);
429
+ fflush(out);
430
+ #endif
431
+
432
+ #if (!defined(DGTEST)) || DGTEST == 18
433
+ dr = d_d16(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16);
434
+ fprintf(out,"->%g\n",dr);
435
+ fflush(out);
436
+ dr = 0.0; clear_traces();
437
+ {
438
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double };
439
+ ffi_cif cif;
440
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
441
+ {
442
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &d10, &d11, &d12, &d13, &d14, &d15, &d16 };
443
+ FFI_CALL(cif,d_d16,args,&dr);
444
+ }
445
+ }
446
+ fprintf(out,"->%g\n",dr);
447
+ fflush(out);
448
+ #endif
449
+ return;
450
+ }
451
+ void
452
+ pointer_tests (void)
453
+ {
454
+ void* vpr;
455
+
456
+ #if (!defined(DGTEST)) || DGTEST == 19
457
+ vpr = vp_vpdpcpsp(&uc1,&d2,str3,&I4);
458
+ fprintf(out,"->0x%p\n",vpr);
459
+ fflush(out);
460
+ vpr = 0; clear_traces();
461
+ {
462
+ ffi_type* argtypes[] = { &ffi_type_pointer, &ffi_type_pointer, &ffi_type_pointer, &ffi_type_pointer };
463
+ ffi_cif cif;
464
+ FFI_PREP_CIF(cif,argtypes,ffi_type_pointer);
465
+ {
466
+ void* puc1 = &uc1;
467
+ void* pd2 = &d2;
468
+ void* pstr3 = str3;
469
+ void* pI4 = &I4;
470
+ /*const*/ void* args[] = { &puc1, &pd2, &pstr3, &pI4 };
471
+ FFI_CALL(cif,vp_vpdpcpsp,args,&vpr);
472
+ }
473
+ }
474
+ fprintf(out,"->0x%p\n",vpr);
475
+ fflush(out);
476
+ #endif
477
+ return;
478
+ }
479
+ void
480
+ mixed_number_tests (void)
481
+ {
482
+ uchar ucr;
483
+ ushort usr;
484
+ float fr;
485
+ double dr;
486
+ long long llr;
487
+
488
+ /* Unsigned types.
489
+ */
490
+ #if (!defined(DGTEST)) || DGTEST == 20
491
+ ucr = uc_ucsil(uc1, us2, ui3, ul4);
492
+ fprintf(out,"->%u\n",ucr);
493
+ fflush(out);
494
+ ucr = 0; clear_traces();
495
+ {
496
+ ffi_type* argtypes[] = { &ffi_type_uchar, &ffi_type_ushort, &ffi_type_uint, &ffi_type_ulong };
497
+ ffi_cif cif;
498
+ FFI_PREP_CIF(cif,argtypes,ffi_type_uchar);
499
+ {
500
+ ffi_arg r;
501
+ /*const*/ void* args[] = { &uc1, &us2, &ui3, &ul4 };
502
+ FFI_CALL(cif,uc_ucsil,args,&r);
503
+ ucr = (uchar) r;
504
+ }
505
+ }
506
+ fprintf(out,"->%u\n",ucr);
507
+ fflush(out);
508
+ #endif
509
+
510
+ #if (!defined(DGTEST)) || DGTEST == 21
511
+ /* Mixed int & float types.
512
+ */
513
+ dr = d_iidd(i1,i2,d3,d4);
514
+ fprintf(out,"->%g\n",dr);
515
+ fflush(out);
516
+ dr = 0.0; clear_traces();
517
+ {
518
+ ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_double, &ffi_type_double };
519
+ ffi_cif cif;
520
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
521
+ {
522
+ /*const*/ void* args[] = { &i1, &i2, &d3, &d4 };
523
+ FFI_CALL(cif,d_iidd,args,&dr);
524
+ }
525
+ }
526
+ fprintf(out,"->%g\n",dr);
527
+ fflush(out);
528
+ #endif
529
+
530
+ #if (!defined(DGTEST)) || DGTEST == 22
531
+ dr = d_iiidi(i1,i2,i3,d4,i5);
532
+ fprintf(out,"->%g\n",dr);
533
+ fflush(out);
534
+ dr = 0.0; clear_traces();
535
+ {
536
+ ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_double, &ffi_type_sint };
537
+ ffi_cif cif;
538
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
539
+ {
540
+ /*const*/ void* args[] = { &i1, &i2, &i3, &d4, &i5 };
541
+ FFI_CALL(cif,d_iiidi,args,&dr);
542
+ }
543
+ }
544
+ fprintf(out,"->%g\n",dr);
545
+ fflush(out);
546
+ #endif
547
+
548
+ #if (!defined(DGTEST)) || DGTEST == 23
549
+ dr = d_idid(i1,d2,i3,d4);
550
+ fprintf(out,"->%g\n",dr);
551
+ fflush(out);
552
+ dr = 0.0; clear_traces();
553
+ {
554
+ ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_double, &ffi_type_sint, &ffi_type_double };
555
+ ffi_cif cif;
556
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
557
+ {
558
+ /*const*/ void* args[] = { &i1, &d2, &i3, &d4 };
559
+ FFI_CALL(cif,d_idid,args,&dr);
560
+ }
561
+ }
562
+ fprintf(out,"->%g\n",dr);
563
+ fflush(out);
564
+ #endif
565
+
566
+ #if (!defined(DGTEST)) || DGTEST == 24
567
+ dr = d_fdi(f1,d2,i3);
568
+ fprintf(out,"->%g\n",dr);
569
+ fflush(out);
570
+ dr = 0.0; clear_traces();
571
+ {
572
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_double, &ffi_type_sint };
573
+ ffi_cif cif;
574
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
575
+ {
576
+ /*const*/ void* args[] = { &f1, &d2, &i3 };
577
+ FFI_CALL(cif,d_fdi,args,&dr);
578
+ }
579
+ }
580
+ fprintf(out,"->%g\n",dr);
581
+ fflush(out);
582
+ #endif
583
+
584
+ #if (!defined(DGTEST)) || DGTEST == 25
585
+ usr = us_cdcd(c1,d2,c3,d4);
586
+ fprintf(out,"->%u\n",usr);
587
+ fflush(out);
588
+ usr = 0; clear_traces();
589
+ {
590
+ ffi_type* argtypes[] = { &ffi_type_char, &ffi_type_double, &ffi_type_char, &ffi_type_double };
591
+ ffi_cif cif;
592
+ FFI_PREP_CIF(cif,argtypes,ffi_type_ushort);
593
+ {
594
+ ffi_arg rint;
595
+ /*const*/ void* args[] = { &c1, &d2, &c3, &d4 };
596
+ FFI_CALL(cif,us_cdcd,args,&rint);
597
+ usr = (ushort) rint;
598
+ }
599
+ }
600
+ fprintf(out,"->%u\n",usr);
601
+ fflush(out);
602
+ #endif
603
+
604
+ #if (!defined(DGTEST)) || DGTEST == 26
605
+ /* Long long types.
606
+ */
607
+ llr = ll_iiilli(i1,i2,i3,ll1,i13);
608
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
609
+ fflush(out);
610
+ llr = 0; clear_traces();
611
+ {
612
+ ffi_type* argtypes[] = { &ffi_type_sint, &ffi_type_sint, &ffi_type_sint, &ffi_type_slonglong, &ffi_type_sint };
613
+ ffi_cif cif;
614
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
615
+ {
616
+ /*const*/ void* args[] = { &i1, &i2, &i3, &ll1, &i13 };
617
+ FFI_CALL(cif,ll_iiilli,args,&llr);
618
+ }
619
+ }
620
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
621
+ fflush(out);
622
+ #endif
623
+
624
+ #if (!defined(DGTEST)) || DGTEST == 27
625
+ llr = ll_flli(f13,ll1,i13);
626
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
627
+ fflush(out);
628
+ llr = 0; clear_traces();
629
+ {
630
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_slonglong, &ffi_type_sint };
631
+ ffi_cif cif;
632
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
633
+ {
634
+ /*const*/ void* args[] = { &f13, &ll1, &i13 };
635
+ FFI_CALL(cif,ll_flli,args,&llr);
636
+ }
637
+ }
638
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
639
+ fflush(out);
640
+ #endif
641
+
642
+ #if (!defined(DGTEST)) || DGTEST == 28
643
+ fr = f_fi(f1,i9);
644
+ fprintf(out,"->%g\n",fr);
645
+ fflush(out);
646
+ fr = 0.0; clear_traces();
647
+ {
648
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_sint };
649
+ ffi_cif cif;
650
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
651
+ {
652
+ /*const*/ void* args[] = { &f1, &i9 };
653
+ FFI_CALL(cif,f_fi,args,&fr);
654
+ }
655
+ }
656
+ fprintf(out,"->%g\n",fr);
657
+ fflush(out);
658
+ #endif
659
+
660
+ #if (!defined(DGTEST)) || DGTEST == 29
661
+ fr = f_f2i(f1,f2,i9);
662
+ fprintf(out,"->%g\n",fr);
663
+ fflush(out);
664
+ fr = 0.0; clear_traces();
665
+ {
666
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_sint };
667
+ ffi_cif cif;
668
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
669
+ {
670
+ /*const*/ void* args[] = { &f1, &f2, &i9 };
671
+ FFI_CALL(cif,f_f2i,args,&fr);
672
+ }
673
+ }
674
+ fprintf(out,"->%g\n",fr);
675
+ fflush(out);
676
+ #endif
677
+
678
+ #if (!defined(DGTEST)) || DGTEST == 30
679
+ fr = f_f3i(f1,f2,f3,i9);
680
+ fprintf(out,"->%g\n",fr);
681
+ fflush(out);
682
+ fr = 0.0; clear_traces();
683
+ {
684
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
685
+ ffi_cif cif;
686
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
687
+ {
688
+ /*const*/ void* args[] = { &f1, &f2, &f3, &i9 };
689
+ FFI_CALL(cif,f_f3i,args,&fr);
690
+ }
691
+ }
692
+ fprintf(out,"->%g\n",fr);
693
+ fflush(out);
694
+ #endif
695
+
696
+ #if (!defined(DGTEST)) || DGTEST == 31
697
+ fr = f_f4i(f1,f2,f3,f4,i9);
698
+ fprintf(out,"->%g\n",fr);
699
+ fflush(out);
700
+ fr = 0.0; clear_traces();
701
+ {
702
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
703
+ ffi_cif cif;
704
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
705
+ {
706
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &i9 };
707
+ FFI_CALL(cif,f_f4i,args,&fr);
708
+ }
709
+ }
710
+ fprintf(out,"->%g\n",fr);
711
+ fflush(out);
712
+ #endif
713
+
714
+ #if (!defined(DGTEST)) || DGTEST == 32
715
+ fr = f_f7i(f1,f2,f3,f4,f5,f6,f7,i9);
716
+ fprintf(out,"->%g\n",fr);
717
+ fflush(out);
718
+ fr = 0.0; clear_traces();
719
+ {
720
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
721
+ ffi_cif cif;
722
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
723
+ {
724
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &i9 };
725
+ FFI_CALL(cif,f_f7i,args,&fr);
726
+ }
727
+ }
728
+ fprintf(out,"->%g\n",fr);
729
+ fflush(out);
730
+ #endif
731
+
732
+ #if (!defined(DGTEST)) || DGTEST == 33
733
+ fr = f_f8i(f1,f2,f3,f4,f5,f6,f7,f8,i9);
734
+ fprintf(out,"->%g\n",fr);
735
+ fflush(out);
736
+ fr = 0.0; clear_traces();
737
+ {
738
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
739
+ ffi_cif cif;
740
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
741
+ {
742
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &i9 };
743
+ FFI_CALL(cif,f_f8i,args,&fr);
744
+ }
745
+ }
746
+ fprintf(out,"->%g\n",fr);
747
+ fflush(out);
748
+ #endif
749
+
750
+ #if (!defined(DGTEST)) || DGTEST == 34
751
+ fr = f_f12i(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,i9);
752
+ fprintf(out,"->%g\n",fr);
753
+ fflush(out);
754
+ fr = 0.0; clear_traces();
755
+ {
756
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
757
+ ffi_cif cif;
758
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
759
+ {
760
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &i9 };
761
+ FFI_CALL(cif,f_f12i,args,&fr);
762
+ }
763
+ }
764
+ fprintf(out,"->%g\n",fr);
765
+ fflush(out);
766
+ #endif
767
+
768
+ #if (!defined(DGTEST)) || DGTEST == 35
769
+ fr = f_f13i(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,i9);
770
+ fprintf(out,"->%g\n",fr);
771
+ fflush(out);
772
+ fr = 0.0; clear_traces();
773
+ {
774
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_sint };
775
+ ffi_cif cif;
776
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
777
+ {
778
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &f13, &i9 };
779
+ FFI_CALL(cif,f_f13i,args,&fr);
780
+ }
781
+ }
782
+ fprintf(out,"->%g\n",fr);
783
+ fflush(out);
784
+ #endif
785
+
786
+ #if (!defined(DGTEST)) || DGTEST == 36
787
+ dr = d_di(d1,i9);
788
+ fprintf(out,"->%g\n",dr);
789
+ fflush(out);
790
+ dr = 0.0; clear_traces();
791
+ {
792
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_sint };
793
+ ffi_cif cif;
794
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
795
+ {
796
+ /*const*/ void* args[] = { &d1, &i9 };
797
+ FFI_CALL(cif,d_di,args,&dr);
798
+ }
799
+ }
800
+ fprintf(out,"->%g\n",dr);
801
+ fflush(out);
802
+ #endif
803
+
804
+ #if (!defined(DGTEST)) || DGTEST == 37
805
+ dr = d_d2i(d1,d2,i9);
806
+ fprintf(out,"->%g\n",dr);
807
+ fflush(out);
808
+ dr = 0.0; clear_traces();
809
+ {
810
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_sint };
811
+ ffi_cif cif;
812
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
813
+ {
814
+ /*const*/ void* args[] = { &d1, &d2, &i9 };
815
+ FFI_CALL(cif,d_d2i,args,&dr);
816
+ }
817
+ }
818
+ fprintf(out,"->%g\n",dr);
819
+ fflush(out);
820
+ #endif
821
+
822
+ #if (!defined(DGTEST)) || DGTEST == 38
823
+ dr = d_d3i(d1,d2,d3,i9);
824
+ fprintf(out,"->%g\n",dr);
825
+ fflush(out);
826
+ dr = 0.0; clear_traces();
827
+ {
828
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
829
+ ffi_cif cif;
830
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
831
+ {
832
+ /*const*/ void* args[] = { &d1, &d2, &d3, &i9 };
833
+ FFI_CALL(cif,d_d3i,args,&dr);
834
+ }
835
+ }
836
+ fprintf(out,"->%g\n",dr);
837
+ fflush(out);
838
+ #endif
839
+
840
+ #if (!defined(DGTEST)) || DGTEST == 39
841
+ dr = d_d4i(d1,d2,d3,d4,i9);
842
+ fprintf(out,"->%g\n",dr);
843
+ fflush(out);
844
+ dr = 0.0; clear_traces();
845
+ {
846
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
847
+ ffi_cif cif;
848
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
849
+ {
850
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &i9 };
851
+ FFI_CALL(cif,d_d4i,args,&dr);
852
+ }
853
+ }
854
+ fprintf(out,"->%g\n",dr);
855
+ fflush(out);
856
+ #endif
857
+
858
+ #if (!defined(DGTEST)) || DGTEST == 40
859
+ dr = d_d7i(d1,d2,d3,d4,d5,d6,d7,i9);
860
+ fprintf(out,"->%g\n",dr);
861
+ fflush(out);
862
+ dr = 0.0; clear_traces();
863
+ {
864
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
865
+ ffi_cif cif;
866
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
867
+ {
868
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &i9 };
869
+ FFI_CALL(cif,d_d7i,args,&dr);
870
+ }
871
+ }
872
+ fprintf(out,"->%g\n",dr);
873
+ fflush(out);
874
+ #endif
875
+
876
+ #if (!defined(DGTEST)) || DGTEST == 41
877
+ dr = d_d8i(d1,d2,d3,d4,d5,d6,d7,d8,i9);
878
+ fprintf(out,"->%g\n",dr);
879
+ fflush(out);
880
+ dr = 0.0; clear_traces();
881
+ {
882
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
883
+ ffi_cif cif;
884
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
885
+ {
886
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &i9 };
887
+ FFI_CALL(cif,d_d8i,args,&dr);
888
+ }
889
+ }
890
+ fprintf(out,"->%g\n",dr);
891
+ fflush(out);
892
+ #endif
893
+
894
+ #if (!defined(DGTEST)) || DGTEST == 42
895
+ dr = d_d12i(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,i9);
896
+ fprintf(out,"->%g\n",dr);
897
+ fflush(out);
898
+ dr = 0.0; clear_traces();
899
+ {
900
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
901
+ ffi_cif cif;
902
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
903
+ {
904
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &d10, &d11, &d12, &i9 };
905
+ FFI_CALL(cif,d_d12i,args,&dr);
906
+ }
907
+ }
908
+ fprintf(out,"->%g\n",dr);
909
+ fflush(out);
910
+ #endif
911
+
912
+ #if (!defined(DGTEST)) || DGTEST == 43
913
+ dr = d_d13i(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,i9);
914
+ fprintf(out,"->%g\n",dr);
915
+ fflush(out);
916
+ dr = 0.0; clear_traces();
917
+ {
918
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_sint };
919
+ ffi_cif cif;
920
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
921
+ {
922
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &d10, &d11, &d12, &d13, &i9 };
923
+ FFI_CALL(cif,d_d13i,args,&dr);
924
+ }
925
+ }
926
+ fprintf(out,"->%g\n",dr);
927
+ fflush(out);
928
+ #endif
929
+ return;
930
+ }
931
+ void
932
+ small_structure_return_tests (void)
933
+ {
934
+ #if (!defined(DGTEST)) || DGTEST == 44
935
+ {
936
+ Size1 r = S1_v();
937
+ fprintf(out,"->{%c}\n",r.x1);
938
+ fflush(out);
939
+ memset(&r,0,sizeof(r)); clear_traces();
940
+ {
941
+ ffi_type* ffi_type_Size1_elements[] = { &ffi_type_char, NULL };
942
+ ffi_type ffi_type_Size1;
943
+ ffi_type_Size1.type = FFI_TYPE_STRUCT;
944
+ ffi_type_Size1.size = sizeof(Size1);
945
+ ffi_type_Size1.alignment = alignof_slot(Size1);
946
+ ffi_type_Size1.elements = ffi_type_Size1_elements;
947
+ ffi_cif cif;
948
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size1);
949
+ {
950
+ FFI_CALL(cif,S1_v,NULL,&r);
951
+ }
952
+ }
953
+ fprintf(out,"->{%c}\n",r.x1);
954
+ fflush(out);
955
+ }
956
+ #endif
957
+ #if (!defined(DGTEST)) || DGTEST == 45
958
+ {
959
+ Size2 r = S2_v();
960
+ fprintf(out,"->{%c%c}\n",r.x1,r.x2);
961
+ fflush(out);
962
+ memset(&r,0,sizeof(r)); clear_traces();
963
+ {
964
+ ffi_type* ffi_type_Size2_elements[] = { &ffi_type_char, &ffi_type_char, NULL };
965
+ ffi_type ffi_type_Size2;
966
+ ffi_type_Size2.type = FFI_TYPE_STRUCT;
967
+ ffi_type_Size2.size = sizeof(Size2);
968
+ ffi_type_Size2.alignment = alignof_slot(Size2);
969
+ ffi_type_Size2.elements = ffi_type_Size2_elements;
970
+ ffi_cif cif;
971
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size2);
972
+ {
973
+ FFI_CALL(cif,S2_v,NULL,&r);
974
+ }
975
+ }
976
+ fprintf(out,"->{%c%c}\n",r.x1,r.x2);
977
+ fflush(out);
978
+ }
979
+ #endif
980
+ #if (!defined(DGTEST)) || DGTEST == 46
981
+ {
982
+ Size3 r = S3_v();
983
+ fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3);
984
+ fflush(out);
985
+ memset(&r,0,sizeof(r)); clear_traces();
986
+ {
987
+ ffi_type* ffi_type_Size3_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
988
+ ffi_type ffi_type_Size3;
989
+ ffi_type_Size3.type = FFI_TYPE_STRUCT;
990
+ ffi_type_Size3.size = sizeof(Size3);
991
+ ffi_type_Size3.alignment = alignof_slot(Size3);
992
+ ffi_type_Size3.elements = ffi_type_Size3_elements;
993
+ ffi_cif cif;
994
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size3);
995
+ {
996
+ FFI_CALL(cif,S3_v,NULL,&r);
997
+ }
998
+ }
999
+ fprintf(out,"->{%c%c%c}\n",r.x1,r.x2,r.x3);
1000
+ fflush(out);
1001
+ }
1002
+ #endif
1003
+ #if (!defined(DGTEST)) || DGTEST == 47
1004
+ {
1005
+ Size4 r = S4_v();
1006
+ fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4);
1007
+ fflush(out);
1008
+ memset(&r,0,sizeof(r)); clear_traces();
1009
+ {
1010
+ ffi_type* ffi_type_Size4_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
1011
+ ffi_type ffi_type_Size4;
1012
+ ffi_type_Size4.type = FFI_TYPE_STRUCT;
1013
+ ffi_type_Size4.size = sizeof(Size4);
1014
+ ffi_type_Size4.alignment = alignof_slot(Size4);
1015
+ ffi_type_Size4.elements = ffi_type_Size4_elements;
1016
+ ffi_cif cif;
1017
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size4);
1018
+ {
1019
+ FFI_CALL(cif,S4_v,NULL,&r);
1020
+ }
1021
+ }
1022
+ fprintf(out,"->{%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4);
1023
+ fflush(out);
1024
+ }
1025
+ #endif
1026
+ #if (!defined(DGTEST)) || DGTEST == 48
1027
+ {
1028
+ Size7 r = S7_v();
1029
+ fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7);
1030
+ fflush(out);
1031
+ memset(&r,0,sizeof(r)); clear_traces();
1032
+ {
1033
+ ffi_type* ffi_type_Size7_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
1034
+ ffi_type ffi_type_Size7;
1035
+ ffi_type_Size7.type = FFI_TYPE_STRUCT;
1036
+ ffi_type_Size7.size = sizeof(Size7);
1037
+ ffi_type_Size7.alignment = alignof_slot(Size7);
1038
+ ffi_type_Size7.elements = ffi_type_Size7_elements;
1039
+ ffi_cif cif;
1040
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size7);
1041
+ {
1042
+ FFI_CALL(cif,S7_v,NULL,&r);
1043
+ }
1044
+ }
1045
+ fprintf(out,"->{%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7);
1046
+ fflush(out);
1047
+ }
1048
+ #endif
1049
+ #if (!defined(DGTEST)) || DGTEST == 49
1050
+ {
1051
+ Size8 r = S8_v();
1052
+ fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8);
1053
+ fflush(out);
1054
+ memset(&r,0,sizeof(r)); clear_traces();
1055
+ {
1056
+ ffi_type* ffi_type_Size8_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
1057
+ ffi_type ffi_type_Size8;
1058
+ ffi_type_Size8.type = FFI_TYPE_STRUCT;
1059
+ ffi_type_Size8.size = sizeof(Size8);
1060
+ ffi_type_Size8.alignment = alignof_slot(Size8);
1061
+ ffi_type_Size8.elements = ffi_type_Size8_elements;
1062
+ ffi_cif cif;
1063
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size8);
1064
+ {
1065
+ FFI_CALL(cif,S8_v,NULL,&r);
1066
+ }
1067
+ }
1068
+ fprintf(out,"->{%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8);
1069
+ fflush(out);
1070
+ }
1071
+ #endif
1072
+ #if (!defined(DGTEST)) || DGTEST == 50
1073
+ {
1074
+ Size12 r = S12_v();
1075
+ fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12);
1076
+ fflush(out);
1077
+ memset(&r,0,sizeof(r)); clear_traces();
1078
+ {
1079
+ ffi_type* ffi_type_Size12_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
1080
+ ffi_type ffi_type_Size12;
1081
+ ffi_type_Size12.type = FFI_TYPE_STRUCT;
1082
+ ffi_type_Size12.size = sizeof(Size12);
1083
+ ffi_type_Size12.alignment = alignof_slot(Size12);
1084
+ ffi_type_Size12.elements = ffi_type_Size12_elements;
1085
+ ffi_cif cif;
1086
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size12);
1087
+ {
1088
+ FFI_CALL(cif,S12_v,NULL,&r);
1089
+ }
1090
+ }
1091
+ fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12);
1092
+ fflush(out);
1093
+ }
1094
+ #endif
1095
+ #if (!defined(DGTEST)) || DGTEST == 51
1096
+ {
1097
+ Size15 r = S15_v();
1098
+ fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15);
1099
+ fflush(out);
1100
+ memset(&r,0,sizeof(r)); clear_traces();
1101
+ {
1102
+ ffi_type* ffi_type_Size15_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
1103
+ ffi_type ffi_type_Size15;
1104
+ ffi_type_Size15.type = FFI_TYPE_STRUCT;
1105
+ ffi_type_Size15.size = sizeof(Size15);
1106
+ ffi_type_Size15.alignment = alignof_slot(Size15);
1107
+ ffi_type_Size15.elements = ffi_type_Size15_elements;
1108
+ ffi_cif cif;
1109
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size15);
1110
+ {
1111
+ FFI_CALL(cif,S15_v,NULL,&r);
1112
+ }
1113
+ }
1114
+ fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15);
1115
+ fflush(out);
1116
+ }
1117
+ #endif
1118
+ #if (!defined(DGTEST)) || DGTEST == 52
1119
+ {
1120
+ Size16 r = S16_v();
1121
+ fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16);
1122
+ fflush(out);
1123
+ memset(&r,0,sizeof(r)); clear_traces();
1124
+ {
1125
+ ffi_type* ffi_type_Size16_elements[] = { &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, &ffi_type_char, NULL };
1126
+ ffi_type ffi_type_Size16;
1127
+ ffi_type_Size16.type = FFI_TYPE_STRUCT;
1128
+ ffi_type_Size16.size = sizeof(Size16);
1129
+ ffi_type_Size16.alignment = alignof_slot(Size16);
1130
+ ffi_type_Size16.elements = ffi_type_Size16_elements;
1131
+ ffi_cif cif;
1132
+ FFI_PREP_CIF_NOARGS(cif,ffi_type_Size16);
1133
+ {
1134
+ FFI_CALL(cif,S16_v,NULL,&r);
1135
+ }
1136
+ }
1137
+ fprintf(out,"->{%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c%c}\n",r.x1,r.x2,r.x3,r.x4,r.x5,r.x6,r.x7,r.x8,r.x9,r.x10,r.x11,r.x12,r.x13,r.x14,r.x15,r.x16);
1138
+ fflush(out);
1139
+ }
1140
+ #endif
1141
+ }
1142
+ void
1143
+ structure_tests (void)
1144
+ {
1145
+ Int Ir;
1146
+ Char Cr;
1147
+ Float Fr;
1148
+ Double Dr;
1149
+ J Jr;
1150
+ #ifndef SKIP_EXTRA_STRUCTS
1151
+ T Tr;
1152
+ X Xr;
1153
+ #endif
1154
+
1155
+ #if (!defined(DGTEST)) || DGTEST == 53
1156
+ Ir = I_III(I1,I2,I3);
1157
+ fprintf(out,"->{%d}\n",Ir.x);
1158
+ fflush(out);
1159
+ Ir.x = 0; clear_traces();
1160
+ {
1161
+ ffi_type* ffi_type_Int_elements[] = { &ffi_type_sint, NULL };
1162
+ ffi_type ffi_type_Int;
1163
+ ffi_type_Int.type = FFI_TYPE_STRUCT;
1164
+ ffi_type_Int.size = sizeof(Int);
1165
+ ffi_type_Int.alignment = alignof_slot(Int);
1166
+ ffi_type_Int.elements = ffi_type_Int_elements;
1167
+ ffi_type* argtypes[] = { &ffi_type_Int, &ffi_type_Int, &ffi_type_Int };
1168
+ ffi_cif cif;
1169
+ FFI_PREP_CIF(cif,argtypes,ffi_type_Int);
1170
+ {
1171
+ /*const*/ void* args[] = { &I1, &I2, &I3 };
1172
+ FFI_CALL(cif,I_III,args,&Ir);
1173
+ }
1174
+ }
1175
+ fprintf(out,"->{%d}\n",Ir.x);
1176
+ fflush(out);
1177
+ #endif
1178
+ #if (!defined(DGTEST)) || DGTEST == 54
1179
+ Cr = C_CdC(C1,d2,C3);
1180
+ fprintf(out,"->{'%c'}\n",Cr.x);
1181
+ fflush(out);
1182
+ Cr.x = '\0'; clear_traces();
1183
+ {
1184
+ ffi_type* ffi_type_Char_elements[] = { &ffi_type_char, NULL };
1185
+ ffi_type ffi_type_Char;
1186
+ ffi_type_Char.type = FFI_TYPE_STRUCT;
1187
+ ffi_type_Char.size = sizeof(Char);
1188
+ ffi_type_Char.alignment = alignof_slot(Char);
1189
+ ffi_type_Char.elements = ffi_type_Char_elements;
1190
+ ffi_type* argtypes[] = { &ffi_type_Char, &ffi_type_double, &ffi_type_Char };
1191
+ ffi_cif cif;
1192
+ FFI_PREP_CIF(cif,argtypes,ffi_type_Char);
1193
+ {
1194
+ /*const*/ void* args[] = { &C1, &d2, &C3 };
1195
+ FFI_CALL(cif,C_CdC,args,&Cr);
1196
+ }
1197
+ }
1198
+ fprintf(out,"->{'%c'}\n",Cr.x);
1199
+ fflush(out);
1200
+ #endif
1201
+ #if (!defined(DGTEST)) || DGTEST == 55
1202
+ Fr = F_Ffd(F1,f2,d3);
1203
+ fprintf(out,"->{%g}\n",Fr.x);
1204
+ fflush(out);
1205
+ Fr.x = 0.0; clear_traces();
1206
+ {
1207
+ ffi_type* ffi_type_Float_elements[] = { &ffi_type_float, NULL };
1208
+ ffi_type ffi_type_Float;
1209
+ ffi_type_Float.type = FFI_TYPE_STRUCT;
1210
+ ffi_type_Float.size = sizeof(Float);
1211
+ ffi_type_Float.alignment = alignof_slot(Float);
1212
+ ffi_type_Float.elements = ffi_type_Float_elements;
1213
+ ffi_type* argtypes[] = { &ffi_type_Float, &ffi_type_float, &ffi_type_double };
1214
+ ffi_cif cif;
1215
+ FFI_PREP_CIF(cif,argtypes,ffi_type_Float);
1216
+ {
1217
+ /*const*/ void* args[] = { &F1, &f2, &d3 };
1218
+ FFI_CALL(cif,F_Ffd,args,&Fr);
1219
+ }
1220
+ }
1221
+ fprintf(out,"->{%g}\n",Fr.x);
1222
+ fflush(out);
1223
+ #endif
1224
+ #if (!defined(DGTEST)) || DGTEST == 56
1225
+ Dr = D_fDd(f1,D2,d3);
1226
+ fprintf(out,"->{%g}\n",Dr.x);
1227
+ fflush(out);
1228
+ Dr.x = 0.0; clear_traces();
1229
+ {
1230
+ ffi_type* ffi_type_Double_elements[] = { &ffi_type_double, NULL };
1231
+ ffi_type ffi_type_Double;
1232
+ ffi_type_Double.type = FFI_TYPE_STRUCT;
1233
+ ffi_type_Double.size = sizeof(Double);
1234
+ ffi_type_Double.alignment = alignof_slot(Double);
1235
+ ffi_type_Double.elements = ffi_type_Double_elements;
1236
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_Double, &ffi_type_double };
1237
+ ffi_cif cif;
1238
+ FFI_PREP_CIF(cif,argtypes,ffi_type_Double);
1239
+ {
1240
+ /*const*/ void* args[] = { &f1, &D2, &d3 };
1241
+ FFI_CALL(cif,D_fDd,args,&Dr);
1242
+ }
1243
+ }
1244
+ fprintf(out,"->{%g}\n",Dr.x);
1245
+ fflush(out);
1246
+ #endif
1247
+ #if (!defined(DGTEST)) || DGTEST == 57
1248
+ Dr = D_Dfd(D1,f2,d3);
1249
+ fprintf(out,"->{%g}\n",Dr.x);
1250
+ fflush(out);
1251
+ Dr.x = 0.0; clear_traces();
1252
+ {
1253
+ ffi_type* ffi_type_Double_elements[] = { &ffi_type_double, NULL };
1254
+ ffi_type ffi_type_Double;
1255
+ ffi_type_Double.type = FFI_TYPE_STRUCT;
1256
+ ffi_type_Double.size = sizeof(Double);
1257
+ ffi_type_Double.alignment = alignof_slot(Double);
1258
+ ffi_type_Double.elements = ffi_type_Double_elements;
1259
+ ffi_type* argtypes[] = { &ffi_type_Double, &ffi_type_float, &ffi_type_double };
1260
+ ffi_cif cif;
1261
+ FFI_PREP_CIF(cif,argtypes,ffi_type_Double);
1262
+ {
1263
+ /*const*/ void* args[] = { &D1, &f2, &d3 };
1264
+ FFI_CALL(cif,D_Dfd,args,&Dr);
1265
+ }
1266
+ }
1267
+ fprintf(out,"->{%g}\n",Dr.x);
1268
+ fflush(out);
1269
+ #endif
1270
+ #if (!defined(DGTEST)) || DGTEST == 58
1271
+ Jr = J_JiJ(J1,i2,J2);
1272
+ fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2);
1273
+ fflush(out);
1274
+ Jr.l1 = Jr.l2 = 0; clear_traces();
1275
+ {
1276
+ ffi_type* ffi_type_J_elements[] = { &ffi_type_slong, &ffi_type_slong, NULL };
1277
+ ffi_type ffi_type_J;
1278
+ ffi_type_J.type = FFI_TYPE_STRUCT;
1279
+ ffi_type_J.size = sizeof(J);
1280
+ ffi_type_J.alignment = alignof_slot(J);
1281
+ ffi_type_J.elements = ffi_type_J_elements;
1282
+ ffi_type* argtypes[] = { &ffi_type_J, &ffi_type_sint, &ffi_type_J };
1283
+ ffi_cif cif;
1284
+ FFI_PREP_CIF(cif,argtypes,ffi_type_J);
1285
+ {
1286
+ /*const*/ void* args[] = { &J1, &i2, &J2 };
1287
+ FFI_CALL(cif,J_JiJ,args,&Jr);
1288
+ }
1289
+ }
1290
+ fprintf(out,"->{%ld,%ld}\n",Jr.l1,Jr.l2);
1291
+ fflush(out);
1292
+ #endif
1293
+ #ifndef SKIP_EXTRA_STRUCTS
1294
+ #if (!defined(DGTEST)) || DGTEST == 59
1295
+ Tr = T_TcT(T1,' ',T2);
1296
+ fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]);
1297
+ fflush(out);
1298
+ Tr.c[0] = Tr.c[1] = Tr.c[2] = 0; clear_traces();
1299
+ {
1300
+ ffi_type* ffi_type_T_elements[] = { ??, NULL };
1301
+ ffi_type ffi_type_T;
1302
+ ffi_type_T.type = FFI_TYPE_STRUCT;
1303
+ ffi_type_T.size = sizeof(T);
1304
+ ffi_type_T.alignment = alignof_slot(T);
1305
+ ffi_type_T.elements = ffi_type_T_elements;
1306
+ ffi_type* argtypes[] = { &ffi_type_T, &ffi_type_char, &ffi_type_T };
1307
+ ffi_cif cif;
1308
+ FFI_PREP_CIF(cif,argtypes,ffi_type_T);
1309
+ {
1310
+ char space = ' ';
1311
+ /*const*/ void* args[] = { &T1, &space, &T2 };
1312
+ FFI_CALL(cif,T_TcT,args,&Tr);
1313
+ }
1314
+ }
1315
+ fprintf(out,"->{\"%c%c%c\"}\n",Tr.c[0],Tr.c[1],Tr.c[2]);
1316
+ fflush(out);
1317
+ #endif
1318
+ #if (!defined(DGTEST)) || DGTEST == 60
1319
+ Xr = X_BcdB(B1,c2,d3,B2);
1320
+ fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1);
1321
+ fflush(out);
1322
+ Xr.c[0]=Xr.c1='\0'; clear_traces();
1323
+ {
1324
+ ffi_type* ffi_type_X_elements[] = { ??, NULL };
1325
+ ffi_type ffi_type_X;
1326
+ ffi_type_X.type = FFI_TYPE_STRUCT;
1327
+ ffi_type_X.size = sizeof(X);
1328
+ ffi_type_X.alignment = alignof_slot(X);
1329
+ ffi_type_X.elements = ffi_type_X_elements;
1330
+ ffi_type* argtypes[] = { &ffi_type_X, &ffi_type_char, &ffi_type_double, &ffi_type_X };
1331
+ ffi_cif cif;
1332
+ FFI_PREP_CIF(cif,argtypes,ffi_type_X);
1333
+ {
1334
+ /*const*/ void* args[] = { &B1, &c2, &d3, &B2 };
1335
+ FFI_CALL(cif,X_BcdB,args,&Xr);
1336
+ }
1337
+ }
1338
+ fprintf(out,"->{\"%s\",'%c'}\n",Xr.c,Xr.c1);
1339
+ fflush(out);
1340
+ #endif
1341
+ #endif
1342
+
1343
+ return;
1344
+ }
1345
+
1346
+ void
1347
+ gpargs_boundary_tests (void)
1348
+ {
1349
+ ffi_type* ffi_type_K_elements[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, NULL };
1350
+ ffi_type ffi_type_K;
1351
+ ffi_type* ffi_type_L_elements[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, NULL };
1352
+ ffi_type ffi_type_L;
1353
+ long lr;
1354
+ long long llr;
1355
+ float fr;
1356
+ double dr;
1357
+
1358
+ ffi_type_K.type = FFI_TYPE_STRUCT;
1359
+ ffi_type_K.size = sizeof(K);
1360
+ ffi_type_K.alignment = alignof_slot(K);
1361
+ ffi_type_K.elements = ffi_type_K_elements;
1362
+
1363
+ ffi_type_L.type = FFI_TYPE_STRUCT;
1364
+ ffi_type_L.size = sizeof(L);
1365
+ ffi_type_L.alignment = alignof_slot(L);
1366
+ ffi_type_L.elements = ffi_type_L_elements;
1367
+
1368
+ #if (!defined(DGTEST)) || DGTEST == 61
1369
+ lr = l_l0K(K1,l9);
1370
+ fprintf(out,"->%ld\n",lr);
1371
+ fflush(out);
1372
+ lr = 0; clear_traces();
1373
+ {
1374
+ ffi_type* argtypes[] = { &ffi_type_K, &ffi_type_slong };
1375
+ ffi_cif cif;
1376
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
1377
+ {
1378
+ /*const*/ void* args[] = { &K1, &l9 };
1379
+ FFI_CALL(cif,l_l0K,args,&lr);
1380
+ }
1381
+ }
1382
+ fprintf(out,"->%ld\n",lr);
1383
+ fflush(out);
1384
+ #endif
1385
+ #if (!defined(DGTEST)) || DGTEST == 62
1386
+ lr = l_l1K(l1,K1,l9);
1387
+ fprintf(out,"->%ld\n",lr);
1388
+ fflush(out);
1389
+ lr = 0; clear_traces();
1390
+ {
1391
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
1392
+ ffi_cif cif;
1393
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
1394
+ {
1395
+ /*const*/ void* args[] = { &l1, &K1, &l9 };
1396
+ FFI_CALL(cif,l_l1K,args,&lr);
1397
+ }
1398
+ }
1399
+ fprintf(out,"->%ld\n",lr);
1400
+ fflush(out);
1401
+ #endif
1402
+ #if (!defined(DGTEST)) || DGTEST == 63
1403
+ lr = l_l2K(l1,l2,K1,l9);
1404
+ fprintf(out,"->%ld\n",lr);
1405
+ fflush(out);
1406
+ lr = 0; clear_traces();
1407
+ {
1408
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
1409
+ ffi_cif cif;
1410
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
1411
+ {
1412
+ /*const*/ void* args[] = { &l1, &l2, &K1, &l9 };
1413
+ FFI_CALL(cif,l_l2K,args,&lr);
1414
+ }
1415
+ }
1416
+ fprintf(out,"->%ld\n",lr);
1417
+ fflush(out);
1418
+ #endif
1419
+ #if (!defined(DGTEST)) || DGTEST == 64
1420
+ lr = l_l3K(l1,l2,l3,K1,l9);
1421
+ fprintf(out,"->%ld\n",lr);
1422
+ fflush(out);
1423
+ lr = 0; clear_traces();
1424
+ {
1425
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
1426
+ ffi_cif cif;
1427
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
1428
+ {
1429
+ /*const*/ void* args[] = { &l1, &l2, &l3, &K1, &l9 };
1430
+ FFI_CALL(cif,l_l3K,args,&lr);
1431
+ }
1432
+ }
1433
+ fprintf(out,"->%ld\n",lr);
1434
+ fflush(out);
1435
+ #endif
1436
+ #if (!defined(DGTEST)) || DGTEST == 65
1437
+ lr = l_l4K(l1,l2,l3,l4,K1,l9);
1438
+ fprintf(out,"->%ld\n",lr);
1439
+ fflush(out);
1440
+ lr = 0; clear_traces();
1441
+ {
1442
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
1443
+ ffi_cif cif;
1444
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
1445
+ {
1446
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &K1, &l9 };
1447
+ FFI_CALL(cif,l_l4K,args,&lr);
1448
+ }
1449
+ }
1450
+ fprintf(out,"->%ld\n",lr);
1451
+ fflush(out);
1452
+ #endif
1453
+ #if (!defined(DGTEST)) || DGTEST == 66
1454
+ lr = l_l5K(l1,l2,l3,l4,l5,K1,l9);
1455
+ fprintf(out,"->%ld\n",lr);
1456
+ fflush(out);
1457
+ lr = 0; clear_traces();
1458
+ {
1459
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
1460
+ ffi_cif cif;
1461
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
1462
+ {
1463
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &K1, &l9 };
1464
+ FFI_CALL(cif,l_l5K,args,&lr);
1465
+ }
1466
+ }
1467
+ fprintf(out,"->%ld\n",lr);
1468
+ fflush(out);
1469
+ #endif
1470
+ #if (!defined(DGTEST)) || DGTEST == 67
1471
+ lr = l_l6K(l1,l2,l3,l4,l5,l6,K1,l9);
1472
+ fprintf(out,"->%ld\n",lr);
1473
+ fflush(out);
1474
+ lr = 0; clear_traces();
1475
+ {
1476
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_K, &ffi_type_slong };
1477
+ ffi_cif cif;
1478
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slong);
1479
+ {
1480
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &K1, &l9 };
1481
+ FFI_CALL(cif,l_l6K,args,&lr);
1482
+ }
1483
+ }
1484
+ fprintf(out,"->%ld\n",lr);
1485
+ fflush(out);
1486
+ #endif
1487
+ #if (!defined(DGTEST)) || DGTEST == 68
1488
+ fr = f_f17l3L(f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13,f14,f15,f16,f17,l6,l7,l8,L1);
1489
+ fprintf(out,"->%g\n",fr);
1490
+ fflush(out);
1491
+ fr = 0.0; clear_traces();
1492
+ {
1493
+ ffi_type* argtypes[] = { &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_float, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_L };
1494
+ ffi_cif cif;
1495
+ FFI_PREP_CIF(cif,argtypes,ffi_type_float);
1496
+ {
1497
+ /*const*/ void* args[] = { &f1, &f2, &f3, &f4, &f5, &f6, &f7, &f8, &f9, &f10, &f11, &f12, &f13, &f14, &f15, &f16, &f17, &l6, &l7, &l8, &L1 };
1498
+ FFI_CALL(cif,f_f17l3L,args,&fr);
1499
+ }
1500
+ }
1501
+ fprintf(out,"->%g\n",fr);
1502
+ fflush(out);
1503
+ #endif
1504
+ #if (!defined(DGTEST)) || DGTEST == 69
1505
+ dr = d_d17l3L(d1,d2,d3,d4,d5,d6,d7,d8,d9,d10,d11,d12,d13,d14,d15,d16,d17,l6,l7,l8,L1);
1506
+ fprintf(out,"->%g\n",dr);
1507
+ fflush(out);
1508
+ dr = 0.0; clear_traces();
1509
+ {
1510
+ ffi_type* argtypes[] = { &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_double, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_L };
1511
+ ffi_cif cif;
1512
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1513
+ {
1514
+ /*const*/ void* args[] = { &d1, &d2, &d3, &d4, &d5, &d6, &d7, &d8, &d9, &d10, &d11, &d12, &d13, &d14, &d15, &d16, &d17, &l6, &l7, &l8, &L1 };
1515
+ FFI_CALL(cif,d_d17l3L,args,&dr);
1516
+ }
1517
+ }
1518
+ fprintf(out,"->%g\n",dr);
1519
+ fflush(out);
1520
+ #endif
1521
+ #if (!defined(DGTEST)) || DGTEST == 70
1522
+ llr = ll_l2ll(l1,l2,ll1,l9);
1523
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1524
+ fflush(out);
1525
+ llr = 0; clear_traces();
1526
+ {
1527
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
1528
+ ffi_cif cif;
1529
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
1530
+ {
1531
+ /*const*/ void* args[] = { &l1, &l2, &ll1, &l9 };
1532
+ FFI_CALL(cif,ll_l2ll,args,&llr);
1533
+ }
1534
+ }
1535
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1536
+ fflush(out);
1537
+ #endif
1538
+ #if (!defined(DGTEST)) || DGTEST == 71
1539
+ llr = ll_l3ll(l1,l2,l3,ll1,l9);
1540
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1541
+ fflush(out);
1542
+ llr = 0; clear_traces();
1543
+ {
1544
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
1545
+ ffi_cif cif;
1546
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
1547
+ {
1548
+ /*const*/ void* args[] = { &l1, &l2, &l3, &ll1, &l9 };
1549
+ FFI_CALL(cif,ll_l3ll,args,&llr);
1550
+ }
1551
+ }
1552
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1553
+ fflush(out);
1554
+ #endif
1555
+ #if (!defined(DGTEST)) || DGTEST == 72
1556
+ llr = ll_l4ll(l1,l2,l3,l4,ll1,l9);
1557
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1558
+ fflush(out);
1559
+ llr = 0; clear_traces();
1560
+ {
1561
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
1562
+ ffi_cif cif;
1563
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
1564
+ {
1565
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &ll1, &l9 };
1566
+ FFI_CALL(cif,ll_l4ll,args,&llr);
1567
+ }
1568
+ }
1569
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1570
+ fflush(out);
1571
+ #endif
1572
+ #if (!defined(DGTEST)) || DGTEST == 73
1573
+ llr = ll_l5ll(l1,l2,l3,l4,l5,ll1,l9);
1574
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1575
+ fflush(out);
1576
+ llr = 0; clear_traces();
1577
+ {
1578
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
1579
+ ffi_cif cif;
1580
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
1581
+ {
1582
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &ll1, &l9 };
1583
+ FFI_CALL(cif,ll_l5ll,args,&llr);
1584
+ }
1585
+ }
1586
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1587
+ fflush(out);
1588
+ #endif
1589
+ #if (!defined(DGTEST)) || DGTEST == 74
1590
+ llr = ll_l6ll(l1,l2,l3,l4,l5,l6,ll1,l9);
1591
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1592
+ fflush(out);
1593
+ llr = 0; clear_traces();
1594
+ {
1595
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
1596
+ ffi_cif cif;
1597
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
1598
+ {
1599
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &ll1, &l9 };
1600
+ FFI_CALL(cif,ll_l6ll,args,&llr);
1601
+ }
1602
+ }
1603
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1604
+ fflush(out);
1605
+ #endif
1606
+ #if (!defined(DGTEST)) || DGTEST == 75
1607
+ llr = ll_l7ll(l1,l2,l3,l4,l5,l6,l7,ll1,l9);
1608
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1609
+ fflush(out);
1610
+ llr = 0; clear_traces();
1611
+ {
1612
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slonglong, &ffi_type_slong };
1613
+ ffi_cif cif;
1614
+ FFI_PREP_CIF(cif,argtypes,ffi_type_slonglong);
1615
+ {
1616
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &l7, &ll1, &l9 };
1617
+ FFI_CALL(cif,ll_l7ll,args,&llr);
1618
+ }
1619
+ }
1620
+ fprintf(out,"->0x%lx%08lx\n",(long)(llr>>32),(long)(llr&0xffffffff));
1621
+ fflush(out);
1622
+ #endif
1623
+ #if (!defined(DGTEST)) || DGTEST == 76
1624
+ dr = d_l2d(l1,l2,d2,l9);
1625
+ fprintf(out,"->%g\n",dr);
1626
+ fflush(out);
1627
+ dr = 0.0; clear_traces();
1628
+ {
1629
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
1630
+ ffi_cif cif;
1631
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1632
+ {
1633
+ /*const*/ void* args[] = { &l1, &l2, &d2, &l9 };
1634
+ FFI_CALL(cif,d_l2d,args,&dr);
1635
+ }
1636
+ }
1637
+ fprintf(out,"->%g\n",dr);
1638
+ fflush(out);
1639
+ #endif
1640
+ #if (!defined(DGTEST)) || DGTEST == 77
1641
+ dr = d_l3d(l1,l2,l3,d2,l9);
1642
+ fprintf(out,"->%g\n",dr);
1643
+ fflush(out);
1644
+ dr = 0.0; clear_traces();
1645
+ {
1646
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
1647
+ ffi_cif cif;
1648
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1649
+ {
1650
+ /*const*/ void* args[] = { &l1, &l2, &l3, &d2, &l9 };
1651
+ FFI_CALL(cif,d_l3d,args,&dr);
1652
+ }
1653
+ }
1654
+ fprintf(out,"->%g\n",dr);
1655
+ fflush(out);
1656
+ #endif
1657
+ #if (!defined(DGTEST)) || DGTEST == 78
1658
+ dr = d_l4d(l1,l2,l3,l4,d2,l9);
1659
+ fprintf(out,"->%g\n",dr);
1660
+ fflush(out);
1661
+ dr = 0.0; clear_traces();
1662
+ {
1663
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
1664
+ ffi_cif cif;
1665
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1666
+ {
1667
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &d2, &l9 };
1668
+ FFI_CALL(cif,d_l4d,args,&dr);
1669
+ }
1670
+ }
1671
+ fprintf(out,"->%g\n",dr);
1672
+ fflush(out);
1673
+ #endif
1674
+ #if (!defined(DGTEST)) || DGTEST == 79
1675
+ dr = d_l5d(l1,l2,l3,l4,l5,d2,l9);
1676
+ fprintf(out,"->%g\n",dr);
1677
+ fflush(out);
1678
+ dr = 0.0; clear_traces();
1679
+ {
1680
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
1681
+ ffi_cif cif;
1682
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1683
+ {
1684
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &d2, &l9 };
1685
+ FFI_CALL(cif,d_l5d,args,&dr);
1686
+ }
1687
+ }
1688
+ fprintf(out,"->%g\n",dr);
1689
+ fflush(out);
1690
+ #endif
1691
+ #if (!defined(DGTEST)) || DGTEST == 80
1692
+ dr = d_l6d(l1,l2,l3,l4,l5,l6,d2,l9);
1693
+ fprintf(out,"->%g\n",dr);
1694
+ fflush(out);
1695
+ dr = 0.0; clear_traces();
1696
+ {
1697
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
1698
+ ffi_cif cif;
1699
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1700
+ {
1701
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &d2, &l9 };
1702
+ FFI_CALL(cif,d_l6d,args,&dr);
1703
+ }
1704
+ }
1705
+ fprintf(out,"->%g\n",dr);
1706
+ fflush(out);
1707
+ #endif
1708
+ #if (!defined(DGTEST)) || DGTEST == 81
1709
+ dr = d_l7d(l1,l2,l3,l4,l5,l6,l7,d2,l9);
1710
+ fprintf(out,"->%g\n",dr);
1711
+ fflush(out);
1712
+ dr = 0.0; clear_traces();
1713
+ {
1714
+ ffi_type* argtypes[] = { &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_slong, &ffi_type_double, &ffi_type_slong };
1715
+ ffi_cif cif;
1716
+ FFI_PREP_CIF(cif,argtypes,ffi_type_double);
1717
+ {
1718
+ /*const*/ void* args[] = { &l1, &l2, &l3, &l4, &l5, &l6, &l7, &d2, &l9 };
1719
+ FFI_CALL(cif,d_l7d,args,&dr);
1720
+ }
1721
+ }
1722
+ fprintf(out,"->%g\n",dr);
1723
+ fflush(out);
1724
+ #endif
1725
+ return;
1726
+ }
1727
+
1728
+ int
1729
+ main (void)
1730
+ {
1731
+ ffi_type_char = (char)(-1) < 0 ? ffi_type_schar : ffi_type_uchar;
1732
+ out = stdout;
1733
+
1734
+ void_tests();
1735
+ int_tests();
1736
+ float_tests();
1737
+ double_tests();
1738
+ pointer_tests();
1739
+ mixed_number_tests();
1740
+ small_structure_return_tests();
1741
+ structure_tests();
1742
+ gpargs_boundary_tests();
1743
+
1744
+ exit(0);
1745
+ }