diff options
| author | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-12 14:23:20 +0000 |
|---|---|---|
| committer | hubicka <hubicka@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-02-12 14:23:20 +0000 |
| commit | 7a188e52a3c40ed359e5af6652993dcc72f3da16 (patch) | |
| tree | bda6e75a96b50d6c889035fafb034251ff73c244 /gcc | |
| parent | 9eeb1a456f46ea3da90d2e9b702fa41a45cf3bf8 (diff) | |
| download | ppe42-gcc-7a188e52a3c40ed359e5af6652993dcc72f3da16.tar.gz ppe42-gcc-7a188e52a3c40ed359e5af6652993dcc72f3da16.zip | |
* predict.c (estimate_probability): Fix roundoff error.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@62765 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
| -rw-r--r-- | gcc/ChangeLog | 4 | ||||
| -rw-r--r-- | gcc/predict.c | 11 |
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index b81e4c8419c..45975656ad3 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Wed Feb 12 15:19:42 CET 2003 Jan Hubicka <jh@suse.cz> + + * predict.c (estimate_probability): Fix roundoff error. + 2003-02-12 Kazu Hirata <kazu@cs.umass.edu> * config/h8300/h8300.md (a peephole2): Don't handle 65535. diff --git a/gcc/predict.c b/gcc/predict.c index b0170f30718..a0fc75ae6ab 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -449,14 +449,19 @@ estimate_probability (loops_info) if (simple_loop_p (loops_info, loop, &desc) && desc.const_iter) { + int prob; niter = desc.niter + 1; if (niter == 0) /* We might overflow here. */ niter = desc.niter; + prob = (REG_BR_PROB_BASE + - (REG_BR_PROB_BASE + niter /2) / niter); + /* Branch prediction algorithm gives 0 frequency for everything + after the end of loop for loop having 0 probability to finish. */ + if (prob == REG_BR_PROB_BASE) + prob = REG_BR_PROB_BASE - 1; predict_edge (desc.in_edge, PRED_LOOP_ITERATIONS, - REG_BR_PROB_BASE - - (REG_BR_PROB_BASE + niter /2) - / niter); + prob); } bbs = get_loop_body (loop); |

