* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@138647
138bc75d-0d04-0410-961f-
82ee72b054a4
2008-08-04 Richard Guenther <rguenther@suse.de>
+ * 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 <rguenther@suse.de>
+
PR middle-end/36691
* tree-ssa-loop-niter.c (number_of_iterations_lt_to_ne): Correctly
check for no_overflow.
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);
}