<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/140386>140386</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Clang/Clang++ 20.1.5 major performance regression comparing to 20.1.3
</td>
</tr>
<tr>
<th>Labels</th>
<td>
clang
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
T-Maxxx
</td>
</tr>
</table>
<pre>
I have noticed major performance regression during even CMake configure stage (where some tests are compiled and run to get compiler capabilities).
### Stage 1. Compile LLVM 20.1.5 using system gcc.
Get LLVM 20.1.5 sources:
```bash
cd /tmp/projects/
wget -O llvm-project.src.tar.xz https://github.com/llvm/llvm-project/releases/download/llvmorg-20.1.5/llvm-project-20.1.5.src.tar.xz
tar -xf llvm-project.src.tar.xz
mv llvm-project*.src llvm_src
```
Configure (CMake version may be of your choice):
```bash
/tmp/programs/cmake/3.31.5/bin/cmake \
-S /tmp/projects/llvm_src/llvm/ \
-B /tmp/projects/llvm_build/ \
-G "Ninja" \
-DCMAKE_INSTALL_PREFIX=/tmp/programs/clang/20.1.5-gcc \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="clang;lld;clang-tools-extra" \
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind"
```
Notice CMake configure time (for me is about **8.8** seconds).
Build:
```
/tmp/programs/cmake/3.31.5/bin/cmake \
--build /tmp/projects/llvm_build/ \
--target install -- -j $(nproc)
```
Now we have unoptimized (kinda) installation of LLVM 20.1.5.
#### Stage 2. Compile LLVM 20.1.5 using just built LLVM 20.1.5 with GCC
Configure:
```bash
rm -rf llvm_build/
/tmp/programs/cmake/3.31.5/bin/cmake \
-S /tmp/projects/llvm_src/llvm/ \
-B /tmp/projects/llvm_build/ \
-G "Ninja" \
-DCMAKE_INSTALL_PREFIX=/tmp/programs/clang/20.1.5 \
-DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_PROJECTS="clang;lld;clang-tools-extra" \
-DLLVM_ENABLE_RUNTIMES="compiler-rt;libcxx;libcxxabi;libunwind" \
-DCMAKE_C_COMPILER=/tmp/programs/clang/20.1.5-gcc/bin/clang \
-DCMAKE_CXX_COMPILER=/tmp/programs/clang/20.1.5-gcc/bin/clang++ \
-DLLVM_ENABLE_LLD=On
```
Notice CMake configure time significantly increased (for me is about **44** seconds now).
After LLVM is built, I tried to use it to build our project. Well, it failed even to build gRPC dependency for 1.5 hours utilizing 100% of CPU.
TODO: I'll add 20.1.4 and 20.1.3 comparisons a bit later.
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzkVl-P2jgQ_zTmZZTIOKELDzyEABV37B_tbu96T8hxhuCtYyPbWdh--pMTYGG7rVr16XQoEo49M55_v1-GOycrjTgmgwkZTHu88Rtjx4_RNd_v973ClC_jBWz4M4I2XgosoeZPxsIW7drYmmuBYLGy6Jw0GsrGSl0BPqOG_Jp_QRBGr2XVWATneYVA2HC3wfBqagSPzjvgNsjVW6mwBK5LsI0Gb6BCf9y3IPiWF1JJL9ERNooJzQhLugceWtv9GPJOHJbLv66B0bgfD6BxwSf34jzWUAnRqtLsI_oLMWcaK9CRJBySD7R7Cu42hGaiBMLmvt4SNt9a84TCO8LmhGa74GV0C0o919HhKHZWxJ7beP8VNt5vW6NsTti8kn7TFLEwNWHzoHL4O2oSNreokLsQ5Lw0O60MLw9CxlZR5-wbrcPu2bWEZp5biPbr7zlGaFY_w-XdWThv91bOivM0EJrlp0oSNuyK-4y2LXvNX6BAMGt4MY0FsTFSIGGj93N5nsjK8jpEKmr-BQmbJ3HShVdIfdwGMsgJzaD9RQ_vFuLk8ymrl1qT72sVjVTlmUL0EQhjN1I_ccLYpZlpfp39OVstbh4es-VydXc_my8-k2T6bkiK64qweVebqBLiXVuTT4vldPX4z92MJNP7rvYnV6ahQVezm2yynK3u7m__mOWPD-19rDOfTJQqSTJp3yJvjHIR7r09d_3Syv2nm8fF9exo5QCvyPpgSxZivz8teCG7daN3UpeEsTctcdNywjdI97Jum2RtLNQI0gEvTOOBsIywbBgPuwU4FEaXRzRP2jpcdsxvdEsUtYX9-bp3VYk8twHRUjvPlYIogugJCEsJG-qtNSK09dss7GCHHUs22my9rOVXDDcPv0hdcsJGR3PcB7iY9TnxHOjoRGavfMZ-xGdPjfMQYrhksZ30G_iY553RE2bfR6KtIbIdQ5zS8X8F6Cta_oO4fOt8vspvr-8Wy9n9T5PTa0nD0TcGP3_-XZOETQibvB_8cjklyfRW_wK_hMFFrqXg2qsXkFrYUKHy-7yTppe0A9rsjoMEzbK1R9shSboOV4TlsABvJZZhGmkcgvRh1RFL-NIdP6vwNyoV5KWHNW_nmHYGOglX93c5lLhFXaIWLxBcDE23MY110Hip5NeA6j6lhA0CQ-R3n2LofHu8nd6SJIMFYVdKAS_LDu1pOyy1y6QdlLiVzmgHHArpQXGPNu6V46QcJSPew3H_Kr0a0JQO0t5mXLIriiOOScpYSocl5aK4GrJRgUkxKgvRk2NG2YAO-ldBL0ljth4MUir6H4Zrtl5TJCnFmksVB5jGxlY96VyD435Kk-GHnuIFKteOlkdYMBamTDtux46iqRxJqZLOu1cTXnqF4_zQTPlZ5xxw-sMB9JAFXYXUd5npNVaNf3kKayMJbX0I5nnM_g0AAP__VxZn1w">