Hi, This patch is to fix wrong refactoring for cgraph_node::function_symbol introduced by this patch: https://gcc.gnu.org/ml/gcc-cvs/2014-07/msg00805.html. Here is how function was refactored:
-cgraph_function_node (struct cgraph_node *node, enum availability *availability) +cgraph_node * +cgraph_node::function_symbol (enum availability *availability) { + cgraph_node *node = NULL; + do { - node = cgraph_function_or_thunk_node (node, availability); + node = ultimate_alias_target (availability); if (node->thunk.thunk_p) { node = node->callees->callee; if (availability) { enum availability a; - a = cgraph_function_body_availability (node); + a = node->get_availability (); if (a < *availability) *availability = a; } - node = cgraph_function_or_thunk_node (node, availability); + node = node->ultimate_alias_target (availability); } } while (node && node->thunk.thunk_p); return node; } first ultimate_alias_target call always uses 'this' instead of 'node'. This causes infinite loop. Patch was bootstrapped and regtested on linux-x86_64. OK for trunk? Thanks, Ilya -- 2014-08-13 Ilya Enkovich <ilya.enkov...@intel.com> * cgraph.c (cgraph_node::function_symbol): Fix wrong cgraph_function_node to cgraph_node::function_symbol refactoring. diff --git a/gcc/cgraph.c b/gcc/cgraph.c index 5a0b903..370a96a 100644 --- a/gcc/cgraph.c +++ b/gcc/cgraph.c @@ -3000,11 +3000,11 @@ cgraph_node::verify_cgraph_nodes (void) cgraph_node * cgraph_node::function_symbol (enum availability *availability) { - cgraph_node *node = NULL; + cgraph_node *node = this; do { - node = ultimate_alias_target (availability); + node = node->ultimate_alias_target (availability); if (node->thunk.thunk_p) { node = node->callees->callee;