diff options
author | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-04-23 10:47:34 +0000 |
---|---|---|
committer | rsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4> | 2014-04-23 10:47:34 +0000 |
commit | c311b856b2cba0c426fdc646db8ae60a59f035c0 (patch) | |
tree | 82eb7f2396f54b578dc352f34d49acdd01bb3d25 /gcc/predict.c | |
parent | a87365c70a434f981dcbe71d287d0197d99424f5 (diff) | |
download | gcc-c311b856b2cba0c426fdc646db8ae60a59f035c0.tar.gz |
Tweak uses of new API
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/wide-int@209689 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/predict.c')
-rw-r--r-- | gcc/predict.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/gcc/predict.c b/gcc/predict.c index c9c106606e7..d8669e39327 100644 --- a/gcc/predict.c +++ b/gcc/predict.c @@ -1309,33 +1309,34 @@ predict_iv_comparison (struct loop *loop, basic_block bb, bool overflow, overall_overflow = false; widest_int compare_count, tem; - widest_int loop_bound = wi::to_widest (loop_bound_var); - widest_int compare_bound = wi::to_widest (compare_var); - widest_int base = wi::to_widest (compare_base); - widest_int compare_step = wi::to_widest (compare_step_var); - /* (loop_bound - base) / compare_step */ - tem = wi::sub (loop_bound, base, SIGNED, &overflow); + tem = wi::sub (wi::to_widest (loop_bound_var), + wi::to_widest (compare_base), SIGNED, &overflow); overall_overflow |= overflow; - widest_int loop_count = wi::div_trunc (tem, compare_step, SIGNED, - &overflow); + widest_int loop_count = wi::div_trunc (tem, + wi::to_widest (compare_step_var), + SIGNED, &overflow); overall_overflow |= overflow; - if (!wi::neg_p (compare_step) + if (!wi::neg_p (wi::to_widest (compare_step_var)) ^ (compare_code == LT_EXPR || compare_code == LE_EXPR)) { /* (loop_bound - compare_bound) / compare_step */ - tem = wi::sub (loop_bound, compare_bound, SIGNED, &overflow); + tem = wi::sub (wi::to_widest (loop_bound_var), + wi::to_widest (compare_var), SIGNED, &overflow); overall_overflow |= overflow; - compare_count = wi::div_trunc (tem, compare_step, SIGNED, &overflow); + compare_count = wi::div_trunc (tem, wi::to_widest (compare_step_var), + SIGNED, &overflow); overall_overflow |= overflow; } else { /* (compare_bound - base) / compare_step */ - tem = wi::sub (compare_bound, base, SIGNED, &overflow); + tem = wi::sub (wi::to_widest (compare_var), + wi::to_widest (compare_base), SIGNED, &overflow); overall_overflow |= overflow; - compare_count = wi::div_trunc (tem, compare_step, SIGNED, &overflow); + compare_count = wi::div_trunc (tem, wi::to_widest (compare_step_var), + SIGNED, &overflow); overall_overflow |= overflow; } if (compare_code == LE_EXPR || compare_code == GE_EXPR) |