Fix ICE in updating inline summaries

Message ID 20191028082105.6xhdxkjvgttrpszd@kam.mff.cuni.cz
State New
Headers show
Series
  • Fix ICE in updating inline summaries
Related show

Commit Message

Jan Hubicka Oct. 28, 2019, 8:21 a.m.
Hi,
my yesterday patch introduced ICE on combining -O2 and -O0 translation
units (since the second has missing summary).

Bootstrapped/regtested x86_64-linux, comitted.

Honza

	* ipa-fnsummary.c (ipa_merge_fn_summary_after_inlining): Check
	for missing EDGE_REF
	* ipa-prop.c (update_jump_functions_after_inlining): Likewise.

Patch

Index: ipa-fnsummary.c
===================================================================
--- ipa-fnsummary.c	(revision 277503)
+++ ipa-fnsummary.c	(working copy)
@@ -3315,7 +3315,7 @@  ipa_merge_fn_summary_after_inlining (str
   if (ipa_node_params_sum && callee_info->conds)
     {
       class ipa_edge_args *args = IPA_EDGE_REF (edge);
-      int count = ipa_get_cs_argument_count (args);
+      int count = args ? ipa_get_cs_argument_count (args) : 0;
       int i;
 
       if (count)
Index: ipa-prop.c
===================================================================
--- ipa-prop.c	(revision 277503)
+++ ipa-prop.c	(working copy)
@@ -2741,7 +2741,7 @@  update_jump_functions_after_inlining (st
 	  /* We must check range due to calls with variable number of arguments
 	     and we cannot combine jump functions with operations.  */
 	  if (dst->value.pass_through.operation == NOP_EXPR
-	      && (dst->value.pass_through.formal_id
+	      && (top && dst->value.pass_through.formal_id
 		  < ipa_get_cs_argument_count (top)))
 	    {
 	      int dst_fid = dst->value.pass_through.formal_id;
@@ -3430,7 +3430,7 @@  update_indirect_edges_after_inlining (st
 	continue;
 
       /* We must check range due to calls with variable number of arguments:  */
-      if (ici->param_index >= ipa_get_cs_argument_count (top))
+      if (!top || ici->param_index >= ipa_get_cs_argument_count (top))
 	{
 	  ici->param_index = -1;
 	  continue;