To do so we have to tweak the cost model such that specialization does not trigger excessively.
Compile times -O3
| benchmark | nspecs before | nspecs after | instrCnt delta % |
| ClamAV | 5 | 5 | +0.003 |
| 7zip | 1 | +0.006 | |
| tramp3d-v4 | -0.03 | ||
| kimwitu++ | -0.015 | ||
| sqlite3 | +0.034 | ||
| mafft | +0.022 | ||
| lencod | 1 | +0.171 | |
| SPASS | 1 | +0.364 | |
| consumer-typeset | 1 | -0.007 | |
| Bullet | 1 | 1 | +0.015 |
| geomean | +0.056 | ||
Compile times LTO
| benchmark | nspecs before | nspecs after | instrCnt delta % |
| ClamAV | 2 | +0.535 | |
| 7zip | +0.024 | ||
| tramp3d-v4 | +0.022 | ||
| kimwitu++ | -0.008 | ||
| sqlite3 | +0.091 | ||
| mafft | -0.001 | ||
| lencod | 6 | +0.205 | |
| SPASS | 3 | 1 | +0.032 |
| consumer-typeset | 1 | 1 | -0.361 |
| Bullet | -0.01 | ||
| geomean | +0.053 |
nit: It is better to have a paragraph for the cost model. This is not required now. We can add one after we feel it is relatively stable.