From 4d539f6875696be972076e00ff238acae97b4dcb Mon Sep 17 00:00:00 2001 From: Jan Hubicka Date: Sat, 18 Sep 2004 23:54:53 +0200 Subject: [PATCH] * tree-cfg.c (thread_jumps): Fix updating of the profile. From-SVN: r87709 --- gcc/ChangeLog | 2 ++ gcc/tree-cfg.c | 26 ++++++++++++++++---------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 64a20e65d9a..36183a7d5a5 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,7 @@ 2004-09-18 Jan Hubicka + * tree-cfg.c (thread_jumps): Fix updating of the profile. + * tree-optimize.c (tree_rest_of_compilation): Kill forgotten verify_cgraph call. diff --git a/gcc/tree-cfg.c b/gcc/tree-cfg.c index 69c8b2587f7..37b57102f63 100644 --- a/gcc/tree-cfg.c +++ b/gcc/tree-cfg.c @@ -3832,7 +3832,7 @@ static bool thread_jumps (void) { edge e, next, last, old; - basic_block bb, dest, tmp, old_dest, dom; + basic_block bb, dest, tmp, old_dest, curr, dom; tree phi; int arg; bool retval = false; @@ -3891,15 +3891,6 @@ thread_jumps (void) break; bb_ann (dest)->forwardable = 0; - dest->frequency -= freq; - if (dest->frequency < 0) - dest->frequency = 0; - dest->count -= count; - if (dest->count < 0) - dest->count = 0; - dest->succ->count -= count; - if (dest->succ->count < 0) - dest->succ->count = 0; } /* Reset the forwardable marks to 1. */ @@ -3936,6 +3927,21 @@ thread_jumps (void) old_dest = e->dest; e = redirect_edge_and_branch (e, dest); + /* Update the profile. */ + if (profile_status != PROFILE_ABSENT) + for (curr = old_dest; curr != dest; curr = curr->succ->dest) + { + curr->frequency -= freq; + if (curr->frequency < 0) + curr->frequency = 0; + curr->count -= count; + if (curr->count < 0) + curr->count = 0; + curr->succ->count -= count; + if (curr->succ->count < 0) + curr->succ->count = 0; + } + if (!old) { /* Update PHI nodes. We know that the new argument should -- 2.30.2