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