From: Richard Guenther Date: Mon, 4 Aug 2008 18:35:20 +0000 (+0000) Subject: tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add the candidate with the... X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=7eeef08ed83f2bd341dc420adc6402199ccbdd7d;p=platform%2Fupstream%2Fgcc.git tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add the candidate with the stripped base if... 2008-08-04 Richard Guenther * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add the candidate with the stripped base if that base is different from the original base even for offset zero. From-SVN: r138647 --- diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 224764e..02ca433 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,11 @@ 2008-08-04 Richard Guenther + * tree-ssa-loop-ivopts.c (add_iv_value_candidates): Also add + the candidate with the stripped base if that base is different + from the original base even for offset zero. + +2008-08-04 Richard Guenther + PR middle-end/36691 * tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly check for no_overflow. diff --git a/gcc/tree-ssa-loop-ivopts.c b/gcc/tree-ssa-loop-ivopts.c index c314da4..1a1e58b 100644 --- a/gcc/tree-ssa-loop-ivopts.c +++ b/gcc/tree-ssa-loop-ivopts.c @@ -2275,9 +2275,11 @@ add_iv_value_candidates (struct ivopts_data *data, add_candidate (data, build_int_cst (basetype, 0), iv->step, true, use); - /* Third, try removing the constant offset. */ + /* Third, try removing the constant offset. Make sure to even + add a candidate for &a[0] vs. (T *)&a. */ base = strip_offset (iv->base, &offset); - if (offset) + if (offset + || base != iv->base) add_candidate (data, base, iv->step, false, use); }