aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/cgraph.h1
-rw-r--r--gcc/ipa-cp.c2
-rw-r--r--gcc/predict.c23
4 files changed, 25 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 14ed707..efad7e5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+2011-04-19 Jan Hubicka <jh@suse.cz>
+
+ * cgraph.h (cgraph_optimize_for_size_p): Declare.
+ * ipa-cp.c (ipcp_insert_stage): Use cgraph_optimize_for_size_p.
+ * predict.c (cgraph_optimize_for_size_p): Break out from ...
+ (optimize_function_for_size_p) ... here.
+
2011-04-19 Richard Guenther <rguenther@suse.de>
PR lto/48207
diff --git a/gcc/cgraph.h b/gcc/cgraph.h
index e3a3b58..a9c5879 100644
--- a/gcc/cgraph.h
+++ b/gcc/cgraph.h
@@ -656,6 +656,7 @@ bool cgraph_comdat_can_be_unshared_p (struct cgraph_node *);
/* In predict.c */
bool cgraph_maybe_hot_edge_p (struct cgraph_edge *e);
+bool cgraph_optimize_for_size_p (struct cgraph_node *);
/* In varpool.c */
extern GTY(()) struct varpool_node *varpool_nodes_queue;
diff --git a/gcc/ipa-cp.c b/gcc/ipa-cp.c
index d8de9b7..0c05711 100644
--- a/gcc/ipa-cp.c
+++ b/gcc/ipa-cp.c
@@ -1410,7 +1410,7 @@ ipcp_insert_stage (void)
if (new_size + growth > max_new_size)
break;
if (growth
- && optimize_function_for_size_p (DECL_STRUCT_FUNCTION (node->decl)))
+ && cgraph_optimize_for_size_p (node))
{
if (dump_file)
fprintf (dump_file, "Not versioning, cold code would grow");
diff --git a/gcc/predict.c b/gcc/predict.c
index f210428..db9c5c5 100644
--- a/gcc/predict.c
+++ b/gcc/predict.c
@@ -196,7 +196,9 @@ maybe_hot_edge_p (edge e)
return maybe_hot_frequency_p (EDGE_FREQUENCY (e));
}
+
/* Return true in case BB is probably never executed. */
+
bool
probably_never_executed_bb_p (const_basic_block bb)
{
@@ -209,24 +211,31 @@ probably_never_executed_bb_p (const_basic_block bb)
return false;
}
-/* Return true when current function should always be optimized for size. */
+/* Return true if NODE should be optimized for size. */
bool
-optimize_function_for_size_p (struct function *fun)
+cgraph_optimize_for_size_p (struct cgraph_node *node)
{
- struct cgraph_node *node;
-
if (optimize_size)
return true;
- if (!fun || !fun->decl)
- return false;
- node = cgraph_get_node (fun->decl);
if (node && (node->frequency == NODE_FREQUENCY_UNLIKELY_EXECUTED))
return true;
else
return false;
}
+/* Return true when current function should always be optimized for size. */
+
+bool
+optimize_function_for_size_p (struct function *fun)
+{
+ if (optimize_size)
+ return true;
+ if (!fun || !fun->decl)
+ return false;
+ return cgraph_optimize_for_size_p (cgraph_get_node (fun->decl));
+}
+
/* Return true when current function should always be optimized for speed. */
bool