diff options
author | Roger Sayle <roger@eyesopen.com> | 2004-05-21 21:37:25 +0000 |
---|---|---|
committer | Roger Sayle <sayle@gcc.gnu.org> | 2004-05-21 21:37:25 +0000 |
commit | 11670eebf3c9844fc34793789397fe05d60b4a77 (patch) | |
tree | d8fe1bebb6dada99658d820fef0bcdf6b8789378 /gcc/fortran | |
parent | 0b817eb02d8c970b3041591f58a4a7c4253ed855 (diff) | |
download | gcc-11670eebf3c9844fc34793789397fe05d60b4a77.zip gcc-11670eebf3c9844fc34793789397fe05d60b4a77.tar.gz gcc-11670eebf3c9844fc34793789397fe05d60b4a77.tar.bz2 |
io.c (check_format): As a GNU extension...
* io.c (check_format): As a GNU extension, allow the comma after a
string literal to be optional in a format. Use gfc_notify_std to
issue an error/warning as appropriate.
* io/format.c (parse_format_list): Allow the comma after a string
literal to be optional.
From-SVN: r82109
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/fortran/io.c | 36 |
2 files changed, 41 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index d91fa3d..fefaac0 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,11 @@ 2004-05-21 Roger Sayle <roger@eyesopen.com> + * io.c (check_format): As a GNU extension, allow the comma after a + string literal to be optional in a format. Use gfc_notify_std to + issue an error/warning as appropriate. + +2004-05-21 Roger Sayle <roger@eyesopen.com> + * io.c (check_format): Use gfc_notify_std to determine whether to issue an error/warning for omitting the digits from the X format. diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c index 6a31bfa..120b4400 100644 --- a/gcc/fortran/io.c +++ b/gcc/fortran/io.c @@ -481,9 +481,11 @@ format_item: case FMT_SIGN: case FMT_BLANK: - case FMT_CHAR: goto between_desc; + case FMT_CHAR: + goto extension_optional_comma; + case FMT_COLON: case FMT_SLASH: goto optional_comma; @@ -728,6 +730,38 @@ optional_comma: goto format_item; +extension_optional_comma: + /* As a GNU extension, permit a missing comma after a string literal. */ + t = format_lex (); + switch (t) + { + case FMT_COMMA: + break; + + case FMT_RPAREN: + level--; + if (level < 0) + goto finished; + goto between_desc; + + case FMT_COLON: + case FMT_SLASH: + goto optional_comma; + + case FMT_END: + error = unexpected_end; + goto syntax; + + default: + if (gfc_notify_std (GFC_STD_GNU, "Extension: Missing comma at %C") + == FAILURE) + return FAILURE; + saved_token = t; + break; + } + + goto format_item; + syntax: /* Something went wrong. If the format we're checking is a string, generate a warning, since the program is correct. If the format |