[Bug middle-end/38474] compile time explosion in dataflow_set_preserve_mem_locs at -O3

hubicka at ucw dot cz gcc-bugzilla@gcc.gnu.org
Tue Nov 6 12:59:00 GMT 2018


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=38474

--- Comment #80 from Jan Hubicka <hubicka at ucw dot cz> ---
> 
> flat perf profile:
> 
> Samples: 510K of event 'instructions:p', Event count (approx.): 715615147320    
> Overhead       Samples  Command  Shared Object     Symbol                       
>    8.08%         95243  f951     f951              [.] bitmap_ior_into
>    7.21%         25966  f951     f951              [.] sreal::operator*
>    5.43%         19353  f951     f951              [.]
> hash_table<hash_map<int_h
>    5.20%         23167  f951     f951              [.] get_ref_base_and_extent
>    4.93%         17947  f951     f951              [.]
> profile_count::to_sreal_s
>    4.37%         15865  f951     f951              [.] sreal::operator/
>    3.45%         30532  f951     f951              [.] bitmap_set_bit
>    3.41%         12159  f951     f951              [.]
> hash_table<hash_map<int_h
>    3.08%         11034  f951     f951              [.] default_binds_local_p_3
>    3.08%         11146  f951     f951              [.]
> hash_table<hash_map<int_h
>    2.21%          7877  f951     f951              [.]
> want_inline_small_functio
>    1.93%          6874  f951     f951              [.] edge_badness
>    1.87%          6675  f951     f951              [.]
> compute_inlined_call_time
> 
> the ipa_fn_summary hash and edge_growth_cache / call_summary hashes are
> oddly on top of the profile...

Yep, this is because they used to be arrays indexed by symbol UIDs which
Martin converted to hash tables.  Inliner happily calls summary_get each
time it needs the summary.  I have some patches to speed this up which I
will push out after the type changes (while they add bit of extra
functionality by teaching ipa-predicates abou value range I hope they
are OK for early stage3).


More information about the Gcc-bugs mailing list