This is the mail archive of the gcc-patches@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: [PATCH 0/2, fortran] Better code generation for DO loops with +-1 step


> 
> Why is the behavior only undefined for step 1 if the last iteration IV
> increment overflows?
> Doesn't this apply to all step values?

This is what Fortran standard says:

  The iteration count is established and is the value of the expression (m2-m1+m3)/m3 unless that value is negative,
  in which case the iteration count is 0.

My reading of this is that the do statement is undefined whenever the expression above is undefined
(m1 is lower bound, m2 is upper bound, m3 is step) and because I think the evaulation order of
m2-m1+m3 is not fixed, I think the statement is not defined whethever (m2-m1), (m1+m3) or (m2-m1)+m3
overflows or underflows as signed integer.

For example it is not valid to iterate from -10 to INT_MAX with step 1.
Honza


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