diff options
author | Jakub Jelinek <jakub@redhat.com> | 2008-10-24 15:57:43 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2008-10-24 15:57:43 +0200 |
commit | 1a00e5f7fbcf5c79571ed1f5dcf46c30031d37d1 (patch) | |
tree | d790edd200af5480810ab1833074c5bb78dd3cbc /gcc/tree-ssa-loop-ivopts.c | |
parent | 918bf5c10e1d5b026dfedd58d3e701536142fcc2 (diff) | |
download | gcc-1a00e5f7fbcf5c79571ed1f5dcf46c30031d37d1.zip gcc-1a00e5f7fbcf5c79571ed1f5dcf46c30031d37d1.tar.gz gcc-1a00e5f7fbcf5c79571ed1f5dcf46c30031d37d1.tar.bz2 |
re PR tree-optimization/36038 (miscompiled loop in perlbmk for -Os)
PR tree-optimization/36038
* tree-ssa-loop-ivopts.c (add_old_iv_candidates): For pointer bases
add sizetype IV with initial value zero instead of pointer type.
* gcc.c-torture/compile/pr36038.c: New test.
From-SVN: r141343
Diffstat (limited to 'gcc/tree-ssa-loop-ivopts.c')
-rw-r--r-- | gcc/tree-ssa-loop-ivopts.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index 628d426..92d9c75 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -2228,9 +2228,11 @@ add_old_iv_candidates (struct ivopts_data *data, struct iv *iv) add_candidate (data, iv->base, iv->step, true, NULL); /* The same, but with initial value zero. */ - add_candidate (data, - build_int_cst (TREE_TYPE (iv->base), 0), - iv->step, true, NULL); + if (POINTER_TYPE_P (TREE_TYPE (iv->base))) + add_candidate (data, size_int (0), iv->step, true, NULL); + else + add_candidate (data, build_int_cst (TREE_TYPE (iv->base), 0), + iv->step, true, NULL); phi = SSA_NAME_DEF_STMT (iv->ssa_name); if (gimple_code (phi) == GIMPLE_PHI) |