[Bug middle-end/40205] OpenMP do loop with MAXINT gives wrong trip count
burnus at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Oct 17 17:11:00 GMT 2012
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40205
Tobias Burnus <burnus at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
CC| |burnus at gcc dot gnu.org
Resolution| |WONTFIX
--- Comment #4 from Tobias Burnus <burnus at gcc dot gnu.org> 2012-10-17 17:10:40 UTC ---
(In reply to comment #0)
> upper = huge(maxint)
> lower = upper - 9 ! The 9 can of course be changed
> !$omp parallel do
> do i = lower, upper
As the Fortran program is nonconforming (even without OpenMP), I close this PR
as WONTFIX.
The reason that the program is nonconforming is the same as the OpenMP issue:
One has "huge(i)+1" which is not representable.
In case of Fortran, the standard effectively mandates that the DO variable "i"
is "upper + 1" after the loop, but that number is not representable if "upper"
is "huge(i)". As it is not representable, the code is nonconforming. See PR
54932 for quotes from the standard.
(For the OpenMP part, one has "<= ubound" which is transformed to "< ubound+1".
That part could be fixed, but why should one bother if the Fortran code itself
is already invalid.)
More information about the Gcc-bugs
mailing list