https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92924
Bug ID: 92924 Summary: [10 regression] reproducible indirect call profile merging causes 80% slowdown in Firefox pref-reftest-singletons id-getter microbenchmarks Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: hubicka at gcc dot gnu.org Target Milestone: --- During the train run, in firefox2019-release-9test/dom/bindings function ;; Function mozilla::dom::binding_detail::GenericGetter<mozilla::dom::binding_detail::NormalThisPolicy, mozilla::dom::binding_detail::ThrowExceptions> (_ZN7mozilla3dom14binding_detail13GenericGetterINS1_16NormalThisPolicyENS1_15ThrowExceptionsEEEbP9JSContextjPN2JS5ValueE, funcdef_no=39965, decl_uid=943222, cgraph_uid=24044, symbol_order=25045) calls function get_id most of time. With GCC 9 we get: Indirect call value:939751711 match:139135227 all:140993325. Indirect call -> direct call from other modulegetter_18=> 939751711 (will resolve only with LTO) With GCC 10 we get: Trying transformations on stmt ok_20 = getter_18 (cx_131(D), D.1007269, self_129, D.1007259); Indirect call counterall: 140957778, values: [2135000278:-1], [401302964:3804], [1203869319:12375], [429856732:6018]. So the profile omits completely get_id and we fail to inline. This has quite large performance impact of Firefox in general since it seems to affect DOM tree manipulation quite badly.