The following program produces a warning message in gfortran 4.3 and 4.4, but not 4.5. I believe it produced a warning message in early versions of 4.5. PROGRAM test IF(.TRUE.) THEN GOTO 50 50 ENDIF END PROGRAM test
(In reply to comment #0) > The following program produces a warning message in gfortran 4.3 and 4.4, but > not 4.5. I believe it produced a warning message in early versions of 4.5. > > PROGRAM test > IF(.TRUE.) THEN > GOTO 50 > 50 ENDIF > END PROGRAM test > I believe that 4.3 and 4.4 had a bug. Gfortran 4.5 is doing the right thing. The deleted feature is (2) Branching to an END IF statement from outside its block. In Fortran 77, and for consistency also in Fortran 90, it was possible to branch to an END IF statement from outside the IF construct; this has been deleted. A similar result can be achieved by branching to a CONTINUE statement that is immediately after the END IF statement. Your GOTO 50 is inside the its block. I also believe that there was a long thread in fortran@gcc about this (non)feature. I'll see if I can find it.
If I move "GOTO 50" outside of the block, gfortran 4.5 correctly gives the message "Warning: Label at (1) is not in the same block as the GOTO statement at (2)", but gfortran 4.3 and 4.4 give no message.
(In reply to comment #1) > I believe that 4.3 and 4.4 had a bug. bug #38507 probably
(In reply to comment #2) > If I move "GOTO 50" outside of the block, gfortran 4.5 correctly gives the > message "Warning: Label at (1) is not in the same block as the GOTO statement > at (2)", but gfortran 4.3 and 4.4 give no message. > As I said, 4.3 and 4.4 had/have a bug. The PR that fixed this problem is http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38507 The patch was committed to trunk on 2009-03-29. Judging from the release date of 4.4.0, it was deemed too close to release to do a backport. A search of fortran@ finds the first analysis of the problem here: http://gcc.gnu.org/ml/fortran/2008-12/msg00355.html Here's my first attempt at fixing the problem before Tobias Schlueter took over the PR.
PR38507 is closed, no backport to 4.4 seems to be planned. Shouldn't this PR be closed as INVALID?
The (non?)issue was fixed on trunk in March 2009. Since this issues concerns only a warning and generating wrong code is not possible, I'm closing this with WONTFIX under the 'too many bugs too fix, too few hands to do the work' excuse.