This is the mail archive of the 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: [gomp] Fix degenerate omp for loops (PR libgomp/29949)

Zdenek Dvorak wrote on 12/01/06 18:23:

Jakub Jelinek wrote on 12/01/06 11:32:

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.

But that should be fine. We are not required to handle cases where N2 - N1 + INCR cannot be represented in the type of the loop variable.

I would rather use signed integers to catch some of the easy cases, though that could also be done by initially comparing the bounds.

Jakub, whatever method you find easiest to implement is fine.

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