Hi,
evaluate_properties_for_edge may call IPA_NODE_REF on alias which makes no
sense. Fixed thus.

Bootstrapped/regtested x86_64-linux. Comitted.

        * ipa-fnsummary.c (evaluate_properties_for_edge): Call IPA_NODE_REF
        on function symbol.
        * gcc.dg/tree-ssa/pr46076.c: Make tested code hot.
Index: ipa-fnsummary.c
===================================================================
--- ipa-fnsummary.c     (revision 278007)
+++ ipa-fnsummary.c     (working copy)
@@ -474,7 +474,7 @@ evaluate_properties_for_edge (struct cgr
        caller_parms_info = IPA_NODE_REF (e->caller->inlined_to);
       else
        caller_parms_info = IPA_NODE_REF (e->caller);
-      callee_pi = IPA_NODE_REF (e->callee);
+      callee_pi = IPA_NODE_REF (callee);
 
       if (count && (info->conds || known_vals_ptr))
        known_vals.safe_grow_cleared (count);
Index: testsuite/gcc.dg/tree-ssa/pr46076.c
===================================================================
--- testsuite/gcc.dg/tree-ssa/pr46076.c (revision 278007)
+++ testsuite/gcc.dg/tree-ssa/pr46076.c (working copy)
@@ -19,9 +19,12 @@ main()
 {
   /* Make sure we perform indirect inlining of one and two and optimize
      the result to a constant.  */
-  if (print(one) != 3)
-    link_error ();
-  if (print(two) != 5)
-    link_error ();
+  for (int i = 0; i < 100; i++)
+    {
+      if (print(one) != 3)
+       link_error ();
+      if (print(two) != 5)
+       link_error ();
+    }
   return 0;
 }

Reply via email to