summaryrefslogtreecommitdiffstats
path: root/gcc/fortran/error.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/fortran/error.c')
-rw-r--r--gcc/fortran/error.c28
1 files changed, 17 insertions, 11 deletions
diff --git a/gcc/fortran/error.c b/gcc/fortran/error.c
index 260733c8af4..b7b0fdb1bf6 100644
--- a/gcc/fortran/error.c
+++ b/gcc/fortran/error.c
@@ -118,8 +118,9 @@ error_string (const char *p)
static void error_printf (const char *, ...) ATTRIBUTE_PRINTF_1;
static void
-show_locus (int offset, locus * l)
+show_locus (int offset, locus * loc)
{
+ gfc_linebuf *lb;
gfc_file *f;
char c, *p;
int i, m;
@@ -127,20 +128,25 @@ show_locus (int offset, locus * l)
/* TODO: Either limit the total length and number of included files
displayed or add buffering of arbitrary number of characters in
error messages. */
- f = l->file;
- error_printf ("In file %s:%d\n", f->filename, l->lp->start_line + l->line);
- f = f->included_by;
- while (f != NULL)
+ lb = loc->lb;
+ f = lb->file;
+ error_printf ("In file %s:%d\n", f->filename, lb->linenum);
+
+ for (;;)
{
- error_printf (" Included at %s:%d\n", f->filename,
- f->loc.lp->start_line + f->loc.line);
+ i = f->inclusion_line;
+
f = f->included_by;
+ if (f == NULL) break;
+
+ error_printf (" Included at %s:%d\n", f->filename, i);
}
/* Show the line itself, taking care not to print more than what can
show up on the terminal. Tabs are converted to spaces. */
- p = l->lp->line[l->line] + offset;
+
+ p = lb->line + offset;
i = strlen (p);
if (i > terminal_width)
i = terminal_width - 1;
@@ -190,12 +196,12 @@ show_loci (locus * l1, locus * l2)
return;
}
- c1 = l1->nextc - l1->lp->line[l1->line];
+ c1 = l1->nextc - l1->lb->line;
c2 = 0;
if (l2 == NULL)
goto separate;
- c2 = l2->nextc - l2->lp->line[l2->line];
+ c2 = l2->nextc - l2->lb->line;
if (c1 < c2)
m = c2 - c1;
@@ -203,7 +209,7 @@ show_loci (locus * l1, locus * l2)
m = c1 - c2;
- if (l1->lp != l2->lp || l1->line != l2->line || m > terminal_width - 10)
+ if (l1->lb != l2->lb || m > terminal_width - 10)
goto separate;
offset = 0;
OpenPOWER on IntegriCloud