diff options
author | Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de> | 2004-06-12 17:02:01 +0200 |
---|---|---|
committer | Tobias Schlüter <tobi@gcc.gnu.org> | 2004-06-12 17:02:01 +0200 |
commit | c52eae8de072141afe6620df1ccd2803f86771ff (patch) | |
tree | 3442eed468d0f98cb9db165e1fa5cadb8abaed78 /gcc/fortran/decl.c | |
parent | a13c75880a4f9da78ef498f8cf7f006b314aa35c (diff) | |
download | gcc-c52eae8de072141afe6620df1ccd2803f86771ff.zip gcc-c52eae8de072141afe6620df1ccd2803f86771ff.tar.gz gcc-c52eae8de072141afe6620df1ccd2803f86771ff.tar.bz2 |
re PR fortran/14957 (testsuite issues)
fortran/
PR fortran/14957
* decl.c (gfc_match_end): Require END {SUBROUTINE|FUNCTION} for
contained procedure.
testsuite/
PR fortran/14957
* gfortran.fortran-torture/execute/stack_varsize.f90: Correct
syntax errors in end statements of contained subroutines.
From-SVN: r83031
Diffstat (limited to 'gcc/fortran/decl.c')
-rw-r--r-- | gcc/fortran/decl.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/fortran/decl.c b/gcc/fortran/decl.c index 69b1cfd..c6b8073 100644 --- a/gcc/fortran/decl.c +++ b/gcc/fortran/decl.c @@ -1875,10 +1875,15 @@ gfc_match_end (gfc_statement * st) if (gfc_match_eos () == MATCH_YES) { + state = gfc_current_state (); if (*st == ST_ENDIF || *st == ST_ENDDO || *st == ST_END_SELECT || *st == ST_END_INTERFACE || *st == ST_END_FORALL - || *st == ST_END_WHERE) + || *st == ST_END_WHERE + || /* A contained procedure requires END FUNCTION/SUBROUTINE. */ + ((state == COMP_FUNCTION || state == COMP_SUBROUTINE) + && gfc_state_stack->previous != NULL + && gfc_state_stack->previous->state == COMP_CONTAINS)) { gfc_error ("%s statement expected at %C", |