This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
Re: [gfortran] PR 16404: Number 5 and 7
Paul Brook wrote:
>
> Ok with that change.
>
> Paul
>
Here's what I committed after running the testsuite and verifying that
everything works as expected.
- Tobi
Index: ChangeLog
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fortran/ChangeLog,v
retrieving revision 1.120
diff -u -p -r1.120 ChangeLog
--- ChangeLog 11 Jul 2004 13:35:32 -0000 1.120
+++ ChangeLog 11 Jul 2004 14:11:05 -0000
@@ -6,6 +6,12 @@
PR fortran/16404
* io.c (match_io): Flag 'WRITE(...), ...' as extension.
+
+ PR fortran/16404
+ * match.c (gfc_match_program): A program name is obligatory.
+ (gfc_match_return): RETURN in main program is an extension.
+ (gfc_match_block_data): A space is required before a block data
+ name.
2004-07-11 Joseph S. Myers <jsm@polyomino.org.uk>
Index: match.c
===================================================================
RCS file: /cvs/gcc/gcc/gcc/fortran/match.c,v
retrieving revision 1.17
diff -u -p -r1.17 match.c
--- match.c 10 Jul 2004 22:37:15 -0000 1.17
+++ match.c 11 Jul 2004 14:11:05 -0000
@@ -791,7 +791,7 @@ not_yes:
/*********************** Statement level matching **********************/
/* Matches the start of a program unit, which is the program keyword
- followed by an optional symbol. */
+ followed by an obligatory symbol. */
match
gfc_match_program (void)
@@ -799,10 +799,6 @@ gfc_match_program (void)
gfc_symbol *sym;
match m;
- m = gfc_match_eos ();
- if (m == MATCH_YES)
- return m;
-
m = gfc_match ("% %s%t", &sym);
if (m == MATCH_NO)
@@ -1897,6 +1893,13 @@ gfc_match_return (void)
{
gfc_expr *e;
match m;
+ gfc_compile_state s;
+
+ gfc_enclosing_unit (&s);
+ if (s == COMP_PROGRAM
+ && gfc_notify_std (GFC_STD_GNU, "RETURN statement in a main "
+ "program at %C is an extension.") == FAILURE)
+ return MATCH_ERROR;
e = NULL;
if (gfc_match_eos () == MATCH_YES)
@@ -2295,7 +2298,7 @@ gfc_match_block_data (void)
return MATCH_YES;
}
- m = gfc_match (" %n%t", name);
+ m = gfc_match ("% %n%t", name);
if (m != MATCH_YES)
return MATCH_ERROR;