diff options
author | Jan Hubicka <hubicka@ucw.cz> | 2014-11-18 21:44:16 +0100 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2014-11-18 20:44:16 +0000 |
commit | 2bf86c845a89fce00ccb219adbf6002443b5b1cb (patch) | |
tree | 78111324e160451c1d54ce78b9af90a1e98ffa12 /gcc/ipa-cp.c | |
parent | bb59f396f8ca74c7d663c197e99d15bbe9f6e5b6 (diff) | |
download | gcc-2bf86c845a89fce00ccb219adbf6002443b5b1cb.zip gcc-2bf86c845a89fce00ccb219adbf6002443b5b1cb.tar.gz gcc-2bf86c845a89fce00ccb219adbf6002443b5b1cb.tar.bz2 |
ipa-cp.c (ipcp_cloning_candidate_p): Use opt_for_fn.
* ipa-cp.c (ipcp_cloning_candidate_p): Use opt_for_fn.
(ipa_value_from_jfunc, ipa_context_from_jfunc): Skip sanity check.
(ipa_get_indirect_edge_target_1): Use opt_for_fn.
(good_cloning_opportunity_p): Likewise.
(ipa-cp gate): Enable ipa-cp with LTO.
* ipa-profile.c (ipa_propagate_frequency): Use opt_for_fn.
* ipa.c (symbol_table::remove_unreachable_nodes): Always build type
inheritance.
* ipa-inline-transform.c (inline_transform): Check if there are inlines
to apply even at -O0.
* cgraphunit.c (cgraph_node::finalize_function): Use opt_for_fn.
(analyze_functions): Build type inheritance graph.
* ipa-inline.c (can_inline_edge_p): Use opt_for_fn.
(want_early_inline_function_p, want_inline_small_function_p):
Likewise.
(check_callers): Likewise.
(edge_badness): Likewise.
(inline_small_functions): Always be ready for indirect inlining
to happend.
(ipa_inline): Always use want_inline_function_to_all_callers_p.
(early_inline_small_functions): Use opt_for_fn.
* ipa-inline-analysis.c (estimate_function_body_sizes): use opt_for_fn.
(estimate_function_body_sizes): Likewise.
(compute_inline_parameters): Likewise.
(estimate_edge_devirt_benefit): Likewise.
(inline_analyze_function): Likewise.
* ipa-devirt.c (ipa_devirt): Likewise.
(gate): Use in_lto_p.
* ipa-prop.c (ipa_func_spec_opts_forbid_analysis_p): Use opt_for_fn.
(try_make_edge_direct_virtual_call): Likewise.
(update_indirect_edges_after_inlining): Likewise.
(ipa_free_all_structures_after_ipa_cp): Add in_lto_p check.
* common.opt (findirect-inlining): Turn into optimization.
* ipa-pure-const.c (add_new_function): Use opt_for_fn.
(pure_const_generate_summary): Likewise.
(gate_pure_const): Always enable with in_lto_p.
From-SVN: r217737
Diffstat (limited to 'gcc/ipa-cp.c')
-rw-r--r-- | gcc/ipa-cp.c | 22 |
1 files changed, 8 insertions, 14 deletions
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c index e598241..f97912b 100644 --- a/gcc/ipa-cp.c +++ b/gcc/ipa-cp.c @@ -566,7 +566,7 @@ ipcp_cloning_candidate_p (struct cgraph_node *node) gcc_checking_assert (node->has_gimple_body_p ()); - if (!flag_ipa_cp_clone) + if (!opt_for_fn (node->decl, flag_ipa_cp_clone)) { if (dump_file) fprintf (dump_file, "Not considering %s for cloning; " @@ -902,10 +902,7 @@ ipa_value_from_jfunc (struct ipa_node_params *info, struct ipa_jump_func *jfunc) ipcp_lattice<tree> *lat; if (!info->lattices) - { - gcc_checking_assert (!flag_ipa_cp); - return NULL_TREE; - } + return NULL_TREE; lat = ipa_get_scalar_lat (info, idx); if (!lat->is_single_const ()) return NULL_TREE; @@ -967,10 +964,7 @@ ipa_context_from_jfunc (ipa_node_params *info, cgraph_edge *cs, int csidx, else { if (!info->lattices) - { - gcc_checking_assert (!flag_ipa_cp); - return ctx; - } + return ctx; ipcp_lattice<ipa_polymorphic_call_context> *lat; lat = ipa_get_poly_ctx_lat (info, srcidx); if (!lat->is_single_const ()) @@ -1786,7 +1780,7 @@ ipa_get_indirect_edge_target_1 (struct cgraph_edge *ie, return NULL_TREE; } - if (!flag_devirtualize) + if (!opt_for_fn (ie->caller->decl, flag_devirtualize)) return NULL_TREE; gcc_assert (!ie->indirect_info->agg_contents); @@ -1884,8 +1878,8 @@ ipa_get_indirect_edge_target_1 (struct cgraph_edge *ie, struct cgraph_node *node; if (*speculative) return target; - if (!flag_devirtualize_speculatively || ie->speculative - || !ie->maybe_hot_p ()) + if (!opt_for_fn (ie->caller->decl, flag_devirtualize_speculatively) + || ie->speculative || !ie->maybe_hot_p ()) return NULL; node = try_speculative_devirtualization (ie->indirect_info->otr_type, ie->indirect_info->otr_token, @@ -2003,7 +1997,7 @@ good_cloning_opportunity_p (struct cgraph_node *node, int time_benefit, int freq_sum, gcov_type count_sum, int size_cost) { if (time_benefit == 0 - || !flag_ipa_cp_clone + || !opt_for_fn (node->decl, flag_ipa_cp_clone) || !optimize_function_for_speed_p (DECL_STRUCT_FUNCTION (node->decl))) return false; @@ -4315,7 +4309,7 @@ public: { /* FIXME: We should remove the optimize check after we ensure we never run IPA passes when not optimizing. */ - return flag_ipa_cp && optimize; + return (flag_ipa_cp && optimize) || in_lto_p; } virtual unsigned int execute (function *) { return ipcp_driver (); } |