diff options
author | Janus Weil <jaydub66@gmail.com> | 2007-09-04 13:50:35 +0000 |
---|---|---|
committer | Tobias Burnus <burnus@gcc.gnu.org> | 2007-09-04 15:50:35 +0200 |
commit | 6977374226b230fe6e6d9b5ce2615bea094cb0f1 (patch) | |
tree | 978d0573428d251aa1224d4da532cdb6c957b8b0 /gcc/fortran/parse.c | |
parent | 8070c91a53e4f058080e610b9d18c7c2c7d6fdfe (diff) | |
download | gcc-6977374226b230fe6e6d9b5ce2615bea094cb0f1.zip gcc-6977374226b230fe6e6d9b5ce2615bea094cb0f1.tar.gz gcc-6977374226b230fe6e6d9b5ce2615bea094cb0f1.tar.bz2 |
decl.c (match_procedure_decl,match_procedure_in_interface, [...]): Handle PROCEDURE statements.
2007-09-04 Janus Weil <jaydub66@gmail.com>
Paul Thomas <pault@gcc.gnu.org>
* decl.c (match_procedure_decl,match_procedure_in_interface,
gfc_match_procedure): Handle PROCEDURE statements.
* gfortran.h (struct gfc_symbol): New member "gfc_symbol *interface".
(enum gfc_statement): New element "ST_PROCEDURE".
(strcut symbol_attribute): New member "unsigned procedure".
* interface.c (check_interface0): Extended error checking.
* match.h: Add gfc_match_procedure prototype.
* parse.c (decode_statement,next_statement,gfc_ascii_statement,
parse_derived,parse_interface): Implement PROCEDURE statements.
* resolve.c (resolve_symbol): Ditto.
* symbol.c (check_conflict): Ditto.
(gfc_add_proc): New function for setting the procedure attribute.
(copy_formal_args): New function for copying formal argument lists.
2007-09-04 Janus Weil <jaydub66@gmail.com>
Tobias Burnus <burnus@net-b.de>
* gfortran.dg/proc_decl_1.f90: New.
* gfortran.dg/proc_decl_2.f90: New.
* gfortran.dg/proc_decl_3.f90: New.
* gfortran.dg/proc_decl_4.f90: New.
Co-Authored-By: Paul Thomas <pault@gcc.gnu.org>
Co-Authored-By: Tobias Burnus <burnus@net-b.de>
From-SVN: r128081
Diffstat (limited to 'gcc/fortran/parse.c')
-rw-r--r-- | gcc/fortran/parse.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/gcc/fortran/parse.c b/gcc/fortran/parse.c index 38e62cd..50c0c0d 100644 --- a/gcc/fortran/parse.c +++ b/gcc/fortran/parse.c @@ -258,6 +258,7 @@ decode_statement (void) match ("pointer", gfc_match_pointer, ST_ATTR_DECL); if (gfc_match_private (&st) == MATCH_YES) return st; + match ("procedure", gfc_match_procedure, ST_PROCEDURE); match ("program", gfc_match_program, ST_PROGRAM); if (gfc_match_public (&st) == MATCH_YES) return st; @@ -719,7 +720,8 @@ next_statement (void) #define case_decl case ST_ATTR_DECL: case ST_COMMON: case ST_DATA_DECL: \ case ST_EQUIVALENCE: case ST_NAMELIST: case ST_STATEMENT_FUNCTION: \ - case ST_TYPE: case ST_INTERFACE: case ST_OMP_THREADPRIVATE + case ST_TYPE: case ST_INTERFACE: case ST_OMP_THREADPRIVATE: \ + case ST_PROCEDURE /* Block end statements. Errors associated with interchanging these are detected in gfc_match_end(). */ @@ -1078,6 +1080,9 @@ gfc_ascii_statement (gfc_statement st) case ST_PROGRAM: p = "PROGRAM"; break; + case ST_PROCEDURE: + p = "PROCEDURE"; + break; case ST_READ: p = "READ"; break; @@ -1537,6 +1542,7 @@ parse_derived (void) unexpected_eof (); case ST_DATA_DECL: + case ST_PROCEDURE: accept_statement (st); seen_component = 1; break; @@ -1749,6 +1755,7 @@ loop: gfc_new_block->formal, NULL); break; + case ST_PROCEDURE: case ST_MODULE_PROC: /* The module procedure matcher makes sure the context is correct. */ accept_statement (st); |