Adds handling in this block of code (new in gcc/4_9 and therefore google/4_9) for LIPO fake edges for indirect calls, which don't have a call_stmt set and cannot be redirected.
Passes regression tests, ok for google/4_9 branch? Teresa 2014-10-03 Teresa Johnson <tejohn...@google.com> Google ref b/17378050 * ipa.c (function_and_variable_visibility): Skip LIPO fake indirect call edges. Index: ipa.c =================================================================== --- ipa.c (revision 215830) +++ ipa.c (working copy) @@ -1146,12 +1146,15 @@ function_and_variable_visibility (bool whole_progr if (node->callers && can_replace_by_local_alias (node)) { struct cgraph_node *alias = cgraph (symtab_nonoverwritable_alias (node)); + struct cgraph_edge *e, *next_caller; if (alias && alias != node) { - while (node->callers) + for (e = node->callers; e; e = next_caller) { - struct cgraph_edge *e = node->callers; + next_caller = e->next_caller; + if (L_IPO_COMP_MODE && cgraph_is_fake_indirect_call_edge (e)) + continue; cgraph_redirect_edge_callee (e, alias); if (gimple_has_body_p (e->caller->decl)) -- Teresa Johnson | Software Engineer | tejohn...@google.com | 408-460-2413