http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48752

--- Comment #13 from Jan Hubicka <hubicka at ucw dot cz> 2011-04-27 07:46:00 
UTC ---
Hi,
this patch is not really tested, I need to construct a testcase that reproduces
fo rme, but it
adds the mising add_new_function hook and should solve the problem.

Honza

Index: ipa-prop.c
===================================================================
*** ipa-prop.c    (revision 172989)
--- ipa-prop.c    (working copy)
*************** static struct cgraph_edge_hook_list *edg
*** 63,68 ****
--- 63,69 ----
  static struct cgraph_node_hook_list *node_removal_hook_holder;
  static struct cgraph_2edge_hook_list *edge_duplication_hook_holder;
  static struct cgraph_2node_hook_list *node_duplication_hook_holder;
+ static struct cgraph_node_hook_list *function_insertion_hook_holder;

  /* Add cgraph NODE described by INFO to the worklist WL regardless of whether
     it is in one or not.  It should almost never be used directly, as opposed
to
*************** ipa_node_duplication_hook (struct cgraph
*** 2058,2063 ****
--- 2059,2073 ----
    new_info->node_enqueued = old_info->node_enqueued;
  }

+ 
+ /* Analyze newly added function into callgraph.  */
+ 
+ static void
+ ipa_add_new_function (struct cgraph_node *node, void *data ATTRIBUTE_UNUSED)
+ {
+   ipa_analyze_node (node);
+ }
+ 
  /* Register our cgraph hooks if they are not already there.  */

  void
*************** ipa_register_cgraph_hooks (void)
*** 2075,2080 ****
--- 2085,2092 ----
    if (!node_duplication_hook_holder)
      node_duplication_hook_holder =
        cgraph_add_node_duplication_hook (&ipa_node_duplication_hook, NULL);
+   function_insertion_hook_holder =
+       cgraph_add_function_insertion_hook (&ipa_add_new_function, NULL);
  }

  /* Unregister our cgraph hooks if they are not already there.  */
*************** ipa_unregister_cgraph_hooks (void)
*** 2090,2095 ****
--- 2102,2109 ----
    edge_duplication_hook_holder = NULL;
    cgraph_remove_node_duplication_hook (node_duplication_hook_holder);
    node_duplication_hook_holder = NULL;
+   cgraph_remove_function_insertion_hook (function_insertion_hook_holder);
+   function_insertion_hook_holder = NULL;
  }

  /* Allocate all necessary data structures necessary for indirect inlining. 
*/

Reply via email to