Commit 8ad274d2 by Jan Hubicka Committed by Jan Hubicka

ipa-cp.c (devirtualization_time_bonus): Walk through aliases.


	* ipa-cp.c (devirtualization_time_bonus): Walk through aliases.
	* ipa-inline-analysis.c (estimate_edge_devirt_benefit): Likewise.

From-SVN: r212395
parent 9af46873
2014-07-08 Jan Hubicka <hubicka@ucw.cz> 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. * rs6000/rs6000-protos.h (rs6000_xcoff_declare_object_name): Declare.
* rs6000/rs6000.c: Inline output of .set instruction. * rs6000/rs6000.c: Inline output of .set instruction.
(declare_alias_data): New struct. (declare_alias_data): New struct.
......
...@@ -1671,6 +1671,7 @@ devirtualization_time_bonus (struct cgraph_node *node, ...@@ -1671,6 +1671,7 @@ devirtualization_time_bonus (struct cgraph_node *node,
{ {
struct cgraph_node *callee; struct cgraph_node *callee;
struct inline_summary *isummary; struct inline_summary *isummary;
enum availability avail;
tree target; tree target;
target = ipa_get_indirect_edge_target (ie, known_csts, known_binfos, target = ipa_get_indirect_edge_target (ie, known_csts, known_binfos,
...@@ -1683,6 +1684,9 @@ devirtualization_time_bonus (struct cgraph_node *node, ...@@ -1683,6 +1684,9 @@ devirtualization_time_bonus (struct cgraph_node *node,
callee = cgraph_get_node (target); callee = cgraph_get_node (target);
if (!callee || !callee->definition) if (!callee || !callee->definition)
continue; continue;
callee = cgraph_function_node (callee, &avail);
if (avail < AVAIL_AVAILABLE)
continue;
isummary = inline_summary (callee); isummary = inline_summary (callee);
if (!isummary->inlinable) if (!isummary->inlinable)
continue; continue;
......
...@@ -2971,6 +2971,7 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie, ...@@ -2971,6 +2971,7 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
tree target; tree target;
struct cgraph_node *callee; struct cgraph_node *callee;
struct inline_summary *isummary; struct inline_summary *isummary;
enum availability avail;
if (!known_vals.exists () && !known_binfos.exists ()) if (!known_vals.exists () && !known_binfos.exists ())
return false; return false;
...@@ -2991,6 +2992,9 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie, ...@@ -2991,6 +2992,9 @@ estimate_edge_devirt_benefit (struct cgraph_edge *ie,
callee = cgraph_get_node (target); callee = cgraph_get_node (target);
if (!callee || !callee->definition) if (!callee || !callee->definition)
return false; return false;
callee = cgraph_function_node (callee, &avail);
if (avail < AVAIL_AVAILABLE)
return false;
isummary = inline_summary (callee); isummary = inline_summary (callee);
return isummary->inlinable; return isummary->inlinable;
} }
......
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