aboutsummaryrefslogtreecommitdiff
path: root/gcc/cgraphunit.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-01-14 23:54:50 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2004-01-14 22:54:50 +0000
commit95c755e90f94c5fbeed8cf58896d114989f9c771 (patch)
tree8b1b7c30c31af7eeaa57d8ea5898e75bae608347 /gcc/cgraphunit.c
parent092b50e2d7faa1cf0441da77a0d2d72a983276b1 (diff)
downloadgcc-95c755e90f94c5fbeed8cf58896d114989f9c771.zip
gcc-95c755e90f94c5fbeed8cf58896d114989f9c771.tar.gz
gcc-95c755e90f94c5fbeed8cf58896d114989f9c771.tar.bz2
cgraph.c (create_edge): Use local.redefined_extern_inline.
* cgraph.c (create_edge): Use local.redefined_extern_inline. * cgraph.h (cgraph_local_info): Sort fields by size; add redefined_extern_inline (cgraph_global_info): Sort fields by size. (cgraph_node): Likewise. * cgraphunit.c (cgraph_finalize_function): Se local.redefined_extern_inline on redefinition. (cgraph_analyze_function): Use it; fix formating. From-SVN: r75890
Diffstat (limited to 'gcc/cgraphunit.c')
-rw-r--r--gcc/cgraphunit.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/cgraphunit.c b/gcc/cgraphunit.c
index e26a2c1..27e4d8d 100644
--- a/gcc/cgraphunit.c
+++ b/gcc/cgraphunit.c
@@ -184,6 +184,7 @@ cgraph_finalize_function (tree decl, bool nested)
memset (&node->global, 0, sizeof (node->global));
memset (&node->rtl, 0, sizeof (node->rtl));
node->analyzed = false;
+ node->local.redefined_extern_inline = true;
while (node->callees)
cgraph_remove_edge (node, node->callees->callee);
@@ -330,8 +331,15 @@ cgraph_analyze_function (struct cgraph_node *node)
= (*lang_hooks.tree_inlining.disregard_inline_limits) (decl);
for (e = node->callers; e; e = e->next_caller)
if (e->inline_failed)
- e->inline_failed = (!node->local.inlinable ? N_("function not inlinable")
- : N_("function not considered for inlining"));
+ {
+ if (node->local.redefined_extern_inline)
+ e->inline_failed = N_("redefined extern inline functions are not "
+ "considered for inlining");
+ else if (!node->local.inlinable)
+ e->inline_failed = N_("function not inlinable");
+ else
+ e->inline_failed = N_("function not considered for inlining");
+ }
if (flag_really_no_inline && !node->local.disregard_inline_limits)
node->local.inlinable = 0;
/* Inlining characteristics are maintained by the cgraph_mark_inline. */