1 #include "defines.h"
2 #include "macros.h"
3 #include "args.h"
4
5 char
fun_test_returning_char(void)6 fun_test_returning_char (void)
7 {
8 volatile_var++;
9 return 64;
10 }
11
12 short
fun_test_returning_short(void)13 fun_test_returning_short (void)
14 {
15 volatile_var++;
16 return 65;
17 }
18
19 int
fun_test_returning_int(void)20 fun_test_returning_int (void)
21 {
22 volatile_var++;
23 return 66;
24 }
25
26 long
fun_test_returning_long(void)27 fun_test_returning_long (void)
28 {
29 volatile_var++;
30 return 67;
31 }
32
33 float
fun_test_returning_float(void)34 fun_test_returning_float (void)
35 {
36 volatile_var++;
37 return 68;
38 }
39
40 #define def_test_returning_type(fun, type, ret, reg) \
41 { type var = WRAP_RET (fun) (); \
42 union { type r; unsigned long reg; } u; \
43 u.reg = reg; \
44 assert (ret == u.r && ret == var); }
45
46 int
main(void)47 main (void)
48 {
49 def_test_returning_type(fun_test_returning_char, char, 64, eax);
50 def_test_returning_type(fun_test_returning_short, short, 65, eax);
51 def_test_returning_type(fun_test_returning_int, int, 66, eax);
52 def_test_returning_type(fun_test_returning_long, long, 67, eax);
53 def_test_returning_type(fun_test_returning_float, float, 68, eax);
54 return 0;
55 }
56