From: Jan Hubicka Date: Sat, 18 Sep 2004 21:54:53 +0000 (+0200) Subject: * tree-cfg.c (thread_jumps): Fix updating of the profile. X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=4d539f6875696be972076e00ff238acae97b4dcb;p=gcc.git * tree-cfg.c (thread_jumps): Fix updating of the profile. From-SVN: r87709 --- 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