Mercurial > hg > CbC > CbC_gcc
comparison gcc/testsuite/c-c++-common/Wmultistatement-macros-2.c @ 111:04ced10e8804
gcc 7
author | kono |
---|---|
date | Fri, 27 Oct 2017 22:46:09 +0900 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
68:561a7518be6b | 111:04ced10e8804 |
---|---|
1 /* PR c/80116 */ | |
2 /* { dg-options "-Wmultistatement-macros" } */ | |
3 /* { dg-do compile } */ | |
4 | |
5 #define SWAP(X, Y) \ | |
6 tmp = X; /* { dg-warning "macro expands to multiple statements" } */ \ | |
7 X = Y; \ | |
8 Y = tmp | |
9 | |
10 #define STUFF \ | |
11 if (0) {} else x = y | |
12 | |
13 #define STUFF2 \ | |
14 if (0) {} else x = y; x++ | |
15 | |
16 #define STUFF3 \ | |
17 if (x) \ | |
18 {} \ | |
19 else /* { dg-message "not guarded by this 'else' clause" } */ \ | |
20 SWAP(x, y) /* { dg-message "in expansion of macro .SWAP." } */ | |
21 | |
22 #define SET(X, Y) \ | |
23 (X) = (Y) | |
24 | |
25 #define STUFF4 \ | |
26 if (x) \ | |
27 {} \ | |
28 else \ | |
29 SET(x, y); \ | |
30 SET(x, y) | |
31 | |
32 #define STUFF5 \ | |
33 { tmp = x; x = y; } | |
34 | |
35 #define STUFF6 \ | |
36 x++;; | |
37 | |
38 int x, y, tmp; | |
39 | |
40 void | |
41 fn1 (void) | |
42 { | |
43 if (x) | |
44 { | |
45 } | |
46 else /* { dg-message "not guarded by this 'else' clause" } */ | |
47 SWAP(x, y); /* { dg-message "in expansion of macro .SWAP." } */ | |
48 } | |
49 | |
50 void | |
51 fn2 (void) | |
52 { | |
53 SWAP(x, y); | |
54 } | |
55 | |
56 void | |
57 fn3 (void) | |
58 { | |
59 if (x) | |
60 { | |
61 } | |
62 else | |
63 { | |
64 SWAP(x, y); | |
65 } | |
66 } | |
67 | |
68 void | |
69 fn4 (void) | |
70 { | |
71 if (x) | |
72 { | |
73 } | |
74 else | |
75 ({ x = 10; x++; }); | |
76 } | |
77 | |
78 void | |
79 fn5 (void) | |
80 { | |
81 if (x) | |
82 { | |
83 } | |
84 else /* { dg-message "not guarded by this 'else' clause" } */ | |
85 L1: | |
86 SWAP (x, y); /* { dg-message "in expansion of macro .SWAP." } */ | |
87 goto L1; | |
88 } | |
89 | |
90 void | |
91 fn6 (void) | |
92 { | |
93 if (x) | |
94 { | |
95 } | |
96 else | |
97 SET (x, y); | |
98 SET (tmp, x); | |
99 } | |
100 | |
101 void | |
102 fn7 (void) | |
103 { | |
104 STUFF; | |
105 } | |
106 | |
107 void | |
108 fn8 (void) | |
109 { | |
110 STUFF2; | |
111 } | |
112 | |
113 void | |
114 fn9 (void) | |
115 { | |
116 STUFF3; /* { dg-message "in expansion of macro .STUFF3." } */ | |
117 } | |
118 | |
119 void | |
120 fn10 (void) | |
121 { | |
122 STUFF4; | |
123 } | |
124 | |
125 void | |
126 fn11 (void) | |
127 { | |
128 if (x) | |
129 STUFF5; | |
130 } | |
131 | |
132 void | |
133 fn12 (void) | |
134 { | |
135 if (x) | |
136 STUFF6; | |
137 } |