annotate gcc/testsuite/c-c++-common/cpp/va-opt.c @ 131:84e7813d76e9

gcc-8.2
author mir3636
date Thu, 25 Oct 2018 07:37:49 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
131
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
1 /* { dg-do compile } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
2 /* { dg-options "-std=gnu99" { target c } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
3 /* { dg-options "-std=c++2a" { target c++ } } */
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
4
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
5 extern void f0 (void);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
6 extern void f1 (int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
7 extern void f2 (int, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
8 extern void f3 (int, int, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
9 extern void f4 (int, int, int, int);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
10 extern int s (const char *);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
11
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
12 #define CALL(F, ...) F (7 __VA_OPT__(,) __VA_ARGS__)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
13 #define CP(F, X, Y, ...) F (__VA_OPT__(X ## Y,) __VA_ARGS__)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
14 #define CS(F, ...) F(__VA_OPT__(s(# __VA_ARGS__)))
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
15 #define D(F, ...) F(__VA_OPT__(__VA_ARGS__) __VA_OPT__(,) __VA_ARGS__)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
16 #define CALL0(...) __VA_OPT__(f2)(0 __VA_OPT__(,)__VA_ARGS__)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
17
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
18 void t (void)
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
19 {
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
20 CALL (f1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
21 CALL (f1, );
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
22 CALL (f2, 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
23 CALL (f3, 1, 2);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
24
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
25 int one = 1;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
26 int two = 2;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
27 int onetwo = 23;
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
28
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
29 CP (f0, one, two);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
30 CP (f0, one, two, );
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
31 CP (f2, one, two, 3);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
32
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
33 CS (f0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
34 CS (f1, 1, 2, 3, 4);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
35
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
36 D (f0);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
37 D (f2, 1);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
38 D (f4, 1, 2);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
39
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
40 CALL0 ();
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
41 CALL0 (23);
84e7813d76e9 gcc-8.2
mir3636
parents:
diff changeset
42 }