1/* Test redefinitions differing only in the spelling of paste and
2   stringify tokens, whitespace around them, or the number of
3   consecutive paste tokens.  */
4/* { dg-do preprocess } */
5/* { dg-options "" } */
6
7#define str(x) #x /* { dg-message "previous definition" } */
8#define str(x) %: x /* { dg-warning "redefined" } */
9#undef str
10#define str(x) #x /* { dg-message "previous definition" } */
11#define str(x) # x /* { dg-warning "redefined" } */
12#undef str
13#define str(x) #x /* { dg-message "previous definition" } */
14#define str(x) %: x /* { dg-warning "redefined" } */
15#undef str
16#define str(x) %:x /* { dg-message "previous definition" } */
17#define str(x) #x /* { dg-warning "redefined" } */
18#undef str
19#define str(x) %:x /* { dg-message "previous definition" } */
20#define str(x) %: x /* { dg-warning "redefined" } */
21#undef str
22#define str(x) %:x /* { dg-message "previous definition" } */
23#define str(x) # x /* { dg-warning "redefined" } */
24#undef str
25#define str(x) %:x /* { dg-message "previous definition" } */
26#define str(x) %: x /* { dg-warning "redefined" } */
27#undef str
28#define str(x) # x /* { dg-message "previous definition" } */
29#define str(x) #x /* { dg-warning "redefined" } */
30#undef str
31#define str(x) # x /* { dg-message "previous definition" } */
32#define str(x) %: x /* { dg-warning "redefined" } */
33#undef str
34#define str(x) # x /* { dg-message "previous definition" } */
35#define str(x) %: x /* { dg-warning "redefined" } */
36#undef str
37#define str(x) %: x /* { dg-message "previous definition" } */
38#define str(x) #x /* { dg-warning "redefined" } */
39#undef str
40#define str(x) %: x /* { dg-message "previous definition" } */
41#define str(x) # x /* { dg-warning "redefined" } */
42#undef str
43
44#define str(x) #x
45#define str(x) #x
46#undef str
47#define str(x) # x
48#define str(x) # x
49#undef str
50#define str(x) %: x
51#define str(x) %: x
52#undef str
53#define str(x) %: x
54#define str(x) %: x
55#undef str
56
57#define astr(x) a#x /* { dg-message "previous definition" } */
58#define astr(x) a%: x /* { dg-warning "redefined" } */
59#undef astr
60#define astr(x) a#x /* { dg-message "previous definition" } */
61#define astr(x) a# x /* { dg-warning "redefined" } */
62#undef astr
63#define astr(x) a#x /* { dg-message "previous definition" } */
64#define astr(x) a%: x /* { dg-warning "redefined" } */
65#undef astr
66#define astr(x) a#x /* { dg-message "previous definition" } */
67#define astr(x) a #x /* { dg-warning "redefined" } */
68#undef astr
69#define astr(x) a#x /* { dg-message "previous definition" } */
70#define astr(x) a %:x /* { dg-warning "redefined" } */
71#undef astr
72#define astr(x) a#x /* { dg-message "previous definition" } */
73#define astr(x) a # x /* { dg-warning "redefined" } */
74#undef astr
75#define astr(x) a#x /* { dg-message "previous definition" } */
76#define astr(x) a %: x /* { dg-warning "redefined" } */
77#undef astr
78#define astr(x) a%:x /* { dg-message "previous definition" } */
79#define astr(x) a#x /* { dg-warning "redefined" } */
80#undef astr
81#define astr(x) a%:x /* { dg-message "previous definition" } */
82#define astr(x) a%: x /* { dg-warning "redefined" } */
83#undef astr
84#define astr(x) a%:x /* { dg-message "previous definition" } */
85#define astr(x) a# x /* { dg-warning "redefined" } */
86#undef astr
87#define astr(x) a%:x /* { dg-message "previous definition" } */
88#define astr(x) a%: x /* { dg-warning "redefined" } */
89#undef astr
90#define astr(x) a%:x /* { dg-message "previous definition" } */
91#define astr(x) a #x /* { dg-warning "redefined" } */
92#undef astr
93#define astr(x) a%:x /* { dg-message "previous definition" } */
94#define astr(x) a %:x /* { dg-warning "redefined" } */
95#undef astr
96#define astr(x) a%:x /* { dg-message "previous definition" } */
97#define astr(x) a # x /* { dg-warning "redefined" } */
98#undef astr
99#define astr(x) a%:x /* { dg-message "previous definition" } */
100#define astr(x) a %: x /* { dg-warning "redefined" } */
101#undef astr
102#define astr(x) a# x /* { dg-message "previous definition" } */
103#define astr(x) a#x /* { dg-warning "redefined" } */
104#undef astr
105#define astr(x) a# x /* { dg-message "previous definition" } */
106#define astr(x) a%: x /* { dg-warning "redefined" } */
107#undef astr
108#define astr(x) a# x /* { dg-message "previous definition" } */
109#define astr(x) a%: x /* { dg-warning "redefined" } */
110#undef astr
111#define astr(x) a# x /* { dg-message "previous definition" } */
112#define astr(x) a #x /* { dg-warning "redefined" } */
113#undef astr
114#define astr(x) a# x /* { dg-message "previous definition" } */
115#define astr(x) a %:x /* { dg-warning "redefined" } */
116#undef astr
117#define astr(x) a# x /* { dg-message "previous definition" } */
118#define astr(x) a # x /* { dg-warning "redefined" } */
119#undef astr
120#define astr(x) a# x /* { dg-message "previous definition" } */
121#define astr(x) a %: x /* { dg-warning "redefined" } */
122#undef astr
123#define astr(x) a%: x /* { dg-message "previous definition" } */
124#define astr(x) a#x /* { dg-warning "redefined" } */
125#undef astr
126#define astr(x) a%: x /* { dg-message "previous definition" } */
127#define astr(x) a# x /* { dg-warning "redefined" } */
128#undef astr
129#define astr(x) a%: x /* { dg-message "previous definition" } */
130#define astr(x) a #x /* { dg-warning "redefined" } */
131#undef astr
132#define astr(x) a%: x /* { dg-message "previous definition" } */
133#define astr(x) a %:x /* { dg-warning "redefined" } */
134#undef astr
135#define astr(x) a%: x /* { dg-message "previous definition" } */
136#define astr(x) a # x /* { dg-warning "redefined" } */
137#undef astr
138#define astr(x) a%: x /* { dg-message "previous definition" } */
139#define astr(x) a %: x /* { dg-warning "redefined" } */
140#undef astr
141#define astr(x) a #x /* { dg-message "previous definition" } */
142#define astr(x) a#x /* { dg-warning "redefined" } */
143#undef astr
144#define astr(x) a #x /* { dg-message "previous definition" } */
145#define astr(x) a%: x /* { dg-warning "redefined" } */
146#undef astr
147#define astr(x) a #x /* { dg-message "previous definition" } */
148#define astr(x) a# x /* { dg-warning "redefined" } */
149#undef astr
150#define astr(x) a #x /* { dg-message "previous definition" } */
151#define astr(x) a%: x /* { dg-warning "redefined" } */
152#undef astr
153#define astr(x) a #x /* { dg-message "previous definition" } */
154#define astr(x) a %:x /* { dg-warning "redefined" } */
155#undef astr
156#define astr(x) a #x /* { dg-message "previous definition" } */
157#define astr(x) a # x /* { dg-warning "redefined" } */
158#undef astr
159#define astr(x) a #x /* { dg-message "previous definition" } */
160#define astr(x) a %: x /* { dg-warning "redefined" } */
161#undef astr
162#define astr(x) a %:x /* { dg-message "previous definition" } */
163#define astr(x) a#x /* { dg-warning "redefined" } */
164#undef astr
165#define astr(x) a %:x /* { dg-message "previous definition" } */
166#define astr(x) a%: x /* { dg-warning "redefined" } */
167#undef astr
168#define astr(x) a %:x /* { dg-message "previous definition" } */
169#define astr(x) a# x /* { dg-warning "redefined" } */
170#undef astr
171#define astr(x) a %:x /* { dg-message "previous definition" } */
172#define astr(x) a%: x /* { dg-warning "redefined" } */
173#undef astr
174#define astr(x) a %:x /* { dg-message "previous definition" } */
175#define astr(x) a #x /* { dg-warning "redefined" } */
176#undef astr
177#define astr(x) a %:x /* { dg-message "previous definition" } */
178#define astr(x) a # x /* { dg-warning "redefined" } */
179#undef astr
180#define astr(x) a %:x /* { dg-message "previous definition" } */
181#define astr(x) a %: x /* { dg-warning "redefined" } */
182#undef astr
183#define astr(x) a # x /* { dg-message "previous definition" } */
184#define astr(x) a#x /* { dg-warning "redefined" } */
185#undef astr
186#define astr(x) a # x /* { dg-message "previous definition" } */
187#define astr(x) a%: x /* { dg-warning "redefined" } */
188#undef astr
189#define astr(x) a # x /* { dg-message "previous definition" } */
190#define astr(x) a# x /* { dg-warning "redefined" } */
191#undef astr
192#define astr(x) a # x /* { dg-message "previous definition" } */
193#define astr(x) a%: x /* { dg-warning "redefined" } */
194#undef astr
195#define astr(x) a # x /* { dg-message "previous definition" } */
196#define astr(x) a #x /* { dg-warning "redefined" } */
197#undef astr
198#define astr(x) a # x /* { dg-message "previous definition" } */
199#define astr(x) a %:x /* { dg-warning "redefined" } */
200#undef astr
201#define astr(x) a # x /* { dg-message "previous definition" } */
202#define astr(x) a %: x /* { dg-warning "redefined" } */
203#undef astr
204#define astr(x) a %: x /* { dg-message "previous definition" } */
205#define astr(x) a#x /* { dg-warning "redefined" } */
206#undef astr
207#define astr(x) a %: x /* { dg-message "previous definition" } */
208#define astr(x) a%: x /* { dg-warning "redefined" } */
209#undef astr
210#define astr(x) a %: x /* { dg-message "previous definition" } */
211#define astr(x) a# x /* { dg-warning "redefined" } */
212#undef astr
213#define astr(x) a %: x /* { dg-message "previous definition" } */
214#define astr(x) a%: x /* { dg-warning "redefined" } */
215#undef astr
216#define astr(x) a %: x /* { dg-message "previous definition" } */
217#define astr(x) a #x /* { dg-warning "redefined" } */
218#undef astr
219#define astr(x) a %: x /* { dg-message "previous definition" } */
220#define astr(x) a %:x /* { dg-warning "redefined" } */
221#undef astr
222#define astr(x) a %: x /* { dg-message "previous definition" } */
223#define astr(x) a # x /* { dg-warning "redefined" } */
224#undef astr
225
226#define astr(x) a#x
227#define astr(x) a#x
228#undef astr
229#define astr(x) a# x
230#define astr(x) a# x
231#undef astr
232#define astr(x) a%: x
233#define astr(x) a%: x
234#undef astr
235#define astr(x) a%: x
236#define astr(x) a%: x
237#undef astr
238#define astr(x) a #x
239#define astr(x) a #x
240#undef astr
241#define astr(x) a %:x
242#define astr(x) a %:x
243#undef astr
244#define astr(x) a # x
245#define astr(x) a # x
246#undef astr
247#define astr(x) a %: x
248#define astr(x) a %: x
249#undef astr
250
251#define cat(x,y) x##y /* { dg-message "previous definition" } */
252#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
253#undef cat
254#define cat(x,y) x##y /* { dg-message "previous definition" } */
255#define cat(x,y) x## y /* { dg-warning "redefined" } */
256#undef cat
257#define cat(x,y) x##y /* { dg-message "previous definition" } */
258#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
259#undef cat
260#define cat(x,y) x##y /* { dg-message "previous definition" } */
261#define cat(x,y) x ##y /* { dg-warning "redefined" } */
262#undef cat
263#define cat(x,y) x##y /* { dg-message "previous definition" } */
264#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
265#undef cat
266#define cat(x,y) x##y /* { dg-message "previous definition" } */
267#define cat(x,y) x ## y /* { dg-warning "redefined" } */
268#undef cat
269#define cat(x,y) x##y /* { dg-message "previous definition" } */
270#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
271#undef cat
272#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
273#define cat(x,y) x##y /* { dg-warning "redefined" } */
274#undef cat
275#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
276#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
277#undef cat
278#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
279#define cat(x,y) x## y /* { dg-warning "redefined" } */
280#undef cat
281#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
282#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
283#undef cat
284#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
285#define cat(x,y) x ##y /* { dg-warning "redefined" } */
286#undef cat
287#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
288#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
289#undef cat
290#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
291#define cat(x,y) x ## y /* { dg-warning "redefined" } */
292#undef cat
293#define cat(x,y) x%:%:y /* { dg-message "previous definition" } */
294#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
295#undef cat
296#define cat(x,y) x## y /* { dg-message "previous definition" } */
297#define cat(x,y) x##y /* { dg-warning "redefined" } */
298#undef cat
299#define cat(x,y) x## y /* { dg-message "previous definition" } */
300#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
301#undef cat
302#define cat(x,y) x## y /* { dg-message "previous definition" } */
303#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
304#undef cat
305#define cat(x,y) x## y /* { dg-message "previous definition" } */
306#define cat(x,y) x ##y /* { dg-warning "redefined" } */
307#undef cat
308#define cat(x,y) x## y /* { dg-message "previous definition" } */
309#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
310#undef cat
311#define cat(x,y) x## y /* { dg-message "previous definition" } */
312#define cat(x,y) x ## y /* { dg-warning "redefined" } */
313#undef cat
314#define cat(x,y) x## y /* { dg-message "previous definition" } */
315#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
316#undef cat
317#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
318#define cat(x,y) x##y /* { dg-warning "redefined" } */
319#undef cat
320#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
321#define cat(x,y) x## y /* { dg-warning "redefined" } */
322#undef cat
323#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
324#define cat(x,y) x ##y /* { dg-warning "redefined" } */
325#undef cat
326#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
327#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
328#undef cat
329#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
330#define cat(x,y) x ## y /* { dg-warning "redefined" } */
331#undef cat
332#define cat(x,y) x%:%: y /* { dg-message "previous definition" } */
333#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
334#undef cat
335#define cat(x,y) x ##y /* { dg-message "previous definition" } */
336#define cat(x,y) x##y /* { dg-warning "redefined" } */
337#undef cat
338#define cat(x,y) x ##y /* { dg-message "previous definition" } */
339#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
340#undef cat
341#define cat(x,y) x ##y /* { dg-message "previous definition" } */
342#define cat(x,y) x## y /* { dg-warning "redefined" } */
343#undef cat
344#define cat(x,y) x ##y /* { dg-message "previous definition" } */
345#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
346#undef cat
347#define cat(x,y) x ##y /* { dg-message "previous definition" } */
348#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
349#undef cat
350#define cat(x,y) x ##y /* { dg-message "previous definition" } */
351#define cat(x,y) x ## y /* { dg-warning "redefined" } */
352#undef cat
353#define cat(x,y) x ##y /* { dg-message "previous definition" } */
354#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
355#undef cat
356#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
357#define cat(x,y) x##y /* { dg-warning "redefined" } */
358#undef cat
359#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
360#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
361#undef cat
362#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
363#define cat(x,y) x## y /* { dg-warning "redefined" } */
364#undef cat
365#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
366#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
367#undef cat
368#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
369#define cat(x,y) x ##y /* { dg-warning "redefined" } */
370#undef cat
371#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
372#define cat(x,y) x ## y /* { dg-warning "redefined" } */
373#undef cat
374#define cat(x,y) x %:%:y /* { dg-message "previous definition" } */
375#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
376#undef cat
377#define cat(x,y) x ## y /* { dg-message "previous definition" } */
378#define cat(x,y) x##y /* { dg-warning "redefined" } */
379#undef cat
380#define cat(x,y) x ## y /* { dg-message "previous definition" } */
381#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
382#undef cat
383#define cat(x,y) x ## y /* { dg-message "previous definition" } */
384#define cat(x,y) x## y /* { dg-warning "redefined" } */
385#undef cat
386#define cat(x,y) x ## y /* { dg-message "previous definition" } */
387#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
388#undef cat
389#define cat(x,y) x ## y /* { dg-message "previous definition" } */
390#define cat(x,y) x ##y /* { dg-warning "redefined" } */
391#undef cat
392#define cat(x,y) x ## y /* { dg-message "previous definition" } */
393#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
394#undef cat
395#define cat(x,y) x ## y /* { dg-message "previous definition" } */
396#define cat(x,y) x %:%: y /* { dg-warning "redefined" } */
397#undef cat
398#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
399#define cat(x,y) x##y /* { dg-warning "redefined" } */
400#undef cat
401#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
402#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
403#undef cat
404#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
405#define cat(x,y) x## y /* { dg-warning "redefined" } */
406#undef cat
407#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
408#define cat(x,y) x%:%: y /* { dg-warning "redefined" } */
409#undef cat
410#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
411#define cat(x,y) x ##y /* { dg-warning "redefined" } */
412#undef cat
413#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
414#define cat(x,y) x %:%:y /* { dg-warning "redefined" } */
415#undef cat
416#define cat(x,y) x %:%: y /* { dg-message "previous definition" } */
417#define cat(x,y) x ## y /* { dg-warning "redefined" } */
418#undef cat
419
420#define cat(x,y) x##y
421#define cat(x,y) x##y
422#undef cat
423#define cat(x,y) x## y
424#define cat(x,y) x## y
425#undef cat
426#define cat(x,y) x%:%: y
427#define cat(x,y) x%:%: y
428#undef cat
429#define cat(x,y) x%:%: y
430#define cat(x,y) x%:%: y
431#undef cat
432#define cat(x,y) x ##y
433#define cat(x,y) x ##y
434#undef cat
435#define cat(x,y) x %:%:y
436#define cat(x,y) x %:%:y
437#undef cat
438#define cat(x,y) x ## y
439#define cat(x,y) x ## y
440#undef cat
441#define cat(x,y) x %:%: y
442#define cat(x,y) x %:%: y
443#undef cat
444
445#define cat3(x,y,z) x##y##z /* { dg-message "previous definition" } */
446#define cat3(x,y,z) x##y####z /* { dg-warning "redefined" } */
447#undef cat3
448
449#define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */
450#define cat3(x,y,z) x####y##z /* { dg-warning "redefined" } */
451#undef cat3
452
453#define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */
454#define cat3(x,y,z) x##y## ##z /* { dg-warning "redefined" } */
455#undef cat3
456
457#define cat3(x,y,z) x##y####z /* { dg-message "previous definition" } */
458#define cat3(x,y,z) x##y##%:%:z /* { dg-warning "redefined" } */
459#undef cat3
460
461#define cat3(x,y,z) x##y######## ####z /* { dg-message "previous definition" } */
462#define cat3(x,y,z) x##y############z /* { dg-warning "redefined" } */
463#undef cat3
464
465#define cat3(x,y,z) x##y############z /* { dg-message "previous definition" } */
466#define cat3(x,y,z) x##y########%:%:##z /* { dg-warning "redefined" } */
467#undef cat3
468
469#define cat3(x,y,z) x##y##z
470#define cat3(x,y,z) x##y##z
471#undef cat3
472
473#define cat3(x,y,z) x##y####z
474#define cat3(x,y,z) x##y####z
475#undef cat3
476
477#define cat3(x,y,z) x####y##z
478#define cat3(x,y,z) x####y##z
479#undef cat3
480
481#define cat3(x,y,z) x##y## ##z
482#define cat3(x,y,z) x##y## ##z
483#undef cat3
484
485#define cat3(x,y,z) x##y##%:%:z
486#define cat3(x,y,z) x##y##%:%:z
487#undef cat3
488
489#define cat3(x,y,z) x##y######## ####z
490#define cat3(x,y,z) x##y######## ####z
491#undef cat3
492
493#define cat3(x,y,z) x##y############z
494#define cat3(x,y,z) x##y############z
495#undef cat3
496
497#define cat3(x,y,z) x##y########%:%:##z
498#define cat3(x,y,z) x##y########%:%:##z
499#undef cat3
500