- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
I discovered that the runtime boundary check is not causing any warning in following program. Is this intended?
Intel(R) Visual Fortran Compiler 19.0.5.281 [IA-32]
/nologo /debug:full /Od /warn:all /module:"Debug\\" /object:"Debug\\" /Fd"Debug\vc160.pdb" /traceback /check:all /libs:dll /threads /dbglibs /c
MODULE no_warning_mod
IMPLICIT NONE
PRIVATE
PUBLIC :: no_warning, no_warning1
INTERFACE no_warning
MODULE PROCEDURE no_warning1
MODULE PROCEDURE no_warning2
END INTERFACE
CONTAINS
SUBROUTINE no_warning1(z)
IMPLICIT NONE
INTEGER, INTENT(IN) :: z(:)
END SUBROUTINE no_warning1
SUBROUTINE no_warning2(z)
IMPLICIT NONE
INTEGER, INTENT(INOUT) :: z(:, :)
END SUBROUTINE no_warning2
END MODULE no_warning_mod
PROGRAM MWE_boundary_check
USE no_warning_mod
IMPLICIT NONE
INTEGER :: x(10, 02), i
x(:, 1) = [(i, i = 1, 10)]
x(:, 2) = [(i, i = 101, 110)]
! works as intended
CALL no_warning(x(:, 2))
! no warning
CALL no_warning(x(:, 3))
! no warning
CALL no_warning1(x(:, 3))
! warns
!x(:, 1) = x(:, 3)
END PROGRAM MWE_boundary_check
Link Copied
1 Reply
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The bounds checking occurs on the access out of bounds. Try modifying your two subroutines to access the supplied arrays (with bounds issues).
Jim Dempsey
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page