<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/95740>95740</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
-fdollar-in-identifiers support lacking behind gcc/tinycc
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
pskocik
</td>
</tr>
</table>
<pre>
This is probably an extension, but all gcc, tinycc, and clang support transient weird token in preprocessor token concatenation, e.g.,
```
#define CAT(A,B) CAT_(A,B)
#define CAT_(A,B) A ## B
int CAT(X,CAT(1,_)); //✓ on clang, gcc, and tinycc
```
works on all three even though it transiently creates the weird token 1_.
On clang, unlike the other two, this does not work with $ in place of _, or anything containing $ in the suffix.
```
int CAT(X,CAT(1,$)); //✗ on clang; ✓ on gcc and tinycc
```
Could be worth fixing. It's kind of a weird inconsistency, even within clang itself.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJx8k0GvozYQxz-NuYyCiIHwOHDIYxupp1720FtkzADT-NnIHl5evn1lQE267a5kGQ8ej2d-f48KgUaL2IjyXZTfErXw5Hwzh5vTdEs61z-a7xMFoACzd53qzAOUBfxitIGcFbKFbmFQxsCodTSZ7GNbKduDNsqOEJZ5dp6BvbKB0DLckXwP7G5ogSzMHmfvNIbg_P5XO6sVo1W834PpmArZiuybyM77fMr2sZky73Egi9Cevwv5dhayfReyjub1xf4f79dtOIOQuZA5vG-eZHmP-KeQ7bY6CtleYyxZi_wdhLzE8ZsUdSvqHJzdSo-Jj08cO5yfl3B3_hbi6UiUJ48I-IkWeHLLOAG9MDQP0B4VYwCe8F9Ej9f09Y4_XpJZrKEbriccT-iB726VLcrcOwxgHUNMA-7EEwhZrAIZpRHcANfo7Dwo--CJ7Bh1YkU2LnffGDssw0Bf6S8q_RlUIYsn1h-4Vk-ukfkr7VHr_xL-4Xmsc-sW00OHsUaeYKAvsmMKv7OQVYAb2T6WqXaeZLWzgQKj1Y_1FUY1IhnaMwHigGZIAZK-yfs6r1WCzbE6vp2y_JRVydSUWVnmQ56XBaq8KOuyzHTVlWWtiqwsZJ5QIzNZZKdjFT1llXanrFDFW1l1x0GiKkWR4Ycikxrz-ZE6PyYUwoJNXVZFlhjVoQlrE0tp8Q7rppAy9rRv4plDt4xBFJmhwOEZhYkNNoehd8YofyB7oB4t00Dowz9ta5S-RX07nCKe9T1fNtDJ4k0zMc9B5OdNrJF4WrpUuw8hL_Gm_XOYvfsLNQt5WfMLQl62_D8b-XcAAAD__02OYf8">