On 11/18/20 3:50 PM, Jan Hubicka wrote:
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
Nice!
Note that you want to also note gimple in timevar since that is also
mostly ICF related.
I know about that, good reminder.
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?
It has LTO enabled, you can build it:
https://build.opensuse.org/package/show/openSUSE:Factory/chromium
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.
You can probably also test our package:
https://build.opensuse.org/package/show/openSUSE:Factory/MozillaFirefox
Martin
Honza
Martin