diff options
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/fortran/ChangeLog | 9 | ||||
-rw-r--r-- | gcc/fortran/error.c | 7 |
2 files changed, 12 insertions, 4 deletions
diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 2892011..ad30ff2 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3 +1,9 @@ +2019-10-14 Tobias Burnus <tobias@codesourcery.com> + + PR fortran/92072 + * error.c (error_print, gfc_format_decoder): Fix %C column- + offset handling. + 2019-10-13 Damian Rouson <damain@sourceryinstitue.org> PR fortran/91513 @@ -110,7 +116,8 @@ 2019-10-04 Tobias Burnus <tobias@codesourcery.com> - * error (error_print, gfc_format_decoder): Fix off-by one issue with %C. + * error.c (error_print, gfc_format_decoder): Fix off-by one issue + with %C. 2019-10-03 Steven G. Kargl <kargl@gcc.gnu.org> diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c index 1019f17..7962c93 100644 --- a/gcc/fortran/error.c +++ b/gcc/fortran/error.c @@ -1,3 +1,4 @@ +#pragma GCC optimize("O0") /* Handle errors. Copyright (C) 2000-2019 Free Software Foundation, Inc. Contributed by Andy Vaught & Niels Kristian Bech Jensen @@ -619,7 +620,7 @@ error_print (const char *type, const char *format0, va_list argp) l2 = loc; arg[pos].u.stringval = "(2)"; /* Point %C first offending character not the last good one. */ - if (arg[pos].type == TYPE_CURRENTLOC) + if (arg[pos].type == TYPE_CURRENTLOC && *l2->nextc != '\0') l2->nextc++; } else @@ -628,7 +629,7 @@ error_print (const char *type, const char *format0, va_list argp) have_l1 = 1; arg[pos].u.stringval = "(1)"; /* Point %C first offending character not the last good one. */ - if (arg[pos].type == TYPE_CURRENTLOC) + if (arg[pos].type == TYPE_CURRENTLOC && *l1->nextc != '\0') l1->nextc++; } break; @@ -969,7 +970,7 @@ gfc_format_decoder (pretty_printer *pp, text_info *text, const char *spec, loc = va_arg (*text->args_ptr, locus *); gcc_assert (loc->nextc - loc->lb->line >= 0); unsigned int offset = loc->nextc - loc->lb->line; - if (*spec == 'C') + if (*spec == 'C' && *loc->nextc != '\0') /* Point %C first offending character not the last good one. */ offset++; /* If location[0] != UNKNOWN_LOCATION means that we already |