> On 11/13/20 6:50 PM, Jan Hubicka wrote: > > Bootstrapped/regtested x86_64-linux. I plan to commit it on monday if there > > are > > no complains. > > Hello Honza. > > Thank you very much for the patch set. > It's a nice improvement and it will eventually fix the WPA slowness caused by > IPA ICF. > > I made some measurements for master before a first patch and this patch (3/4) > on godot > game engine: > > BEFORE: > > Equal symbols: 15690 > Totally needed symbols: 17913, fraction of loaded symbols: 39.05% > > 2156989 false returned: '' in equals_private at > /home/marxin/Programming/gcc2/gcc/ipa-icf.c:879 > 1099887 false returned: 'operand_equal_p failed' in compare_operand at > /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:307 > 1048605 false returned: 'types are not compatible' in compatible_types_p at > /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:210 > 1047679 false returned: 'GIMPLE assignment operands are different' in > compare_gimple_assign at > /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:632 > 1047517 false returned: 'GIMPLE NOP LHS type mismatch' in > compare_gimple_assign at > /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:628 > 57659 false returned: 'call function types are not compatible' in > compare_gimple_call at /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:573 > 52088 false returned: 'PHI node comparison returns false' in > equals_private at /home/marxin/Programming/gcc2/gcc/ipa-icf.c:914 > 52088 false returned: '' in compare_phi_node at > /home/marxin/Programming/gcc2/gcc/ipa-icf.c:1552 > 13565 false returned: 'decl_or_type flags are different' in equals_wpa at > /home/marxin/Programming/gcc2/gcc/ipa-icf.c:567 > 9919 false returned: 'result types are different' in equals_wpa at > /home/marxin/Programming/gcc2/gcc/ipa-icf.c:616 > > Time variable usr sys > wall GGC > ipa icf : 4.31 ( 7%) 0.06 ( 2%) 4.38 ( > 7%) 6008k ( 0%) > TOTAL : 57.57 3.49 61.11 > 4830M > > AFTER: > > Equal symbols: 17019 > Totally needed symbols: 19875, fraction of loaded symbols: 70.88% > > 377327 false returned: '' in equals_private at > /home/marxin/Programming/gcc2/gcc/ipa-icf.c:886 > 213086 false returned: 'operand_equal_p failed' in compare_operand at > /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:356 > 212179 false returned: 'compare_ao_refs failed (access path difference)' > in compare_operand at /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:345 > 159947 false returned: '' in compare_gimple_call at > /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:607 > 147098 false returned: 'GIMPLE assignment operands are different' in > compare_gimple_assign at > /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:699 > 66123 false returned: 'GIMPLE call operands are different' in > compare_gimple_call at /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:656 > 52088 false returned: 'PHI node comparison returns false' in > equals_private at /home/marxin/Programming/gcc2/gcc/ipa-icf.c:921 > 52088 false returned: '' in compare_phi_node at > /home/marxin/Programming/gcc2/gcc/ipa-icf.c:1580 > 12643 false returned: 'decl_or_type flags are different' in equals_wpa at > /home/marxin/Programming/gcc2/gcc/ipa-icf.c:572 > 6318 false returned: 'different tree types' in compatible_types_p at > /home/marxin/Programming/gcc2/gcc/ipa-icf-gimple.c:206 > > Time variable usr sys > wall GGC > ipa icf : 3.40 ( 6%) 0.09 ( 3%) 3.49 ( > 6%) 27M ( 1%) > TOTAL : 56.60 2.94 59.58 > 4478M > > and I'm also sending usage-wrapper graphs.
Thanks for checking! I also uploaded some data to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92535 Note that you want to also note gimple in timevar since that is also mostly ICF related. It seems that ICF performance is highly sensitive to application: it now behaves very well on cc1plus, seems to do quite well on godot and still does very bad on Firefox (we still have regression there compared to gcc 9 that itself did relatively bad). I noticed one stupid bug in operand_equal_p on coponent_refs (I am just testing a fix) and there are quite few important things that we compare but do not hash. Those should be easy to fix. I plan to iterate through this on firefox. It would be great to get chromium data. Did you suceeded building it recently? I now got last year firefox building and working and I am looking into updating it to current firefox tree that will probaby keep me occupied for some time. Honza > > Martin