From 878d361864946a4295aa94bbc2f84ed4a6e37814 Mon Sep 17 00:00:00 2001 From: Teresa Johnson Date: Tue, 3 Jun 2014 14:12:51 +0000 Subject: [PATCH] tree-sra.c (modify_function): Record caller nodes after rebuild. 2014-06-03 Teresa Johnson * tree-sra.c (modify_function): Record caller nodes after rebuild. From-SVN: r211180 --- gcc/ChangeLog | 4 ++++ gcc/tree-sra.c | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 5bc582b..63986c2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2014-06-03 Teresa Johnson + + * tree-sra.c (modify_function): Record caller nodes after rebuild. + 2014-06-02 Jason Merrill PR c++/61020 diff --git a/gcc/tree-sra.c b/gcc/tree-sra.c index db91c8b..0afa197 100644 --- a/gcc/tree-sra.c +++ b/gcc/tree-sra.c @@ -4926,12 +4926,15 @@ modify_function (struct cgraph_node *node, ipa_parm_adjustment_vec adjustments) { struct cgraph_node *new_node; bool cfg_changed; - vec redirect_callers = collect_callers_of_node (node); rebuild_cgraph_edges (); free_dominance_info (CDI_DOMINATORS); pop_cfun (); + /* This must be done after rebuilding cgraph edges for node above. + Otherwise any recursive calls to node that are recorded in + redirect_callers will be corrupted. */ + vec redirect_callers = collect_callers_of_node (node); new_node = cgraph_function_versioning (node, redirect_callers, NULL, NULL, false, NULL, NULL, "isra"); -- 2.7.4