<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">