On 09/27/2014 09:47 AM, Markus Trippelsdorf wrote:
> On 2014.09.27 at 07:59 +0200, Markus Trippelsdorf wrote:
>>
>>> It seems that in this case we reject too many of equality candidates?
>>> It think the original numbers was about 4-5% but later some equivalences was
>>> disabled because of devirt/aliasing issues. Do you compare it with gold ICF
>>> enabled? There are quite few obvious improvements to the analysis that can
>>> be done, but I guess we need to analyze the interesting cases one by one.
>
> Forgot to post the binary size numbers (in bytes):
>
> | gold's icf off | gold's icf on |
> --------------+----------------+----------------+
> gcc's icf off | 79793880 | 74881040 |
> --------------+---------------------------------+
> gcc's icf on | 78043608 | 73612800 |
> --------------+----------------+----------------+
>
Thanks once more!
Gold ICF is quite strong, I will verify what functions are not caught by IPA
ICF.
These data present that IPA ICF can reduce the binary by 2.19%. I know that
it's quite a small improvement,
but if you realize that the pass can reduce just the size of .text (and
slightly related sections). There are
stats about libxul.so (please ignore last 3 columns):
Section name Start Size in B Size Portion Disk
read in B Disk read Sec. portion
0 0 0.00 B 0.00%
0 0.00 B 0.00%
.note.gnu.build-i 512 36 36.00 B 0.00%
0 0.00 B 0.00%
.dynsym 552 81192 79.29 KB 0.08%
0 0.00 B 0.00%
.dynstr 81744 90859 88.73 KB 0.09%
0 0.00 B 0.00%
.hash 172608 21752 21.24 KB 0.02%
0 0.00 B 0.00%
.gnu.version 194360 6766 6.61 KB 0.01%
0 0.00 B 0.00%
.gnu.version_d 201128 56 56.00 B 0.00%
0 0.00 B 0.00%
.gnu.version_r 201184 1216 1.19 KB 0.00%
0 0.00 B 0.00%
.rela.dyn 202400 8198208 7.82 MB 8.56%
0 0.00 B 0.00%
.rela.plt 8400608 70272 68.62 KB 0.07%
0 0.00 B 0.00%
.init 8470880 26 26.00 B 0.00%
0 0.00 B 0.00%
.plt 8470912 46864 45.77 KB 0.05%
0 0.00 B 0.00%
.text 8517776 39014333 37.21 MB 40.72%
0 0.00 B 0.00%
.fini 47532112 9 9.00 B 0.00%
0 0.00 B 0.00%
.rodata 47532288 15258560 14.55 MB 15.93%
0 0.00 B 0.00%
.eh_frame 62790848 6203564 5.92 MB 6.47%
0 0.00 B 0.00%
.eh_frame_hdr 68994412 1088012 1.04 MB 1.14%
0 0.00 B 0.00%
.tbss 70082560 4 4.00 B 0.00%
0 0.00 B 0.00%
.dynamic 70082560 1104 1.08 KB 0.00%
0 0.00 B 0.00%
.got 70083664 1384 1.35 KB 0.00%
0 0.00 B 0.00%
.got.plt 70085048 23448 22.90 KB 0.02%
0 0.00 B 0.00%
.data 70108544 811616 792.59 KB 0.85%
0 0.00 B 0.00%
.jcr 70920160 8 8.00 B 0.00%
0 0.00 B 0.00%
.tm_clone_table 70920168 0 0.00 B 0.00%
0 0.00 B 0.00%
.fini_array 70920168 8 8.00 B 0.00%
0 0.00 B 0.00%
.init_array 70920176 16 16.00 B 0.00%
0 0.00 B 0.00%
.data.rel.ro.loca 70920192 3938880 3.76 MB 4.11%
0 0.00 B 0.00%
.data.rel.ro 74859072 269216 262.91 KB 0.28%
0 0.00 B 0.00%
.bss 75128320 1844246 1.76 MB 1.92%
0 0.00 B 0.00%
.debug_line 75128288 517 517.00 B 0.00%
0 0.00 B 0.00%
.debug_info 75128805 817 817.00 B 0.00%
0 0.00 B 0.00%
.debug_abbrev 75129622 438 438.00 B 0.00%
0 0.00 B 0.00%
.debug_aranges 75130064 224 224.00 B 0.00%
0 0.00 B 0.00%
.debug_ranges 75130288 128 128.00 B 0.00%
0 0.00 B 0.00%
.comment 75130416 42 42.00 B 0.00%
0 0.00 B 0.00%
.debug_loc 75130458 304 304.00 B 0.00%
0 0.00 B 0.00%
.debug_str 75130762 653 653.00 B 0.00%
0 0.00 B 0.00%
.note.gnu.gold-ve 75131416 28 28.00 B 0.00%
0 0.00 B 0.00%
.symtab 75131448 6170112 5.88 MB 6.44%
0 0.00 B 0.00%
.strtab 81301560 12666771 12.08 MB 13.22%
0 0.00 B 0.00%
.shstrtab 93968331 419 419.00 B 0.00%
0 0.00 B 0.00%
95812108 91.37 MB
0 0.00 B 0.00%
Martin