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).