tree-inline.c (tree_inlinable_function_p): Do not test DECL_REPLACEABLE_P.
* tree-inline.c (tree_inlinable_function_p): Do not test DECL_REPLACEABLE_P. * ipa-inline.c (cgraph_default_inline_p, update_caller_keys, update_callee_keys, cgraph_decide_inlining): Test function availability. * cif-code.def (OVERWRITABLE): New code. From-SVN: r163972
This commit is contained in:
parent
a0766cdbb9
commit
f27e50db1a
|
@ -1,3 +1,10 @@
|
||||||
|
2010-09-07 Jan Hubicka <jh@suse.cz>
|
||||||
|
|
||||||
|
* tree-inline.c (tree_inlinable_function_p): Do not test DECL_REPLACEABLE_P.
|
||||||
|
* ipa-inline.c (cgraph_default_inline_p, update_caller_keys, update_callee_keys,
|
||||||
|
cgraph_decide_inlining): Test function availability.
|
||||||
|
* cif-code.def (OVERWRITABLE): New code.
|
||||||
|
|
||||||
2010-09-07 H.J. Lu <hjl.tools@gmail.com>
|
2010-09-07 H.J. Lu <hjl.tools@gmail.com>
|
||||||
Jack Howarth <howarth@bromo.med.uc.edu>
|
Jack Howarth <howarth@bromo.med.uc.edu>
|
||||||
|
|
||||||
|
|
|
@ -88,3 +88,5 @@ DEFCIFCODE(ORIGINALLY_INDIRECT_CALL,
|
||||||
/* Ths edge represents an indirect edge with a yet-undetermined callee . */
|
/* Ths edge represents an indirect edge with a yet-undetermined callee . */
|
||||||
DEFCIFCODE(INDIRECT_UNKNOWN_CALL,
|
DEFCIFCODE(INDIRECT_UNKNOWN_CALL,
|
||||||
N_("indirect function call with a yet undetermined callee"))
|
N_("indirect function call with a yet undetermined callee"))
|
||||||
|
|
||||||
|
DEFCIFCODE(OVERWRITABLE, N_("function body can be overwriten at linktime"))
|
||||||
|
|
|
@ -480,13 +480,19 @@ cgraph_default_inline_p (struct cgraph_node *n, cgraph_inline_failed_t *reason)
|
||||||
*reason = CIF_FUNCTION_NOT_INLINE_CANDIDATE;
|
*reason = CIF_FUNCTION_NOT_INLINE_CANDIDATE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!n->analyzed)
|
if (!n->analyzed)
|
||||||
{
|
{
|
||||||
if (reason)
|
if (reason)
|
||||||
*reason = CIF_BODY_NOT_AVAILABLE;
|
*reason = CIF_BODY_NOT_AVAILABLE;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
if (cgraph_function_body_availability (n) <= AVAIL_OVERWRITABLE)
|
||||||
|
{
|
||||||
|
if (reason)
|
||||||
|
*reason = CIF_OVERWRITABLE;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (DECL_DECLARED_INLINE_P (decl))
|
if (DECL_DECLARED_INLINE_P (decl))
|
||||||
{
|
{
|
||||||
|
@ -697,6 +703,7 @@ update_caller_keys (fibheap_t heap, struct cgraph_node *node,
|
||||||
cgraph_inline_failed_t failed_reason;
|
cgraph_inline_failed_t failed_reason;
|
||||||
|
|
||||||
if (!node->local.inlinable
|
if (!node->local.inlinable
|
||||||
|
|| cgraph_function_body_availability (node) <= AVAIL_OVERWRITABLE
|
||||||
|| node->global.inlined_to)
|
|| node->global.inlined_to)
|
||||||
return;
|
return;
|
||||||
if (!bitmap_set_bit (updated_nodes, node->uid))
|
if (!bitmap_set_bit (updated_nodes, node->uid))
|
||||||
|
@ -749,6 +756,7 @@ update_callee_keys (fibheap_t heap, struct cgraph_node *node,
|
||||||
{
|
{
|
||||||
if (e->inline_failed
|
if (e->inline_failed
|
||||||
&& e->callee->local.inlinable
|
&& e->callee->local.inlinable
|
||||||
|
&& cgraph_function_body_availability (e->callee) >= AVAIL_AVAILABLE
|
||||||
&& !bitmap_bit_p (updated_nodes, e->callee->uid))
|
&& !bitmap_bit_p (updated_nodes, e->callee->uid))
|
||||||
{
|
{
|
||||||
node->global.estimated_growth = INT_MIN;
|
node->global.estimated_growth = INT_MIN;
|
||||||
|
@ -1499,6 +1507,7 @@ cgraph_decide_inlining (void)
|
||||||
&& !node->callers->next_caller
|
&& !node->callers->next_caller
|
||||||
&& cgraph_will_be_removed_from_program_if_no_direct_calls (node)
|
&& cgraph_will_be_removed_from_program_if_no_direct_calls (node)
|
||||||
&& node->local.inlinable
|
&& node->local.inlinable
|
||||||
|
&& cgraph_function_body_availability (node) >= AVAIL_AVAILABLE
|
||||||
&& node->callers->inline_failed
|
&& node->callers->inline_failed
|
||||||
&& node->callers->caller != node
|
&& node->callers->caller != node
|
||||||
&& node->callers->caller->global.inlined_to != node
|
&& node->callers->caller->global.inlined_to != node
|
||||||
|
|
|
@ -3197,12 +3197,6 @@ tree_inlinable_function_p (tree fn)
|
||||||
inlinable = false;
|
inlinable = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Don't auto-inline anything that might not be bound within
|
|
||||||
this unit of translation. */
|
|
||||||
else if (!DECL_DECLARED_INLINE_P (fn)
|
|
||||||
&& DECL_REPLACEABLE_P (fn))
|
|
||||||
inlinable = false;
|
|
||||||
|
|
||||||
else if (!function_attribute_inlinable_p (fn))
|
else if (!function_attribute_inlinable_p (fn))
|
||||||
{
|
{
|
||||||
if (do_warning)
|
if (do_warning)
|
||||||
|
|
Loading…
Reference in New Issue