<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/142426>142426</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
[clang-format] Clang format takes way too long to format some preproc macros
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang,
clang-format
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
JustLinuxUser
</td>
</tr>
</table>
<pre>
I have been playing around with the preproc macros, and I created a binary counter with the macros. A curious thing I noticed, is that clang-format quickly runs out of memory formatting this file.
I've simplified the file, to the minimum laggy example, let's call it example.h,
```c
#if b0 == 1
# if b1 == 1
# if b2 == 1
# if b3 == 1
# if b4 == 1
# if b5 == 1
# if b6 == 1
# if b7 == 1
# if b8 == 1
# if b9 == 1
# if b10 == 1
# if b11 == 1
# if b12 == 1
# if b13 == 1
# if b14 == 1
# if b15 == 1
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
# else
# endif
#endif
```
calling `clang-format example.h` takes ~10s on my computer, adding one more bit ~20s
It seams like clang-format is checking every combination of possibilities of the preprocessor macros, and I don't understand why.
I've also attached the original counter.h example, here is how to use it:
```c
#define VALUE 0
#include "counter.h"
// now the VALUE is 1
#include "counter.h"
// now the VALUE is 2
```
[counter.txt](https://github.com/user-attachments/files/20555612/counter.txt)
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJyUVk1zozgQ_TXi0hWXLD5sHzh44nVVtuY6exeiMdoIidVHEl_mt28JzMR2sJNQqSJ0v_fUavBrcefkQSOWJP9B8l3Cg2-NLf8Ozv-UOrz9cmiTytTH8gla_oJQIWroFT9KfQBuTdA1vErfgm8Reou9NQI6LqxxhD0C1zU8gbDIPdbAoZKa2yMIE7RH-84cGQvYgghWmuDAt3GFJ9DGS4F1FJMxyj0IxfXhoTG24x7-C1I8qyPYoB2Y4ME00GFn7BFGhI86vpUOGqlwQeiW0O0TYasXBCe7XslGYj1UEQFxIW_GoqSWXehA8cPhCPjGu37MK_SErRwIrhRIP6UWLWGPUb-g45-IDyyVDVQUSLoj6Q6WYwxicHkdBBjibCY-ZtLZzJjL5pbIbxAmUnEnPyJWc7Lru7SJuvkUNeKWH7ozew3QuZ7dBM838ib8VndvEj60_O41UD68EFQOv8JGXcvmW5zvMs7xtyDvMp-iv469X9xXt3Fnka-Uckv6BuEzyTm5GeA9mWuJK8Bl-iI5r_rn38mfCN1GC4sGGd3q3FbfLa2g4PkzOvi9pA6Mhi76d9cHj3aw-LqOAkYjdMYiVNLDb0ZddFkPDnnnQMlnvLRt6UC0KJ4jFV9wmAldnA5eGh09vDfOyUoq6SW6GDgbMOicsR-mTG00YSsPQddonY_B1_Z4afhcOQPcey7ak-cbKw9SczXNpEV77vQtWoy1tuY1ToXgEKQn6XbG5WtspEb4Z_vz119AT86vhQo1AmHsjzxhbEjuCduDjrrtxJJucoXvE9nViyX5j4np3zzJd4StW-97F6sfNA7St6FaCNMRtg8O7cPYmA61d4Tt4zSMd0bzPC-WjLD9uSLbJHWZ1pt0wxMsl6tsvV4vN_kqactNvclFlbKKNmuRFesspRld0TRbUb5uWJXIklGW04KyZZGytFgUmRBY8Zzl66xqioJkFDsu1UKpl25h7CGRzgUslxnLWJEoXqFyw6GFseG7is1hj9PT6SuLwXyX2DKqPFTh4EhGlXTevet66dVw_Lkg5jt4jM-nM8TpF_DKj-CNAWXikcJMSWe667NPEqwq77Q7Ln-6PfTW_IvCE7Yf9hhbftrmS8n-DwAA___o2KOY">