<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=http://email.email.llvm.org/c/eJzVVltvozgU_jXkxQKBuYUHHkjSzETKtFHKPMxTxcWAR8RGtunl388xkDZJ0-5K211pIwvi8x1_fJxbkvPyJTYCe1r2yrATA69htTS3iq4bTY-clqgy8NzAkREujHA1uV6cvGoc6A4ZZR_wuYvT05QppJ0ncETCyQXBp-ICAaj9KDLcFXJs28Ch_Xp1F4jqi2nSVwZ98IxlYLoQ8H-yv6Xgo1xcZsE1sAOJyHVo13kmm9Oo1wZewIKYPRIhKWejuWgz9gE0XknRcMgG_rZcoieqGrTbprC9IJVNJkiJppJC5p2LTD5sJT93PZbJBB5dh4IYHBU9ELRdPWw3i32y__WwS9LvUAT6mdiDOHVPpQ4Vxsiaqu4zubxXX664YtzsWvVvSV_qlLyP9Vmm_lr9qft_FPM34ZdR_0rtXx_9vzHijmqABioLaJDjWI41oUvevQhaN0rjA4pt7KC1IATd80o9wQujNe9ZmSndXniJNqywxsNpQyWCVWlvOXnr6SZhrxpt60VBhqlYwIMoxLjgrKSaSloIpQ0BemC4vRsZgUBkTL1oEsYVIo-EDcd_3OyX35PbNFlstpv0FwLTepPe3tzfo_XdHiVol-zTzfLnNtmj3c_97u7-xjoNypAXNA0J5LiWfYxAmomaKMNN0PM8eAg8syvMlrL-2axZf3xPQbISHXhJWu3YcUmfR2jDpMralpQrKjQE6emlmEbZ4HE2fU4UAWVr2JF98K3ACeVo7CURk9GPoskoX-RgA8m2J89Zj-V6jdizfCe4JPYsL5pfIcaT7aKFrwv2Q_eK4ABf4XXe8X4mObCi6B01GMPwE-qLgp-VsVtGbpTNsh6eJuJNzYaKm_WijRulOgmZGn_5a9DTQzPzg_5X0T4eb2Yn-G9SKNhSKXsi4YuPIzeYNbFLwmheZblXZXZJomyekyIMPLdySJUHXjVrs5y0MjZ86DvMyBMaKHQz-6vZP1dAY92iDnYd27F9F1t2kVeBTRzfI27uzyvDswnMiNbSPBYX9UzEA2Xe1xLAlkol38BMSlozQgbBoFBR1ZL4dVgVGSRCoo6Iih8yVpDxdeRYIz0TXJc_9HVJZgMSDzL_APtXrR4>52936</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
-fno-plt causes perfomance issues with unrolled code
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
Ignition
</td>
</tr>
</table>
<pre>
```
//lib.cpp
void f(){}
```
```
//main.cpp
void f();
int main()
{
for (int i = 100'000'000; i; --i)
{
f();
f();
f();
f();
f();
f();
f();
f();
}
}
```
```
#!/bin/bash
g++ --version
clang++ --version
echo "GCC with PLT"
g++ -shared lib.cpp -O3 -o lib.so
g++ main.cpp lib.so -O3 -o main
time LD_LIBRARY_PATH="$(pwd)" ./main
echo "GCC without PLT"
g++ -shared lib.cpp -O3 -o lib.so
g++ main.cpp lib.so -fno-plt -O3 -o main
time LD_LIBRARY_PATH="$(pwd)" ./main
echo "Clang with PLT"
clang++ -shared lib.cpp -O3 -o lib.so
clang++ main.cpp lib.so -O3 -o main
time LD_LIBRARY_PATH="$(pwd)" ./main
echo "Clang without PLT"
clang++ -shared lib.cpp -O3 -o lib.so
clang++ main.cpp lib.so -fno-plt -O3 -o main
time LD_LIBRARY_PATH="$(pwd)" ./main
```
```
g++ (GCC) 11.1.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
clang version 13.0.0
Target: x86_64-pc-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
GCC with PLT
real 0m5.617s
user 0m5.599s
sys 0m0.004s
GCC without PLT
real 0m4.516s
user 0m4.498s
sys 0m0.002s
Clang with PLT
real 0m5.573s
user 0m5.562s
sys 0m0.001s
Clang without PLT
real 0m6.993s
user 0m6.977s
sys 0m0.001s
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJzVVktvozoU_jVkY4HAvMKCBUmamUiZNkqZxawqHgY8IjayTR__fo6BtEmadu6i90o3skh8zufPH-el5Lx8iY3Anpa9MuzEwGtYLc2toutG0yOnJaoMPDdwZIQLI1xN0IuTV40D3SGj7AM-d3F6mjKFNHhyjp5wgiD4VFwgcGocRYa7Qo5tGzi0X5_uAlH9ME36yqAPnrEMTBcC_k_2txR8lIvLLLgGdiARuQ7tOs9kcxr12sALWBCzRyIk5Ww0F23GPnCNT1I0HLKBvy2X6ImqBu22KWwvSGWTCVKiqaSQeecikw9byc-hxzKZnEfoUBADUNEDQdvVw3az2Cf7Xw-7JP0ORaDvxB7EqXsqdagwRtZUdZ_J5b36csUV42bXqn9L-lKn5H2szzL1d_Wn8P8o5m_CL6P-ldq_Pvr_YMQd1QANVBbQIMexHGvyLnn3ImjdKO0fvNjGDloLQtA9r9QTvDBa856VmdLthZdowwprPJw2VCJYlUbLCa2nm4S9arStFwUZpmIBF1GIccFZSTWVtBBKGwL0wHB7NzICgciYetEkjCtEHgkbjv-42S-_J7dpsthsN-kvBKb1Jr29ub9H67s9StAu2aeb5c9tske7n_vd3f2NdRqUIS9oGhLIcS37GIE0EzVRhpug53nwEHhmV5gtZf2zWbP--J6CZCU68JK0GthxSZ9H14ZJlbUtKVdUaBekp5diGmUD4mz6nCgCytawI_vgW4ETytHYSyImox9Fk1G-yMEGkm1PnrMey_UasWf5TnBJ7FleNL9CjCfbRQtfF-yH7hXBAb7C67zj_UxyYEXRO2owhuEn1BcFPytjt4zcKJspqloSv7ZdkQGlRB0RFT9krNCVJ3uwDG_bM8F1IqFCSzLrRRs3SnUSkjr-SagB1EPf84P-A9I-Hr_MTvDfpFCwHengh48jN5g1sefkoRPNA1KVcz_K7XkwzyO_KHEWRJlfhLM2y0krY8OHFsWMPI2KdN_7qxmNdS862HVsx_ZdbNlFXgU2cXyPuLk_rwzPJjAMWkvrsLioZyIeJOV9LcHZUqnkmzOTktaMkOE64M96SIaINzUbGnI23B0P2v8AG2iWkQ">