diff options
author | Jan Hubicka <jh@suse.cz> | 2021-11-26 13:54:41 +0100 |
---|---|---|
committer | Jan Hubicka <jh@suse.cz> | 2021-11-26 13:54:41 +0100 |
commit | 2cadaa1f134beca5ec63544f185362c223bab590 (patch) | |
tree | 78cb436b98978e0bcb588cec13d9d6b514e29d41 /gcc | |
parent | 906cad89b390f7b471c0558c5770fc720bab2b1d (diff) | |
download | gcc-2cadaa1f134beca5ec63544f185362c223bab590.zip gcc-2cadaa1f134beca5ec63544f185362c223bab590.tar.gz gcc-2cadaa1f134beca5ec63544f185362c223bab590.tar.bz2 |
Minor ipa-modref tweaks
To make dumps easier to read modref now dumps cgraph_node name rather then
cfun name in function being analysed and I also fixed minor issue with ECF
flags merging when updating inline summary.
gcc/ChangeLog:
2021-11-26 Jan Hubicka <hubicka@ucw.cz>
* ipa-modref.c (analyze_function): Drop parameter F and dump
cgraph node name rather than cfun name.
(modref_generate): Update.
(modref_summaries::insert):Update.
(modref_summaries_lto::insert):Update.
(pass_modref::execute):Update.
(ipa_merge_modref_summary_after_inlining): Improve combining of
ECF_FLAGS.
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ipa-modref.c | 24 |
1 files changed, 13 insertions, 11 deletions
diff --git a/gcc/ipa-modref.c b/gcc/ipa-modref.c index 2f52d41..9e537b0 100644 --- a/gcc/ipa-modref.c +++ b/gcc/ipa-modref.c @@ -2943,17 +2943,17 @@ analyze_parms (modref_summary *summary, modref_summary_lto *summary_lto, } } -/* Analyze function F. IPA indicates whether we're running in local mode +/* Analyze function. IPA indicates whether we're running in local mode (false) or the IPA mode (true). Return true if fixup cfg is needed after the pass. */ static bool -analyze_function (function *f, bool ipa) +analyze_function (bool ipa) { bool fixup_cfg = false; if (dump_file) - fprintf (dump_file, "modref analyzing '%s' (ipa=%i)%s%s\n", - function_name (f), ipa, + fprintf (dump_file, "\n\nmodref analyzing '%s' (ipa=%i)%s%s\n", + cgraph_node::get (current_function_decl)->dump_name (), ipa, TREE_READONLY (current_function_decl) ? " (const)" : "", DECL_PURE_P (current_function_decl) ? " (pure)" : ""); @@ -3224,7 +3224,7 @@ modref_generate (void) if (!f) continue; push_cfun (f); - analyze_function (f, true); + analyze_function (true); pop_cfun (); } } @@ -3257,7 +3257,7 @@ modref_summaries::insert (struct cgraph_node *node, modref_summary *) return; } push_cfun (DECL_STRUCT_FUNCTION (node->decl)); - analyze_function (DECL_STRUCT_FUNCTION (node->decl), true); + analyze_function (true); pop_cfun (); } @@ -3277,7 +3277,7 @@ modref_summaries_lto::insert (struct cgraph_node *node, modref_summary_lto *) return; } push_cfun (DECL_STRUCT_FUNCTION (node->decl)); - analyze_function (DECL_STRUCT_FUNCTION (node->decl), true); + analyze_function (true); pop_cfun (); } @@ -4032,9 +4032,9 @@ public: } -unsigned int pass_modref::execute (function *f) +unsigned int pass_modref::execute (function *) { - if (analyze_function (f, false)) + if (analyze_function (false)) return execute_fixup_cfg (); return 0; } @@ -5106,8 +5106,10 @@ ipa_merge_modref_summary_after_inlining (cgraph_edge *edge) = summaries_lto ? summaries_lto->get (edge->callee) : NULL; int flags = flags_from_decl_or_type (edge->callee->decl); /* Combine in outer flags. */ - for (cgraph_node *n = edge->caller; n->inlined_to; n = n->callers->caller) - flags |= flags_from_decl_or_type (edge->callee->decl); + cgraph_node *n; + for (n = edge->caller; n->inlined_to; n = n->callers->caller) + flags |= flags_from_decl_or_type (n->decl); + flags |= flags_from_decl_or_type (n->decl); bool ignore_stores = ignore_stores_p (edge->caller->decl, flags); if (!callee_info && to_info) |