aboutsummaryrefslogtreecommitdiff
path: root/gcc/passes.c
diff options
context:
space:
mode:
authorJan Hubicka <jh@suse.cz>2009-06-08 21:21:33 +0200
committerJan Hubicka <hubicka@gcc.gnu.org>2009-06-08 19:21:33 +0000
commit21ecdec5dbc85bab4d266ad40bcb60e0d5d28b11 (patch)
tree3e7b5c6fc01692dae73e79052c41bdbbef6e460b /gcc/passes.c
parent568e8e1e73145dedc973ee9543775b4085e53d26 (diff)
downloadgcc-21ecdec5dbc85bab4d266ad40bcb60e0d5d28b11.zip
gcc-21ecdec5dbc85bab4d266ad40bcb60e0d5d28b11.tar.gz
gcc-21ecdec5dbc85bab4d266ad40bcb60e0d5d28b11.tar.bz2
re PR middle-end/39834 (verify_cgraph_node failed with -O3 -Winline)
PR debug/39834 * gcc.dg/torture/pr39834.c PR middle-end/39834 * cgraphunit.c (save_inline_function_body): Do not copy transform hooks for saved inline bodies. * ipa-passes.c (do_per_function): Do not add the hoks multiple times for given function. From-SVN: r148292
Diffstat (limited to 'gcc/passes.c')
-rw-r--r--gcc/passes.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/gcc/passes.c b/gcc/passes.c
index 2408668..f146670 100644
--- a/gcc/passes.c
+++ b/gcc/passes.c
@@ -844,7 +844,8 @@ do_per_function (void (*callback) (void *data), void *data)
{
struct cgraph_node *node;
for (node = cgraph_nodes; node; node = node->next)
- if (node->analyzed && gimple_has_body_p (node->decl))
+ if (node->analyzed && gimple_has_body_p (node->decl)
+ && (!node->clone_of || node->decl != node->clone_of->decl))
{
push_cfun (DECL_STRUCT_FUNCTION (node->decl));
current_function_decl = node->decl;