]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
ipa-cp.c (devirtualization_time_bonus): Walk through aliases.
authorJan Hubicka <hubicka@ucw.cz>
Wed, 9 Jul 2014 16:03:14 +0000 (18:03 +0200)
committerJan Hubicka <hubicka@gcc.gnu.org>
Wed, 9 Jul 2014 16:03:14 +0000 (16:03 +0000)
* ipa-cp.c (devirtualization_time_bonus): Walk through aliases.
* ipa-inline-analysis.c (estimate_edge_devirt_benefit): Likewise.

From-SVN: r212395

gcc/ChangeLog
gcc/ipa-cp.c
gcc/ipa-inline-analysis.c

index ad074745797e48ab3bd74719dbbfe58abf02931f..0b94921a18449c69cb6afe4f0fcd095897a9cf04 100644 (file)
@@ -1,3 +1,8 @@
+2014-07-08  Jan Hubicka  <hubicka@ucw.cz>
+
+       * ipa-cp.c (devirtualization_time_bonus): Walk through aliases.
+       * ipa-inline-analysis.c (estimate_edge_devirt_benefit): Likewise.
+
 2014-07-08  Jan Hubicka  <hubicka@ucw.cz>
 
        * rs6000/rs6000-protos.h (rs6000_xcoff_declare_object_name): Declare.
index d16d8c2a71f0aa80478ae5ad5344bc053c237662..b6d66d90eafa37293f2f466cba61925f12ddca54 100644 (file)
@@ -1671,6 +1671,7 @@ devirtualization_time_bonus (struct cgraph_node *node,
     {
       struct cgraph_node *callee;
       struct inline_summary *isummary;
+      enum availability avail;
       tree target;
 
       target = ipa_get_indirect_edge_target (ie, known_csts, known_binfos,
@@ -1683,6 +1684,9 @@ devirtualization_time_bonus (struct cgraph_node *node,
       callee = cgraph_get_node (target);
       if (!callee || !callee->definition)
        continue;
+      callee = cgraph_function_node (callee, &avail);
+      if (avail < AVAIL_AVAILABLE)
+       continue;
       isummary = inline_summary (callee);
       if (!isummary->inlinable)
        continue;
index 9b50258986e10dd60b7064c380a33594aa28c79a..9e66a4c5a5c91399405c2b20dbd5525616050348 100644 (file)
@@ -2971,6 +2971,7 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
   tree target;
   struct cgraph_node *callee;
   struct inline_summary *isummary;
+  enum availability avail;
 
   if (!known_vals.exists () && !known_binfos.exists ())
     return false;
@@ -2991,6 +2992,9 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
   callee = cgraph_get_node (target);
   if (!callee || !callee->definition)
     return false;
+  callee = cgraph_function_node (callee, &avail);
+  if (avail < AVAIL_AVAILABLE)
+    return false;
   isummary = inline_summary (callee);
   return isummary->inlinable;
 }