Commit d200a49f by Jan Hubicka Committed by Jan Hubicka

re PR ipa/92471 ([ICE] lto1 segmentation fault: ipa-profile.c ipa_get_cs_argument_count (args=0x0))

	PR ipa/92471
	* ipa-profile.c (check_argument_count): Break out from ...;
	watch for missing summaries.
	(ipa_profile): Here.

From-SVN: r278100
parent 1cf83d35
2019-11-12 Jan Hubicka <hubicka@ucw.cz>
PR ipa/92471
* ipa-profile.c (check_argument_count): Break out from ...;
watch for missing summaries.
(ipa_profile): Here.
2019-11-12 Martin Sebor <msebor@redhat.com>
PR tree-optimization/92412
......@@ -476,6 +476,27 @@ ipa_propagate_frequency (struct cgraph_node *node)
return changed;
}
/* Check that number of arguments of N agrees with E.
Be conservative when summaries are not present. */
static bool
check_argument_count (struct cgraph_node *n, struct cgraph_edge *e)
{
if (!ipa_node_params_sum || !ipa_edge_args_sum)
return true;
class ipa_node_params *info = IPA_NODE_REF (n->function_symbol ());
if (!info)
return true;
ipa_edge_args *e_info = IPA_EDGE_REF (e);
if (!e)
return true;
if (ipa_get_param_count (info) != ipa_get_cs_argument_count (e_info)
&& (ipa_get_param_count (info) >= ipa_get_cs_argument_count (e_info)
|| !stdarg_p (TREE_TYPE (n->decl))))
return false;
return true;
}
/* Simple ipa profile pass propagating frequencies across the callgraph. */
static unsigned int
......@@ -599,14 +620,7 @@ ipa_profile (void)
"Not speculating: target is overwritable "
"and can be discarded.\n");
}
else if (ipa_node_params_sum && ipa_edge_args_sum
&& (!vec_safe_is_empty
(IPA_NODE_REF (n2)->descriptors))
&& ipa_get_param_count (IPA_NODE_REF (n2))
!= ipa_get_cs_argument_count (IPA_EDGE_REF (e))
&& (ipa_get_param_count (IPA_NODE_REF (n2))
>= ipa_get_cs_argument_count (IPA_EDGE_REF (e))
|| !stdarg_p (TREE_TYPE (n2->decl))))
else if (check_argument_count (n2, e))
{
nmismatch++;
if (dump_file)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment