diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-02 21:55:52 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-06-02 21:55:52 +0000 |
commit | 0213c30e2883be76970abee1ec7fa1d3736799ae (patch) | |
tree | 5da965d0b7d30f4ab47448b7dee5619e882dc4f5 /gcc/tree-ssa-loop-ivopts.c | |
parent | 9aff97092efb65a0ef1bd9d5c024744644fbff8d (diff) | |
download | gcc-0213c30e2883be76970abee1ec7fa1d3736799ae.tar.gz |
2005-06-02 Richard Guenther <rguenth@gcc.gnu.org>
* tree-chrec.c (chrec_fold_plus_1): Ensure we build
binary operations with the correct types.
* tree-ssa-loo-ivopts.c (idx_find_step): Use sizetype
for all computation.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@100517 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 7962d62cedb..8e4a574e8a8 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -1389,7 +1389,7 @@ idx_find_step (tree base, tree *idx, void *data) { struct ifs_ivopts_data *dta = data; struct iv *iv; - tree step, type, iv_type, iv_step, lbound, off; + tree step, iv_step, lbound, off; struct loop *loop = dta->ivopts_data->current_loop; if (TREE_CODE (base) == MISALIGNED_INDIRECT_REF @@ -1430,8 +1430,6 @@ idx_find_step (tree base, tree *idx, void *data) if (!iv->step) return true; - iv_type = TREE_TYPE (iv->base); - type = build_pointer_type (TREE_TYPE (base)); if (TREE_CODE (base) == ARRAY_REF) { step = array_ref_element_size (base); @@ -1442,13 +1440,13 @@ idx_find_step (tree base, tree *idx, void *data) } else /* The step for pointer arithmetics already is 1 byte. */ - step = build_int_cst (type, 1); + step = build_int_cst (sizetype, 1); - if (TYPE_PRECISION (iv_type) < TYPE_PRECISION (type)) + if (TYPE_PRECISION (TREE_TYPE (iv->base)) < TYPE_PRECISION (sizetype)) iv_step = can_count_iv_in_wider_type (dta->ivopts_data->current_loop, - type, iv->base, iv->step, dta->stmt); + sizetype, iv->base, iv->step, dta->stmt); else - iv_step = fold_convert (iv_type, iv->step); + iv_step = fold_convert (sizetype, iv->step); if (!iv_step) { @@ -1456,12 +1454,12 @@ idx_find_step (tree base, tree *idx, void *data) return false; } - step = fold_build2 (MULT_EXPR, type, step, iv_step); + step = fold_build2 (MULT_EXPR, sizetype, step, iv_step); if (!*dta->step_p) *dta->step_p = step; else - *dta->step_p = fold_build2 (PLUS_EXPR, type, *dta->step_p, step); + *dta->step_p = fold_build2 (PLUS_EXPR, sizetype, *dta->step_p, step); return true; } |