OSDN Git Service

* gcc.dg/compat/scalar-by-value-3_main.c: New file.
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / gcc.dg / compat / scalar-return-4_x.c
1 #include "compat-common.h"
2
3 #define T(NAME, TYPE, INITVAL)                                  \
4 TYPE g01##NAME;                                                 \
5                                                                 \
6 extern void init##NAME (TYPE *p, TYPE v);                       \
7 extern void checkg##NAME (void);                                \
8 extern TYPE test0##NAME (void);                                 \
9 extern TYPE test1##NAME (TYPE);                                 \
10                                                                 \
11 void                                                            \
12 check##NAME (TYPE x, TYPE v)                                    \
13 {                                                               \
14   if (x != v)                                                   \
15     DEBUG_CHECK                                                 \
16 }                                                               \
17                                                                 \
18 void                                                            \
19 testit##NAME (void)                                             \
20 {                                                               \
21   TYPE rslt;                                                    \
22   DEBUG_FPUTS (#NAME);                                          \
23   DEBUG_FPUTS (" init: ");                                      \
24   init##NAME (&g01##NAME,  1);                                  \
25   checkg##NAME ();                                              \
26   DEBUG_NL;                                                     \
27   DEBUG_FPUTS (#NAME);                                          \
28   DEBUG_FPUTS (" test0: ");                                     \
29   rslt = test0##NAME ();                                        \
30   check##NAME (rslt, g01##NAME);                                \
31   DEBUG_NL;                                                     \
32   DEBUG_FPUTS (#NAME);                                          \
33   DEBUG_FPUTS (" test1: ");                                     \
34   rslt = test1##NAME (g01##NAME);                               \
35   check##NAME (rslt, g01##NAME);                                \
36   DEBUG_NL;                                                     \
37 }
38
39 T(cc, _Complex char, (0,1))
40 T(cs, _Complex short, (1,2))
41 T(cf, _Complex float, (1.0,2.0))
42
43 #undef T
44
45 void
46 scalar_return_4_x ()
47 {
48 #define T(NAME) testit##NAME ();
49
50 T(cc)
51 T(cs)
52 T(cf)
53
54 if (fails != 0)
55   abort ();
56
57 #undef T
58 }