Skip to content

Commit

Permalink
Minor ipa-modref tweaks
Browse files Browse the repository at this point in the history
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  <[email protected]>

	* 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.
  • Loading branch information
Jan Hubicka committed Nov 26, 2021
1 parent 906cad8 commit 2cadaa1
Showing 1 changed file with 13 additions and 11 deletions.
24 changes: 13 additions & 11 deletions gcc/ipa-modref.c
Original file line number Diff line number Diff line change
Expand Up @@ -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)" : "");

Expand Down Expand Up @@ -3224,7 +3224,7 @@ modref_generate (void)
if (!f)
continue;
push_cfun (f);
analyze_function (f, true);
analyze_function (true);
pop_cfun ();
}
}
Expand Down Expand Up @@ -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 ();
}

Expand All @@ -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 ();
}

Expand Down Expand Up @@ -4032,9 +4032,9 @@ class pass_ipa_modref : public ipa_opt_pass_d

}

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;
}
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit 2cadaa1

Please sign in to comment.