This is the mail archive of the gcc-bugs@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]

[Bug middle-end/40205] OpenMP do loop with MAXINT gives wrong trip count


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.)


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