This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Serious performance regression -- some tree optimizer questions


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]