<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/78166>78166</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
clang-format adds a space after `not` inside macros
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang-format
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
ilya-biryukov
</td>
</tr>
</table>
<pre>
Expected formatting:
```cpp
#define ASSEMBLER_INSTRUCTION_LIST(V) \
V(and) \
V(not) \
V(other)
```
Actual formatting:
```cpp
#define ASSEMBLER_INSTRUCTION_LIST(V) \
V(and) \
V(not ) \
V(other)
```
This can even change the meaning of some code in rare circumstances:
```cpp
#define ASSEMBLER_INSTRUCTION_LIST(V) \
V(and) \
V(not !) /* was not! before formatting*/ \
V(other)
#define STRINGIFY(X) #X
const char* foo = ASSEMBLER_INSTRUCTION_LIST(STRINGIFY);
/* foo was "andnot!other" before formatting
and is "andnot !other" after formatting */
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzEVF9vmz4U_TTm5SqRMSTBDzykf_gpUn-d1GRV91QZ-wLewEa26dZvP0FSlaVV1YdJQwjEFefcc861rvBe1wYxJ6sLsrqKxBAa63LdPotFqd3z8MM-RaVVz_n1rx5lQAWVdZ0IQZuaJFtCrwjdkjU93rLvTxWWKKy0Qdju99f_X9xc3z3ubveHu6-Xh92X28eb3f5AWHZPGAeyujyCAO4Jy4RR71SNDe9UbWjQEcbPZJw-p-dWhkG0_041jOWPrlfIJx0dGu1BCgP4hAZkI0yNEBqEDoXRpgZbgbcdgrQKQRtwwiFI7eTQ-SCMRP_XM5hF8CmrMM8nnrhYQdgWfgoP06xjKLGyDueTY1vCircsZ5md2dgf7na3_-2Kb4RlD8dOycP8V2mND2OObhRQWQskufrY_YyTk-TipWXxQjC6IIwJo45eTgrZW0_wakUYBXqGgzlQVAHdH7gpjLMpRipPFE-4iDCPN3SVMJ5lPGpyRTktUVVlVamk4hXjZcZTpdZKZSXlq0jnjLKUxvEqTtM05ctMxBSFkIjZRtJ4Q1KKndDtsm2fuqV1daS9HzDfZPF6HbWixNZPW4Qx2QpTL45aCWPjXnH5CFuUQ-1JSlvtg38lCjq0mM9RIJTyIMD3QuLJO1nTMcw1BW28VgidkM76aHBt3oTQT4d6HEFR69AM5VLajrBi7HJ6LXpnv6MMhBWTdk9YMcn_HQAA___YsWrD">