summaryrefslogtreecommitdiffstats
path: root/gcc/fortran
diff options
context:
space:
mode:
authorkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>2007-01-26 23:36:11 +0000
committerkargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4>2007-01-26 23:36:11 +0000
commit33a28619f679e6b25511b112034bc18aea0c4ae0 (patch)
tree7a682d1aa6f6a5cbec61cb18bd4059b652ab736e /gcc/fortran
parentd188df28b6445aa38411eefaa0ed328875ec721d (diff)
downloadppe42-gcc-33a28619f679e6b25511b112034bc18aea0c4ae0.tar.gz
ppe42-gcc-33a28619f679e6b25511b112034bc18aea0c4ae0.zip
2007-01-26 Steven Bosscher <stevenb.gcc@gmail.com>
Steven G. Kargl <kargl@gcc.gnu,org> * testsuite/gfortran.dg/backslash_3.f: New test. * fortran/io.c (next_char): Deal with backslash escaped characters. Issue warnings in non -std=gnu cases. * fortran/primary.c (next_string_char): Issue warnings in non git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121218 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/fortran')
-rw-r--r--gcc/fortran/ChangeLog7
-rw-r--r--gcc/fortran/io.c45
-rw-r--r--gcc/fortran/primary.c3
3 files changed, 53 insertions, 2 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog
index 5c2b184d6d0..641d50dca5d 100644
--- a/gcc/fortran/ChangeLog
+++ b/gcc/fortran/ChangeLog
@@ -1,3 +1,10 @@
+2007-01-26 Steven Bosscher <stevenb.gcc@gmail.com>
+ Steven G. Kargl <kargl@gcc.gnu.org>
+
+ * fortran/io.c (next_char): Deal with backslash escaped characters.
+ Issue warnings in non -std=gnu cases.
+ * fortran/primary.c (next_string_char): Issue warnings in non
+
2007-01-26 Tobias Burnus <burnus@net-b.de>
* lang-specs.h: Add support for .f03 and .F03 extensions.
diff --git a/gcc/fortran/io.c b/gcc/fortran/io.c
index 312bb39b3d9..8c17b3a8584 100644
--- a/gcc/fortran/io.c
+++ b/gcc/fortran/io.c
@@ -137,11 +137,52 @@ next_char (int in_string)
c = gfc_next_char_literal (in_string);
if (c == '\n')
c = '\0';
+ }
+
+ if (gfc_option.flag_backslash && c == '\\')
+ {
+ locus old_locus = gfc_current_locus;
- if (mode == MODE_COPY)
- *format_string++ = c;
+ switch (gfc_next_char_literal (1))
+ {
+ case 'a':
+ c = '\a';
+ break;
+ case 'b':
+ c = '\b';
+ break;
+ case 't':
+ c = '\t';
+ break;
+ case 'f':
+ c = '\f';
+ break;
+ case 'n':
+ c = '\n';
+ break;
+ case 'r':
+ c = '\r';
+ break;
+ case 'v':
+ c = '\v';
+ break;
+ case '\\':
+ c = '\\';
+ break;
+
+ default:
+ /* Unknown backslash codes are simply not expanded. */
+ gfc_current_locus = old_locus;
+ break;
+ }
+
+ if (!(gfc_option.allow_std & GFC_STD_GNU) && !inhibit_warnings)
+ gfc_warning ("Extension: backslash character at %C");
}
+ if (mode == MODE_COPY)
+ *format_string++ = c;
+
c = TOUPPER (c);
return c;
}
diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c
index a2f70a07f93..64cc5e44f8d 100644
--- a/gcc/fortran/primary.c
+++ b/gcc/fortran/primary.c
@@ -764,6 +764,9 @@ next_string_char (char delimiter)
gfc_current_locus = old_locus;
break;
}
+
+ if (!(gfc_option.allow_std & GFC_STD_GNU) && !inhibit_warnings)
+ gfc_warning ("Extension: backslash character at %C");
}
if (c != delimiter)
OpenPOWER on IntegriCloud