aboutsummaryrefslogtreecommitdiff
path: root/gcc/fortran
diff options
context:
space:
mode:
authorJerry DeLisle <jvdelisle@gcc.gnu.org>2008-06-07 23:55:47 +0000
committerJerry DeLisle <jvdelisle@gcc.gnu.org>2008-06-07 23:55:47 +0000
commit8955a00563959780a959086f6c79173d80fbfab8 (patch)
tree1d58e642ddf5d2f00a5f92c47c671095963ad7d2 /gcc/fortran
parent359ce95f4071f5a1c2fc9e91d712942d713b1037 (diff)
downloadgcc-8955a00563959780a959086f6c79173d80fbfab8.zip
gcc-8955a00563959780a959086f6c79173d80fbfab8.tar.gz
gcc-8955a00563959780a959086f6c79173d80fbfab8.tar.bz2
PR fortran/36420, 36422
2008-06-07 Jerry DeLisle <jvdelisle@gcc.gnu.org> PR fortran/36420, 36422 * io.c (check_format): Add new error message for zero width. Use new error message for FMT_A and with READ, FMT_G. Allow FMT_G with WRITE except when -std=F95 and -std=F2003. From-SVN: r136544
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/io.c20
2 files changed, 26 insertions, 1 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 950e678..91cf3d7 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2008-06-07 Jerry DeLisle <jvdelisle@gcc.gnu.org>
+
+ PR fortran/36420, 36422
+ * io.c (check_format): Add new error message for zero width.
+ Use new error message for FMT_A and with READ, FMT_G. Allow
+ FMT_G with WRITE except when -std=F95 and -std=F2003.
+
2008-06-07 Tobias Burnus <burnus@net-b.de>
PR fortran/36437
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 736253f..9b417c2 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -476,6 +476,7 @@ check_format (bool is_input)
const char *nonneg_required = _("Nonnegative width required");
const char *unexpected_element = _("Unexpected element");
const char *unexpected_end = _("Unexpected end of format string");
+ const char *zero_width = _("Zero width in format descriptor");
const char *error;
format_token t, u;
@@ -672,6 +673,11 @@ data_desc:
t = format_lex ();
if (t == FMT_ERROR)
goto fail;
+ if (t == FMT_ZERO)
+ {
+ error = zero_width;
+ goto syntax;
+ }
if (t != FMT_POSINT)
saved_token = t;
break;
@@ -681,6 +687,18 @@ data_desc:
case FMT_G:
case FMT_EXT:
u = format_lex ();
+ if (t == FMT_G && u == FMT_ZERO)
+ {
+ if (is_input)
+ {
+ error = zero_width;
+ goto syntax;
+ }
+ else
+ return gfc_notify_std (GFC_STD_F2008, "Fortran F2008: 'G0' in "
+ "format at %C");
+ }
+
if (u == FMT_ERROR)
goto fail;
if (u != FMT_POSINT)
@@ -1711,7 +1729,7 @@ gfc_match_open (void)
if (open->round)
{
/* When implemented, change the following to use gfc_notify_std F2003. */
- gfc_error ("F2003 Feature: ROUND= specifier at %C not implemented");
+ gfc_error ("Fortran F2003: ROUND= specifier at %C not implemented");
goto cleanup;
if (open->round->expr_type == EXPR_CONSTANT)