From: hubicka Date: Tue, 11 May 2010 08:19:28 +0000 (+0000) Subject: * cgraph.c (cgraph_mark_reachable_node): Accept references to optimized X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=44a38e0c5bcab1e8ac89c67a7ac600fdccd46ff3;p=thirdparty%2Fgcc.git * cgraph.c (cgraph_mark_reachable_node): Accept references to optimized out extern inlines. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@159260 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3abdc3f5b3b2..0e02b6c127cd 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,8 +1,8 @@ 2010-05-11 Jan Hubicka * cgraphbuild.c (cgraph_rebuild_references): New. - (cgraph_mark_reachable_node): Accept references to optimized out - extern inlines. + * cgraph.c (cgraph_mark_reachable_node): Accept references to optimized + out extern inlines. * cgraph.h (cgraph_rebuild_references): Declare. * tree-inline.c (tree_function_versioning): Use it. * ipa-struct-reorg.c (do_reorg_for_func): Likewise. diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 5f609aaf4341..a6aed42517a2 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -1643,9 +1643,16 @@ cgraph_mark_reachable_node (struct cgraph_node *node) { if (!node->reachable && node->local.finalized) { - notice_global_symbol (node->decl); + if (cgraph_global_info_ready) + { + /* Verify that function does not appear to be needed out of blue + during the optimization process. This can happen for extern + inlines when bodies was removed after inlining. */ + gcc_assert ((node->analyzed || DECL_EXTERNAL (node->decl))); + } + else + notice_global_symbol (node->decl); node->reachable = 1; - gcc_assert (!cgraph_global_info_ready); node->next_needed = cgraph_nodes_queue; cgraph_nodes_queue = node;