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