aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-optimize.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2004-09-21 02:08:53 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2004-09-21 00:08:53 +0000
commitd21bede3c1bc7c8c75ba4c3f60e7d9f44c6cbd17 (patch)
tree3c3c2b033d0031cf3fbfdf0e81ce324b658cf76a /gcc/tree-optimize.c
parent37337e55bffa99e90c65939ab893dbfabf64fa06 (diff)
downloadgcc-d21bede3c1bc7c8c75ba4c3f60e7d9f44c6cbd17.zip
gcc-d21bede3c1bc7c8c75ba4c3f60e7d9f44c6cbd17.tar.gz
gcc-d21bede3c1bc7c8c75ba4c3f60e7d9f44c6cbd17.tar.bz2
re PR middle-end/17126 (ICE with -fno-unit-at-a-time and -O3)
PR middle-end/17126 * tree-optimize.c (update_inlined_to_pointers): Fix the recursion. (tree_rest_of_compilation): Cleanup. From-SVN: r87780
Diffstat (limited to 'gcc/tree-optimize.c')
-rw-r--r--gcc/tree-optimize.c12
1 files changed, 3 insertions, 9 deletions
diff --git a/gcc/tree-optimize.c b/gcc/tree-optimize.c
index 86b6014..971f062 100644
--- a/gcc/tree-optimize.c
+++ b/gcc/tree-optimize.c
@@ -553,7 +553,7 @@ update_inlined_to_pointers (struct cgraph_node *node,
if (e->callee->global.inlined_to)
{
e->callee->global.inlined_to = inlined_to;
- update_inlined_to_pointers (e->callee, node);
+ update_inlined_to_pointers (e->callee, inlined_to);
}
}
}
@@ -653,15 +653,9 @@ tree_rest_of_compilation (tree fndecl, bool nested_p)
cgraph_remove_edge (node->callees);
node->callees = saved_node->callees;
saved_node->callees = NULL;
+ update_inlined_to_pointers (node, node);
for (e = node->callees; e; e = e->next_callee)
- {
- if (e->callee->global.inlined_to)
- {
- e->callee->global.inlined_to = node;
- update_inlined_to_pointers (e->callee, node);
- }
- e->caller = node;
- }
+ e->caller = node;
cgraph_remove_node (saved_node);
}
}