re PR ipa/92528 (ICE in ipa_get_parm_lattices since r278219)
authorFeng Xue <fxue@os.amperecomputing.com>
Fri, 15 Nov 2019 15:03:24 +0000 (15:03 +0000)
committerFeng Xue <fxue@gcc.gnu.org>
Fri, 15 Nov 2019 15:03:24 +0000 (15:03 +0000)
2019-11-15  Feng Xue  <fxue@os.amperecomputing.com>

        PR ipa/92528
        * ipa-prop.c (update_jump_functions_after_inlining): Invalidate
        aggregate jump function when inlined-to caller has no edge summary.

From-SVN: r278300

gcc/ChangeLog
gcc/ipa-prop.c

index 7c963cde7bac5658824ff55363d5d8be6e9484a2..fe8daf4088895b2d4dcaaabb59176083d0c04eec 100644 (file)
@@ -1,3 +1,9 @@
+2019-11-15  Feng Xue  <fxue@os.amperecomputing.com>
+
+       PR ipa/92528
+       * ipa-prop.c (update_jump_functions_after_inlining): Invalidate
+       aggregate jump function when inlined-to caller has no edge summary.
+
 2019-11-15  Kwok Cheung Yeung  <kcy@codesourcery.com>
 
        * config/gcn/gcn.c (gcn_init_cumulative_args): Call reinit_regs.
index f56aa3240d296bf7cdffc1b9ad785161b3a39eef..9a51b2996786abace87dac69df60afb3a6a02a8e 100644 (file)
@@ -2923,11 +2923,6 @@ update_jump_functions_after_inlining (struct cgraph_edge *cs,
   for (i = 0; i < count; i++)
     {
       struct ipa_jump_func *dst = ipa_get_ith_jump_func (args, i);
-      if (!top)
-       {
-         ipa_set_jf_unknown (dst);
-         continue;
-       }
       class ipa_polymorphic_call_context *dst_ctx
        = ipa_get_ith_polymorhic_call_context (args, i);
 
@@ -2946,7 +2941,7 @@ update_jump_functions_after_inlining (struct cgraph_edge *cs,
                continue;
 
              dst_fid = item->value.pass_through.formal_id;
-             if (dst_fid >= ipa_get_cs_argument_count (top))
+             if (!top || dst_fid >= ipa_get_cs_argument_count (top))
                {
                  item->jftype = IPA_JF_UNKNOWN;
                  continue;
@@ -2997,6 +2992,12 @@ update_jump_functions_after_inlining (struct cgraph_edge *cs,
            }
        }
 
+      if (!top)
+       {
+         ipa_set_jf_unknown (dst);
+         continue;
+       }
+
       if (dst->type == IPA_JF_ANCESTOR)
        {
          struct ipa_jump_func *src;