This is the mail archive of the
mailing list for the GCC project.
Re: [gomp] Fix degenerate omp for loops (PR libgomp/29949)
- From: Jakub Jelinek <jakub at redhat dot com>
- To: Zdenek Dvorak <rakdver at atrey dot karlin dot mff dot cuni dot cz>
- Cc: Diego Novillo <dnovillo at redhat dot com>, Richard Henderson <rth at redhat dot com>, gcc-patches at gcc dot gnu dot org
- Date: Sat, 2 Dec 2006 02:34:40 -0500
- Subject: Re: [gomp] Fix degenerate omp for loops (PR libgomp/29949)
- References: <45709D65.firstname.lastname@example.org> <20061201232306.GA13765@atrey.karlin.mff.cuni.cz>
- Reply-to: Jakub Jelinek <jakub at redhat dot com>
On Sat, Dec 02, 2006 at 12:23:06AM +0100, Zdenek Dvorak wrote:
> > >Lastly, the compiler expanded loops (static without chunk size, static with
> > >chunk size) failed because the arithmetics to compute range given to the
> > >current thread was mostly done in unsigned long and thus when N2 - N1
> > >was negative (for positive STEP resp. positive for negative STEP), we ended
> > >up with a huge range. I tried to figure out why this was cast to utype,
> > >but haven't found why it has been written that way.
> I think that not casting to unsigned type might give wrong results for
> loops like
> for (i = -many; i < many; i++)
> ie. in cases the number of iterations does not fit in the signed type.
> (sorry if I understand the situation wrong, I did not really check the
> code whether this is the case or not, it just seems to be one possible
> reason why we want to compute these things in unsigned type).
Guess you are right, in which case I'm afraid I need to revokethe omp-low.c
part of my patch and instead add an additional comparison and conditional
jump to the code I'm afraid.