(root)/
gcc-13.2.0/
gcc/
testsuite/
gcc.dg/
cpp/
redef4.c
       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