- 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