OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Replace type != type comparisons with types_compatible_p.
[pf3gnuchains/gcc-fork.git]
/
gcc
/
ipa-inline.c
diff --git
a/gcc/ipa-inline.c
b/gcc/ipa-inline.c
index
3bab205
..
e1de7ce
100644
(file)
--- a/
gcc/ipa-inline.c
+++ b/
gcc/ipa-inline.c
@@
-268,7
+268,8
@@
cgraph_clone_inlined_nodes (struct cgraph_edge *e, bool duplicate,
else
{
struct cgraph_node *n;
else
{
struct cgraph_node *n;
- n = cgraph_clone_node (e->callee, e->count, e->frequency, e->loop_nest,
+ n = cgraph_clone_node (e->callee, e->callee->decl,
+ e->count, e->frequency, e->loop_nest,
update_original, NULL);
cgraph_redirect_edge_callee (e, n);
}
update_original, NULL);
cgraph_redirect_edge_callee (e, n);
}
@@
-310,10
+311,7
@@
cgraph_mark_inline_edge (struct cgraph_edge *e, bool update_original,
gcc_assert (e->inline_failed);
e->inline_failed = CIF_OK;
gcc_assert (e->inline_failed);
e->inline_failed = CIF_OK;
-
- if (!e->callee->global.inlined)
- DECL_POSSIBLY_INLINED (e->callee->decl) = true;
- e->callee->global.inlined = true;
+ DECL_POSSIBLY_INLINED (e->callee->decl) = true;
cgraph_clone_inlined_nodes (e, true, update_original);
cgraph_clone_inlined_nodes (e, true, update_original);
@@
-544,6
+542,9
@@
cgraph_edge_badness (struct cgraph_edge *edge, bool dump)
(cgraph_estimate_size_after_inlining (1, edge->caller, edge->callee)
- edge->caller->global.size);
(cgraph_estimate_size_after_inlining (1, edge->caller, edge->callee)
- edge->caller->global.size);
+ if (edge->callee->local.disregard_inline_limits)
+ return INT_MIN;
+
if (dump)
{
fprintf (dump_file, " Badness calculcation for %s -> %s\n",
if (dump)
{
fprintf (dump_file, " Badness calculcation for %s -> %s\n",
@@
-667,7
+668,7
@@
update_caller_keys (fibheap_t heap, struct cgraph_node *node,
struct cgraph_edge *edge;
cgraph_inline_failed_t failed_reason;
struct cgraph_edge *edge;
cgraph_inline_failed_t failed_reason;
- if (!node->local.inlinable
|| node->local.disregard_inline_limits
+ if (!node->local.inlinable
|| node->global.inlined_to)
return;
if (bitmap_bit_p (updated_nodes, node->uid))
|| node->global.inlined_to)
return;
if (bitmap_bit_p (updated_nodes, node->uid))
@@
-808,7
+809,8
@@
cgraph_decide_recursive_inlining (struct cgraph_node *node,
cgraph_node_name (node));
/* We need original clone to copy around. */
cgraph_node_name (node));
/* We need original clone to copy around. */
- master_clone = cgraph_clone_node (node, node->count, CGRAPH_FREQ_BASE, 1,
+ master_clone = cgraph_clone_node (node, node->decl,
+ node->count, CGRAPH_FREQ_BASE, 1,
false, NULL);
master_clone->needed = true;
for (e = master_clone->callees; e; e = e->next_callee)
false, NULL);
master_clone->needed = true;
for (e = master_clone->callees; e; e = e->next_callee)
@@
-1071,12
+1073,14
@@
cgraph_decide_inlining_of_small_functions (void)
}
}
}
}
- if (!cgraph_maybe_hot_edge_p (edge))
+ if (edge->callee->local.disregard_inline_limits)
+ ;
+ else if (!cgraph_maybe_hot_edge_p (edge))
not_good = CIF_UNLIKELY_CALL;
not_good = CIF_UNLIKELY_CALL;
- if (!flag_inline_functions
+
else
if (!flag_inline_functions
&& !DECL_DECLARED_INLINE_P (edge->callee->decl))
not_good = CIF_NOT_DECLARED_INLINED;
&& !DECL_DECLARED_INLINE_P (edge->callee->decl))
not_good = CIF_NOT_DECLARED_INLINED;
- if (optimize_function_for_size_p (DECL_STRUCT_FUNCTION(edge->caller->decl)))
+
else
if (optimize_function_for_size_p (DECL_STRUCT_FUNCTION(edge->caller->decl)))
not_good = CIF_OPTIMIZING_FOR_SIZE;
if (not_good && growth > 0 && cgraph_estimate_growth (edge->callee) > 0)
{
not_good = CIF_OPTIMIZING_FOR_SIZE;
if (not_good && growth > 0 && cgraph_estimate_growth (edge->callee) > 0)
{
@@
-1836,14
+1840,6
@@
estimate_function_body_sizes (struct cgraph_node *node)
int freq;
tree funtype = TREE_TYPE (node->decl);
int freq;
tree funtype = TREE_TYPE (node->decl);
- if (node->local.disregard_inline_limits)
- {
- inline_summary (node)->self_time = 0;
- inline_summary (node)->self_size = 0;
- inline_summary (node)->time_inlining_benefit = 0;
- inline_summary (node)->size_inlining_benefit = 0;
- }
-
if (dump_file)
fprintf (dump_file, "Analyzing function body size: %s\n",
cgraph_node_name (node));
if (dump_file)
fprintf (dump_file, "Analyzing function body size: %s\n",
cgraph_node_name (node));