aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorTeresa Johnson <tejohnson@google.com>2014-06-03 14:12:51 +0000
committerTeresa Johnson <tejohnson@gcc.gnu.org>2014-06-03 14:12:51 +0000
commit878d361864946a4295aa94bbc2f84ed4a6e37814 (patch)
tree973ce379d62e88084c3ec2bf5419dba8327cd11d /gcc
parent010bc40a6cfa58463775350be648271155683361 (diff)
downloadgcc-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/ChangeLog4
-rw-r--r--gcc/tree-sra.c5
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");