diff options
author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-07-07 13:28:35 +0000 |
---|---|---|
committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2017-07-07 13:28:35 +0000 |
commit | 5f4e4f363db55e22df6442d19182a12f30689171 (patch) | |
tree | b2b3db83fc40d137f7bde2edb4558d282d409c6a /gcc/ipa-fnsummary.c | |
parent | 013560d80be7951ec5c5817c41d48cca40fd56ef (diff) | |
download | gcc-5f4e4f363db55e22df6442d19182a12f30689171.tar.gz |
* ipa-comdats.c: Remove optimize check from gate.
* ipa-fnsummary.c (ipa_fn_summary_generate): do not generate summary
for functions not optimized.
(ipa_fn_summary_read): Skip optimize check.
(ipa_fn_summary_write): Likewise.
* ipa-inline-analysis.c (do_estimate_growth_1): Check that caller
is optimized.
* ipa-inline.c (can_inline_edge_p): Not optimized functions are
uninlinable.
(can_inline_edge_p): Check flag_pcc_struct_return for match.
(check_callers): Give up on caller which is not optimized.
(inline_small_functions): Likewise.
(ipa_inline): Do not give up when not optimizing.
* ipa-visbility.c (function_and_variable_visibility): Do not optimize
away unoptimizes cdtors.
(whole_program_function_and_variable_visibility): Do
ipa_discover_readonly_nonaddressable_vars in LTO mode.
* ipa.c (process_references): Do not check optimize.
(symbol_table::remove_unreachable_nodes): Update optimize check.
(set_writeonly_bit): Update optimize check.
(pass_ipa_cdtor_merge::gate): Do not check optimize.
(pass_ipa_single_use::gate): Remove.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@250048 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ipa-fnsummary.c')
-rw-r--r-- | gcc/ipa-fnsummary.c | 25 |
1 files changed, 10 insertions, 15 deletions
diff --git a/gcc/ipa-fnsummary.c b/gcc/ipa-fnsummary.c index 878f9a891f3..52a8c9b0e81 100644 --- a/gcc/ipa-fnsummary.c +++ b/gcc/ipa-fnsummary.c @@ -3174,22 +3174,20 @@ ipa_fn_summary_generate (void) FOR_EACH_DEFINED_FUNCTION (node) if (DECL_STRUCT_FUNCTION (node->decl)) - node->local.versionable = tree_versionable_function_p (node->decl); - - /* When not optimizing, do not bother to analyze. Inlining is still done - because edge redirection needs to happen there. */ - if (!optimize && !flag_generate_lto && !flag_generate_offload && !flag_wpa) - return; + node->local.versionable = + (opt_for_fn (node->decl, optimize) + && tree_versionable_function_p (node->decl)); ipa_fn_summary_alloc (); ipa_fn_summaries->enable_insertion_hook (); ipa_register_cgraph_hooks (); - ipa_free_fn_summary (); FOR_EACH_DEFINED_FUNCTION (node) - if (!node->alias) + if (!node->alias + && (flag_generate_lto || flag_generate_offload|| flag_wpa + || opt_for_fn (node->decl, optimize))) inline_analyze_function (node); } @@ -3342,12 +3340,9 @@ ipa_fn_summary_read (void) fatal_error (input_location, "ipa inline summary is missing in input file"); } - if (optimize) - { - ipa_register_cgraph_hooks (); - if (!flag_ipa_cp) - ipa_prop_read_jump_functions (); - } + ipa_register_cgraph_hooks (); + if (!flag_ipa_cp) + ipa_prop_read_jump_functions (); gcc_assert (ipa_fn_summaries); ipa_fn_summaries->enable_insertion_hook (); @@ -3462,7 +3457,7 @@ ipa_fn_summary_write (void) produce_asm (ob, NULL); destroy_output_block (ob); - if (optimize && !flag_ipa_cp) + if (!flag_ipa_cp) ipa_prop_write_jump_functions (); } |