[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