<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">