diff options
author | Daniel Franke <franke.daniel@gmail.com> | 2010-05-19 08:55:26 -0400 |
---|---|---|
committer | Daniel Franke <dfranke@gcc.gnu.org> | 2010-05-19 08:55:26 -0400 |
commit | 66faed764371fe6385d54d6e7dc0a9cb0fa5c67f (patch) | |
tree | d49ae3e63ba3e59b31cb9720298cce5bd6cf56f9 /gcc/fortran | |
parent | 749aa96dabbb0fef0d81b382a49849186f907d95 (diff) | |
download | gcc-66faed764371fe6385d54d6e7dc0a9cb0fa5c67f.zip gcc-66faed764371fe6385d54d6e7dc0a9cb0fa5c67f.tar.gz gcc-66faed764371fe6385d54d6e7dc0a9cb0fa5c67f.tar.bz2 |
re PR fortran/38404 (Warning message identifies incorrect line)
gcc/fortran/:
2010-05-19 Daniel Franke <franke.daniel@gmail.com>
PR fortran/38404
* primary.c (match_string_constant): Move start_locus just inside
the string.
* data.c (create_character_intializer): Clarified truncation warning.
gcc/testsuite/:
2010-05-19 Daniel Franke <franke.daniel@gmail.com>
PR fortran/38404
* gfortran.dg/data_char_1.f90: Updated warning message.
* gfortran.dg/data_array_6.f: New.
From-SVN: r159561
Diffstat (limited to 'gcc/fortran')
-rw-r--r-- | gcc/fortran/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/fortran/data.c | 5 | ||||
-rw-r--r-- | gcc/fortran/primary.c | 7 |
3 files changed, 13 insertions, 6 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 09d758a..b9a986e 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,5 +1,12 @@ 2010-05-19 Daniel Franke <franke.daniel@gmail.com> + PR fortran/38404 + * primary.c (match_string_constant): Move start_locus just inside + the string. + * data.c (create_character_intializer): Clarified truncation warning. + +2010-05-19 Daniel Franke <franke.daniel@gmail.com> + PR fortran/34505 * intrinsic.h (gfc_check_float): New prototype. (gfc_check_sngl): New prototype. diff --git a/gcc/fortran/data.c b/gcc/fortran/data.c index c217e1c..6561cdc 100644 --- a/gcc/fortran/data.c +++ b/gcc/fortran/data.c @@ -154,9 +154,10 @@ create_character_intializer (gfc_expr *init, gfc_typespec *ts, if (len > end - start) { + gfc_warning_now ("Initialization string starting at %L was " + "truncated to fit the variable (%d/%d)", + &rvalue->where, end - start, len); len = end - start; - gfc_warning_now ("initialization string truncated to match variable " - "at %L", &rvalue->where); } if (rvalue->ts.type == BT_HOLLERITH) diff --git a/gcc/fortran/primary.c b/gcc/fortran/primary.c index c8ca3d4..09f4eb1 100644 --- a/gcc/fortran/primary.c +++ b/gcc/fortran/primary.c @@ -868,12 +868,11 @@ match_string_constant (gfc_expr **result) gfc_gobble_whitespace (); - start_locus = gfc_current_locus; - c = gfc_next_char (); if (c == '\'' || c == '"') { kind = gfc_default_character_kind; + start_locus = gfc_current_locus; goto got_delim; } @@ -917,12 +916,13 @@ match_string_constant (gfc_expr **result) goto no_match; gfc_gobble_whitespace (); - start_locus = gfc_current_locus; c = gfc_next_char (); if (c != '\'' && c != '"') goto no_match; + start_locus = gfc_current_locus; + if (kind == -1) { q = gfc_extract_int (sym->value, &kind); @@ -976,7 +976,6 @@ got_delim: e->ts.is_iso_c = 0; gfc_current_locus = start_locus; - gfc_next_char (); /* Skip delimiter */ /* We disable the warning for the following loop as the warning has already been printed in the loop above. */ |