<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/109677>109677</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            clang++-19 -std=gnu++14 -Wc++20-extensions wrongly warns about GNU variadic macro extension
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            clang
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          jinkama-san
      </td>
    </tr>
</table>

<pre>
    Hi,

for simple code like

```
#ifdef DEBUG
# define DBG(fmt, ...) printf(fmt, ##__VA_ARGS__)
#else
# define DBG(fmt, ...)
#endif
#include <stdio.h>
int main()
{
 DBG("Test\n");
}
```

compiled with `clang++-19 -std=gnu++14 test-variadic-macro.cpp -Wc++20-extensions` now this incorrect (for C++14 *with* GNU extensions) warning shows:

```
test-variadic-macro.cpp:11:14: warning: passing no argument for the '...' parameter of a variadic macro is a C++20 extension [-Wc++20-extensions]
   11 |         DBG("Test\n");
      | ^
test-variadic-macro.cpp:4:10: note: macro 'DBG' defined here
    4 | # define DBG(fmt, ...)
      |          ^
1 warning generated.
```

This breaks a lot of code in release mode compiles. Also adding  `-Wno-gnu-zero-variadic-macro-arguments` after `-Wc++20-extensions` doesn't help here. All earlier clang versions I tested including clang-18.1.8 got this right and didn't warn.
Maybe related to issue #76375
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJyMVE2TpDYM_TXuiwrKiG6gDxz6Y2aSQ3JIdrPHKYMFeMfYXbaZzuTXpwz9sbW1s7MUZcBY0tPTk4T3qjdENdvs2ea4ElMYrKu_KvMiRpF4YVaNlW_1b4rhgfEj47tl7awDr8aTJmitJNDqhb79zwp-uZdPzFUnqYPjw_7z020PJHXKEBz3TwyrbgwMD5CmKcMtnJwyobtvM8wZ5s_P_-yed389_f38zHB7c0Ta0694vRsYqbo7NtPqSRKw_OCDVDYdWP6w_FUmwCiUYVjd7cv98nIJwRA_kQ9sczAMMR7L99eTxx_zMa-tHU9Kk4SzCgOwgrdamJ7hnuE-ybaQ-CBZfuzNtOxlawjkQ_IqnBJStckoWmfT9nSC5Eu7nEGe0L-BjFfWeFZwMPYMYVAelGmtc9QGiKxYB4ebV4a7CIHhDp7-_AzfOMAtnIUzyvTgB3v2LN_9pMzvoGP5Lsvismb57uovvp6i_kwPxoJw_TSSCRCRhYGAYTnXrISTcGKkQA5sBwKu_mH2D8qDuKaC_I4d2Gb_DiubS1EAIMuAlQe4Xh_VczkVLdjm4aOcY7YZj3kaGyg-F8QMyzlOeRGqhIEc3QOslwC_IOQ7nNt1w5XdCteTIScCyfQnWvwUJdI4Ei-RT21DJHtubWXAkSbhCcb4fVGtT2GnvQUhZQwS5Zt8MTbpzZT8R85-x0lyLfAsStHFcs4m7-lWWvKGYRlgIH2aKYoRNZBwWpGDuVngldxsAr_PvUESlmaOmOYTSValWVpBb8PSB071QwBhJEgllwiRqQs5f4i3hmLCkTAIUV9-imrMyyIvNytZ53Kbb8WK6qzEMuObsqxWQ11gtikyRE6YVbzZNjyrmrKqskKu26Zbr1SNHNd8i3m2yYsIqiyqcsurgvNKVF3J1pxGoXSq9euYWtev5tB1xrdFWa60aEj7eVAjXgYFxpnt6miQNFPv2Zpr5YO_uwgqaKo_nis_rgOcnTW9fpsJ8iAaO4V5QnzXgzeL1eR0PYRwmgcFPjJ87FUYpiZt7cjwMeK6PJKTs1-pDQwf5zw9w8dLqq81_h8AAP__sPfw1Q">