diff options
author | Steven G. Kargl <kargl@gcc.gnu.org> | 2007-01-26 23:36:11 +0000 |
---|---|---|
committer | Steven G. Kargl <kargl@gcc.gnu.org> | 2007-01-26 23:36:11 +0000 |
commit | 2e6a83a7924e9079240b7a60206c39806c46b32d (patch) | |
tree | 7a682d1aa6f6a5cbec61cb18bd4059b652ab736e /gcc/fortran | |
parent | d4da97d78e4f63c4e1e2f7d0bbc6399acb819168 (diff) | |
download | gcc-2e6a83a7924e9079240b7a60206c39806c46b32d.zip gcc-2e6a83a7924e9079240b7a60206c39806c46b32d.tar.gz gcc-2e6a83a7924e9079240b7a60206c39806c46b32d.tar.bz2 |
Steven G.
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
From-SVN: r121218
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 5c2b184..641d50d 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 312bb39..8c17b3a 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 a2f70a0..64cc5e4 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) |