diff options
author | Jan Hubicka <jh@suse.cz> | 2005-06-25 13:59:55 +0200 |
---|---|---|
committer | Jan Hubicka <hubicka@gcc.gnu.org> | 2005-06-25 11:59:55 +0000 |
commit | afc970a415a9c8e06ebcec7c3fde19a7983b259c (patch) | |
tree | eabfa52c083b7034378660b03895b3fed8913c95 /gcc | |
parent | 5d9f607b1b3e84f2f360aa758bcedf181649e5bb (diff) | |
download | gcc-afc970a415a9c8e06ebcec7c3fde19a7983b259c.zip gcc-afc970a415a9c8e06ebcec7c3fde19a7983b259c.tar.gz gcc-afc970a415a9c8e06ebcec7c3fde19a7983b259c.tar.bz2 |
tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update profile.
* tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update profile.
* cfg.c (update_bb_profile_for_threading): Fix rescaling.
From-SVN: r101322
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/cfg.c | 2 | ||||
-rw-r--r-- | gcc/tree-ssa-phiopt.c | 4 |
3 files changed, 8 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 87e59aa..d022466 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,8 @@ 2005-06-25 Jan Hubicka <jh@suse.cz> + * tree-ssa-phiopt.c (replace_phi_edge_with_variable): Update profile. + * cfg.c (update_bb_profile_for_threading): Fix rescaling. + * passes.c (rest_of_handle_branch_prob): Do not rebuild profiling info when not neecesary (rest_of_compilation): Fix conditional on branch prob pass. @@ -901,7 +901,7 @@ update_bb_profile_for_threading (basic_block bb, int edge_frequency, int scale = 65536 * REG_BR_PROB_BASE / prob; FOR_EACH_EDGE (c, ei, bb->succs) - c->probability *= scale / 65536; + c->probability = (c->probability * scale) / 65536; } gcc_assert (bb == taken_edge->src); diff --git a/gcc/tree-ssa-phiopt.c b/gcc/tree-ssa-phiopt.c index f72cb1b..e7d048f 100644 --- a/gcc/tree-ssa-phiopt.c +++ b/gcc/tree-ssa-phiopt.c @@ -331,6 +331,8 @@ replace_phi_edge_with_variable (basic_block cond_block, { EDGE_SUCC (cond_block, 0)->flags |= EDGE_FALLTHRU; EDGE_SUCC (cond_block, 0)->flags &= ~(EDGE_TRUE_VALUE | EDGE_FALSE_VALUE); + EDGE_SUCC (cond_block, 0)->probability = REG_BR_PROB_BASE; + EDGE_SUCC (cond_block, 0)->count += EDGE_SUCC (cond_block, 1)->count; block_to_remove = EDGE_SUCC (cond_block, 1)->dest; } @@ -339,6 +341,8 @@ replace_phi_edge_with_variable (basic_block cond_block, EDGE_SUCC (cond_block, 1)->flags |= EDGE_FALLTHRU; EDGE_SUCC (cond_block, 1)->flags &= ~(EDGE_TRUE_VALUE | EDGE_FALSE_VALUE); + EDGE_SUCC (cond_block, 1)->probability = REG_BR_PROB_BASE; + EDGE_SUCC (cond_block, 1)->count += EDGE_SUCC (cond_block, 0)->count; block_to_remove = EDGE_SUCC (cond_block, 0)->dest; } |