<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/60268>60268</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
incorrect handling of placemarker tokens in __VA_OPT__
</td>
</tr>
<tr>
<th>Labels</th>
<td>
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
sorokin
</td>
</tr>
</table>
<pre>
Consider this code:
```
#define M(x, ...) __VA_OPT__(Q ## x) ## R
M(, 1)
```
Preprocessing of it produces `Q R` in clang and `QR` in other compilers. I believe this behavior of clang is incorrect because concatenation of `Q ## x` should produce a non-placemarker token which should then be concatenated with `R`.
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJxsUk1v3CAQ_TX4MoqFsdcfBx-2iVbqoWoSVb2uMMya6bJgAd6k_75iP5pIrYQEDDNv5j2ejJFmhziyzRe2eSrkmowPY_TBH8kVk9e_x0fvImkMkAxFUF4jq7eMPzG-ZS2_retV1BoP5BC-MdG_M_EIZVkyMQDs9z-3--_PP_Z7JvoXYKJmoob3_HY7v14xcmUurJgY_tvkOeASvMIYyc3gD0AJluD1qjACa_kLvLKWAzlQVroZpNOX8D3qk8EAyp8WshhiCV9hQkt4xivBCY08kw8Z-opAEcgpHwKqBBMquUYE5Z2SCZ1M5F3OvbT-y6vlEI1frb7PBhKcdw-LlQpPMhyznv6IDt4MKXNPTgYdTJ_RUcMbJZPhM4PyKkKhx1oP9SALHKu2azZ9LSpRmHGosGrbrhs6LrDpJVcdqn6ouBz4RuqhoFFwUfNKNFXPOe9KoTXWzSRwMwy66g6s4XiSZEtrz6fSh7mgGFccWy7avrByQhvvdgljTnqY1jmyhluKKX6UJUoWxw_ljHTa3v7sHxmyxJ9MAsUa7GhSWmI2m9gxsZspmXUqlT8xsctdbtvDEvwvVImJ3WXSyMTuMuyfAAAA__9tNeRs">