<table border="1" cellspacing="0" cellpadding="8">
<tr>
<th>Issue</th>
<td>
<a href=https://github.com/llvm/llvm-project/issues/62407>62407</a>
</td>
</tr>
<tr>
<th>Summary</th>
<td>
Shared library generated with -Oz significantly larger than other optimization levels
</td>
</tr>
<tr>
<th>Labels</th>
<td>
new issue
</td>
</tr>
<tr>
<th>Assignees</th>
<td>
</td>
</tr>
<tr>
<th>Reporter</th>
<td>
behdad
</td>
</tr>
</table>
<pre>
Compiling `src/harfbuzz.cc` from https://github.com/harfbuzz/harfbuzz with `clang++` with `-shared -fPIC` shows significantly larger binary size with `-Oz` than all other optimization levels including `-O3`:
```
behdad:hb 0 (main)$ clang++ src/harfbuzz.cc -shared -fPIC -o out.so -Oz
behdad:hb 0 (main)$ size out.so
text data bss dec hex filename
1587254 37984 560 1625798 18cec6 out.so
behdad:hb 0 (main)$ clang++ src/harfbuzz.cc -shared -fPIC -o out.so -O3
behdad:hb 0 (main)$ size out.so
text data bss dec hex filename
1376228 11984 560 1388772 1530e4 out.so
behdad:hb 0 (main)$ clang++ src/harfbuzz.cc -shared -fPIC -o out.so -Os
behdad:hb 0 (main)$ size out.so
text data bss dec hex filename
1208053 20880 560 1229493 12c2b5 out.so
behdad:hb 0 (main)$ clang++ src/harfbuzz.cc -shared -fPIC -o out.so -O2
behdad:hb 0 (main)$ clang++ --version
```
With static build (without `-shared -fPIC`), the `-Oz` output is still larger than `-Os`, but only slightly so:
```
behdad:hb 1 (main)$ clang++ src/harfbuzz.cc -c -o out.o -Oz
behdad:hb 0 (main)$ size out.o
text data bss dec hex filename
822822 1720 544 825086 c96fe out.o
behdad:hb 0 (main)$ clang++ src/harfbuzz.cc -c -o out.o -Os
behdad:hb 0 (main)$ size out.o
text data bss dec hex filename
807509 1720 544 809773 c5b2d out.o
behdad:hb 0 (main)$ clang++ src/harfbuzz.cc -c -o out.o -O2
behdad:hb 0 (main)$ size out.o
text data bss dec hex filename
1032718 1720 544 1034982 fcae6 out.o
```
Clang version:
```
clang version 15.0.7 (Fedora 15.0.7-2.fc37)
Target: x86_64-redhat-linux-gnu
Thread model: posix
InstalledDir: /usr/bin
```
</pre>
<img width="1px" height="1px" alt="" src="http://email.email.llvm.org/o/eJy8Vk1v4zYQ_TX0ZSCDGkn8OOiQzcLAnlKgBXosKIq2WNCiQVKJ419fkHa6DtbZbtDdAII15nyI72HmYVSMdjcb05PuE-k-r9SSJh_6wUyjGleDH5_7e78_WGfnHRBGY9AEN5MK22E5ndZaE0ZhG_weppQOkTR3BDcENzubpmVYa7-_Cr8y4cmmKRfUTs07gp_yw-i_x1WcVDAjVNvfvtxnR5z8U4R8Wbu1Ws3JPYNTYWcCDHZW4RmiPZmv-Q-nnJUmNYNyDnyaTAB_SHZvTypZP4Mzj8ZFsLN2y3iBVz00hNGMgn4m9C7b56f8PbNCmrtpAAoExV7ZmaAk2MIVDviGJHgFByoPfknr6AHyPf-zdkF2zjgHA0Ayx0SohFElld8AMMR4sUajL9ZkjoTKrXVmVntzzq47wbFrS0TDpShWl0HKmmHHpcgHtdBGM0Ll9Yd_CQPNxzPQcIZYYEJdv2agEYJzLAx0DTXtRzAQP54BpIJ2TYlAKgS9YgBRtrK4atQ4dB_BAL6vdlU9mhCtn2_O6fn3zywFMalkNQyLdWOul_XBL-mWxJTP3EOazJWA-CUdlgQ2QkzWuRfJKbpSomLJvIdhSeBn9wzR2d2U1Sn6H9GR-n0M6hfa_Dul49uuge_2za2mAYEoEM-BNUd6SenaMkACOyqyYoCWbGsubfP_u-YV5veMys_BTHlH5ZuYqeS8zIruBhx_DeYfGI6firmmDfJavIG5pk0rRemCrVaGvcZ8cxTvM1h4Gdk3pkJfB0HdremaZ5QbM_qgLgcVrre64Rl1Sfojz2MizR0cBfuLtVUw46RS5ey8HKvdvFzCpmDUCHs_GpeDDz7a49n1ZY5JOWfGzzZkF8HNEgPBzWBvq8tq7JtRNlKtTF8zgaxGydlq6mUtaa0V45p3NaoOueBN0xquGxwaMa5sjxQb2iKvGcqGrYVAuRV6SxmjA5OUtNTslXVr5x73ax92KxvjYnqGLeUrpwbjYtnUEGfzBMVJEPPiFvqcUw3LLpKWOhtT_Fol2eRM__tZ75wdQt6XdmY2QSUznpem6uF0e70qWvfm_rRaguu_s_vlO1xe1SH4v41OBDfl5pHgpiD7JwAA__8f3QXC">