diff options
| author | kargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-26 23:36:11 +0000 |
|---|---|---|
| committer | kargl <kargl@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-01-26 23:36:11 +0000 |
| commit | 33a28619f679e6b25511b112034bc18aea0c4ae0 (patch) | |
| tree | 7a682d1aa6f6a5cbec61cb18bd4059b652ab736e /gcc/fortran | |
| parent | d188df28b6445aa38411eefaa0ed328875ec721d (diff) | |
| download | ppe42-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/ChangeLog | 7 | ||||
| -rw-r--r-- | gcc/fortran/io.c | 45 | ||||
| -rw-r--r-- | gcc/fortran/primary.c | 3 |
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) |

