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

    <tr>
        <th>Summary</th>
        <td>
            Clang fails to build on with GCC 14 on ARM
        </td>
    </tr>

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

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

    <tr>
      <th>Reporter</th>
      <td>
          nikic
      </td>
    </tr>
</table>

<pre>
    Building Clang with GCC 14 on ARM results in build errors like this:
```
/usr/include/clang/Basic/AttrTokenKinds.inc:9:1: error: pasting "kw_" and "[" does not give a valid preprocessing token
    9 | KEYWORD_ATTRIBUTE(__arm_streaming)
```

The problem is that GCC expands `__arm_streaming` to `[[arm::streaming]]` and we use a nested macro to perform the concatenation:
```
#define KEYWORD(X,Y) TOK(kw_ ## X)
#define KEYWORD_ATTRIBUTE(X, ...) KEYWORD(X, KEYALL)
KEYWORD_ATTRIBUTE(__arm_streaming)
```
This means that `__arm_streaming` will be expanded prior to concatenation.


</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJykU11vozgU_TXm5arImI_AAw8kKatVu6pUZbXtU2Tsm-CNsZFtmt1_P3KSmU6rztNIFmBxfe455_pw79XRILakXJNym_AljNa1Rp2USAYr_2_Xi9JSmSNsNDdHOKswwh-bDWQFWAPd81_g0C86eFAGhlgM6Jx1HrQ6IYRReZJ3hG4J7UhFb-u6Zf3iHWG9MkIvEgnrRWxCWL_mXgnC-i4Et7MnNA_KSJ8qI0jeNSTvMpJ310bxY-Y-RI6EsdN5TxgDbmTcRVmMgbTowdgAR_WGwOGNayVhdjg7K9D7eDbENldiAAANkNUGHu5f_3l63u673e75z_Xfu3vC6v2eu2nvg0M-qci2-Vrd5bkbEWZnB40TKA9h5OFiH_43cyM9kIp-xqsoBBt_XGay5m6KBubde0W5jauiF5VnhMVHUQZ9QAkTF85GhBndwboJwoggrBE8oOFBWfPreeQSD8rgd9mE1S-EbV4Ja2D39EBYfTrvgbCcsBxe3oV_PvfBrogAaZpGkI-4cds9Pv7A-Q2zd6PyMCE3N4u_tvWstIYBb-ZjvAHKuujVB3_SnweYyDaXTd7wBNtsRcuqonVRJGObi6asMyk4WxUF1uWqzIQshnJY0cNhRQ-JahllBc2yJqMFLYq0lLJqKl5XGS0KQZEUFCeudKr125Rad0yU9wu2q7pqskTzAbVvrzf4lgsWM-raWH83LEdPCqqVD_4dIaigsb1m9cCV9lHdNZbWfJHeZHG6HUOYLyllPWH9UYVxGVJhJ8L6CHx73c3O_osixMBGnp6w_kL1WwAAAP__NmxMnA">