From: hubicka Date: Sat, 11 Aug 2007 23:14:24 +0000 (+0000) Subject: * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined. X-Git-Tag: upstream/4.9.2~47009 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=2de290970dc4faf5b5a35262f313e8bb21b0a4d4;p=platform%2Fupstream%2Flinaro-gcc.git * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined. (cgraph_process_new_functions): Honor previous value of disregard_inline_limits. * ipa-inline.c (compute_inline_parameters): Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@127365 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a61667b..834db67 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2007-08-11 Jan Hubicka + + * cgraphunit.c (record_cdtor_fn): Declare all cdtors always inlined. + (cgraph_process_new_functions): Honor previous value of + disregard_inline_limits. + * ipa-inline.c (compute_inline_parameters): Likewise. + 2007-08-11 Ian Lance Taylor * alias.h (alias_set_type): Define new type. diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c index 2120b6b..f810c27 100644 --- a/gcc/cgraphunit.c +++ b/gcc/cgraphunit.c @@ -180,21 +180,26 @@ static GTY (()) tree static_dtors; static void record_cdtor_fn (tree fndecl) { - if (targetm.have_ctors_dtors) + struct cgraph_node *node; + if (targetm.have_ctors_dtors + || (!DECL_STATIC_CONSTRUCTOR (fndecl) + && !DECL_STATIC_DESTRUCTOR (fndecl))) return; if (DECL_STATIC_CONSTRUCTOR (fndecl)) { static_ctors = tree_cons (NULL_TREE, fndecl, static_ctors); DECL_STATIC_CONSTRUCTOR (fndecl) = 0; - cgraph_mark_reachable_node (cgraph_node (fndecl)); } if (DECL_STATIC_DESTRUCTOR (fndecl)) { static_dtors = tree_cons (NULL_TREE, fndecl, static_dtors); DECL_STATIC_DESTRUCTOR (fndecl) = 0; - cgraph_mark_reachable_node (cgraph_node (fndecl)); } + DECL_INLINE (fndecl) = 1; + node = cgraph_node (fndecl); + node->local.disregard_inline_limits = 1; + cgraph_mark_reachable_node (node); } /* Synthesize a function which calls all the global ctors or global @@ -376,7 +381,7 @@ cgraph_process_new_functions (void) node->local.self_insns = estimate_num_insns (fndecl, &eni_inlining_weights); node->local.disregard_inline_limits - = lang_hooks.tree_inlining.disregard_inline_limits (fndecl); + |= lang_hooks.tree_inlining.disregard_inline_limits (fndecl); /* Inlining characteristics are maintained by the cgraph_mark_inline. */ node->global.insns = node->local.self_insns; diff --git a/gcc/ipa-inline.c b/gcc/ipa-inline.c index b0e514f..21b894f 100644 --- a/gcc/ipa-inline.c +++ b/gcc/ipa-inline.c @@ -1527,7 +1527,7 @@ compute_inline_parameters (void) node->local.inlinable = tree_inlinable_function_p (current_function_decl); node->local.self_insns = estimate_num_insns (current_function_decl, &eni_inlining_weights); - if (node->local.inlinable) + if (node->local.inlinable && !node->local.disregard_inline_limits) node->local.disregard_inline_limits = lang_hooks.tree_inlining.disregard_inline_limits (current_function_decl); if (flag_really_no_inline && !node->local.disregard_inline_limits)