Serious performance regression -- some tree optimizer questions

Jakub Jelinek jakub@redhat.com
Wed Dec 29 16:06:00 GMT 2004


On Wed, Dec 29, 2004 at 03:45:31PM +0100, Ulrich Weigand wrote:
> The reason why I still need that param appears to be that
> ivopts does not recognize that an IV like &A[i] is related
> to a use like &A[i+1].  It appears that add_address_candidates
> would be supposed to handle this, but it doesn't -- it only
> sees though array references with a constant offset, not those
> with an offset that itself has a variable and a constant part.
> 
> I've tried to add code recognizing that case there, but then
> the candidates still aren't chosen because they get assigned
> very high cost; this is because fold-const is unable to
> determine that &A[i+1] - &A[i] is a constant ...

It is not always constant.
Consider say unsigned int i; on LP64 target and
char A[(long) UINT_MAX + 1];
&A[i+1] - &A[i] is (ptrdiff_t) 1 unless i == UINT_MAX, for which
it is - (ptrdiff_t) UINT_MAX.

	Jakub



More information about the Gcc mailing list