http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57142



             Bug #: 57142

           Summary: SIZE/SHAPE overflow despite kind=8

    Classification: Unclassified

           Product: gcc

           Version: 4.9.0

            Status: UNCONFIRMED

          Keywords: diagnostic, wrong-code

          Severity: normal

          Priority: P3

         Component: fortran

        AssignedTo: unassig...@gcc.gnu.org

        ReportedBy: bur...@gcc.gnu.org





The following program should print:

  1 k=8 / 4294967300 k=8

  1 k=8 / 2147483650 k=8



However, it prints:

  1 k=8 / 4 k=8

  1 k=8 / -2147483646 k=8



Expected:

* kind=8 is properly handled

* With kind=4, a warning/error is printed that the value exceeds huge(1_4)



NOTE: shape has the same issue; ubound/lbound are okay (in both regards). The

run-time version is fine.





!integer :: A(huge(1)+2_8), B(2,3)

integer :: A(1), B(huge(1)+3_8,2_8)

print '(4(i0,a))', size(A,kind=8),' k=', kind(size(A,kind=8)),' / ', &

                   size(B,kind=8),' k=', kind(size(B,kind=8))

print '(4(i0,a))', size(A,dim=1,kind=8),' k=', kind(size(A,dim=1,kind=8)), &

      ' / ',       size(B,dim=1,kind=8),' k=', kind(size(B,dim=1,kind=8))

end

Reply via email to