public inbox for gcc-bugs@sourceware.org help / color / mirror / Atom feed
* [Bug fortran/39286] New: Missing out-of-bounds diagnostic
@ 2009-02-24 9:56 burnus at gcc dot gnu dot org
2009-03-08 16:08 ` [Bug fortran/39286] " pault at gcc dot gnu dot org
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: burnus at gcc dot gnu dot org @ 2009-02-24 9:56 UTC (permalink / raw)
To: gcc-bugs
Found in the thread at
http://groups.google.com/group/comp.lang.fortran/browse_thread/thread/792d5c732cc84ddf
Post: http://groups.google.com/group/comp.lang.fortran/msg/025a878dd2d9f8e0
I have not checked whether this is indeed an issue.
---------------
[...]
> At line 25 of file jahed_1.f90
> Fortran runtime error: Array bound mismatch for dimension 1 of array
> 'v3'
I wonder if GFortran is misrepresenting the error. The error message
suggests that GFortran is inferring the size of the assignee from the
LHS of the assignment statement on Line-9, rather than from the RHS
expression on the same line. The former has dimension 1:5, the latter
has 1:6. MRC, Sec. 3.11 says "..if the expression includes a reference
to the array variable or to a part of it, the expression is
interpreted as being fully evaluated before the assignment commences".
The extent of the expression is 6; the extent of the lvalue is 5.
Following Oliver Hardy's advice, "let's really make it dirty", I added
to the RHS the term
+ (/(i+2,i=0,n)/)
and added i to the declaration of integers on Line-3. After this
change, GFortran gave this spurious message at compile time
err.f90:9: warning: 'i' may be used uninitialized in this function
and, despite the bounds-check being on, gave no error during execution.
--
Summary: Missing out-of-bounds diagnostic
Product: gcc
Version: 4.4.0
Status: UNCONFIRMED
Keywords: diagnostic
Severity: normal
Priority: P3
Component: fortran
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: burnus at gcc dot gnu dot org
OtherBugsDependingO 27766
nThis:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39286
^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/39286] Missing out-of-bounds diagnostic 2009-02-24 9:56 [Bug fortran/39286] New: Missing out-of-bounds diagnostic burnus at gcc dot gnu dot org @ 2009-03-08 16:08 ` pault at gcc dot gnu dot org 2009-04-29 14:12 ` dominiq at lps dot ens dot fr 2009-04-29 14:20 ` dominiq at lps dot ens dot fr 2 siblings, 0 replies; 4+ messages in thread From: pault at gcc dot gnu dot org @ 2009-03-08 16:08 UTC (permalink / raw) To: gcc-bugs ------- Comment #1 from pault at gcc dot gnu dot org 2009-03-08 16:07 ------- Confirmed. For some reason, we have never added a bounds check to assignments. The first testcase uses a check internal to the function. Once an extra expression is added to the rhs, there is nothing to check against. Cheers Paul -- pault at gcc dot gnu dot org changed: What |Removed |Added ---------------------------------------------------------------------------- Status|UNCONFIRMED |NEW Ever Confirmed|0 |1 Last reconfirmed|0000-00-00 00:00:00 |2009-03-08 16:07:58 date| | http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39286 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/39286] Missing out-of-bounds diagnostic 2009-02-24 9:56 [Bug fortran/39286] New: Missing out-of-bounds diagnostic burnus at gcc dot gnu dot org 2009-03-08 16:08 ` [Bug fortran/39286] " pault at gcc dot gnu dot org @ 2009-04-29 14:12 ` dominiq at lps dot ens dot fr 2009-04-29 14:20 ` dominiq at lps dot ens dot fr 2 siblings, 0 replies; 4+ messages in thread From: dominiq at lps dot ens dot fr @ 2009-04-29 14:12 UTC (permalink / raw) To: gcc-bugs ------- Comment #2 from dominiq at lps dot ens dot fr 2009-04-29 14:12 ------- I wonder if this not a duplicate of pr36683. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39286 ^ permalink raw reply [flat|nested] 4+ messages in thread
* [Bug fortran/39286] Missing out-of-bounds diagnostic 2009-02-24 9:56 [Bug fortran/39286] New: Missing out-of-bounds diagnostic burnus at gcc dot gnu dot org 2009-03-08 16:08 ` [Bug fortran/39286] " pault at gcc dot gnu dot org 2009-04-29 14:12 ` dominiq at lps dot ens dot fr @ 2009-04-29 14:20 ` dominiq at lps dot ens dot fr 2 siblings, 0 replies; 4+ messages in thread From: dominiq at lps dot ens dot fr @ 2009-04-29 14:20 UTC (permalink / raw) To: gcc-bugs ------- Comment #3 from dominiq at lps dot ens dot fr 2009-04-29 14:19 ------- I have modified the code referenced in pr36683 as: PROGRAM calls IMPLICIT NONE INTEGER :: a(2), b(3), c(6), n , i c = myfunc(a,b) WRITE(*,*) "c:",c !! gives "c: 1 2 3 4 5 6" n = 5 c = 0 c(1:n) = (/(i+2,i=0,n)/)/myfunc(a,b) WRITE(*,*) "c:",c !! gives "c: 1 2 3 4 5 0" CONTAINS FUNCTION myfunc(v1,v2) RESULT(v3) IMPLICIT NONE INTEGER, INTENT(IN) :: v1(:), v2(:) INTEGER :: v3(SIZE(v1,1)*SIZE(v2,1)) INTEGER :: i, j, k DO i=1,SIZE(v1,1) DO j=1,SIZE(v2,1) k = (i-1)*SIZE(v2,1) + j v3(k) = k ENDDO ENDDO WRITE(*,*) "myfunc: v3:",v3 !! always gives "v3: 1 2 3 4 5 6" END FUNCTION myfunc END PROGRAM calls and I don't get any run time error even with '-fbounds-check'. This confirms that this pr is a duplicate of pr36683. -- http://gcc.gnu.org/bugzilla/show_bug.cgi?id=39286 ^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2009-04-29 14:20 UTC | newest] Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2009-02-24 9:56 [Bug fortran/39286] New: Missing out-of-bounds diagnostic burnus at gcc dot gnu dot org 2009-03-08 16:08 ` [Bug fortran/39286] " pault at gcc dot gnu dot org 2009-04-29 14:12 ` dominiq at lps dot ens dot fr 2009-04-29 14:20 ` dominiq at lps dot ens dot fr
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).