diff options
author | Teresa Johnson <tejohnson@google.com> | 2014-06-03 14:12:51 +0000 |
---|---|---|
committer | Teresa Johnson <tejohnson@gcc.gnu.org> | 2014-06-03 14:12:51 +0000 |
commit | 878d361864946a4295aa94bbc2f84ed4a6e37814 (patch) | |
tree | 973ce379d62e88084c3ec2bf5419dba8327cd11d /gcc | |
parent | 010bc40a6cfa58463775350be648271155683361 (diff) | |
download | gcc-878d361864946a4295aa94bbc2f84ed4a6e37814.zip gcc-878d361864946a4295aa94bbc2f84ed4a6e37814.tar.gz gcc-878d361864946a4295aa94bbc2f84ed4a6e37814.tar.bz2 |
tree-sra.c (modify_function): Record caller nodes after rebuild.
2014-06-03 Teresa Johnson <tejohnson@google.com>
* tree-sra.c (modify_function): Record caller nodes after rebuild.
From-SVN: r211180
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/tree-sra.c | 5 |
2 files changed, 8 insertions, 1 deletions
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 <tejohnson@google.com> + + * tree-sra.c (modify_function): Record caller nodes after rebuild. + 2014-06-02 Jason Merrill <jason@redhat.com> 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<cgraph_edge_p> 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<cgraph_edge_p> redirect_callers = collect_callers_of_node (node); new_node = cgraph_function_versioning (node, redirect_callers, NULL, NULL, false, NULL, NULL, "isra"); |