aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/cpplex.c31
2 files changed, 21 insertions, 15 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index dbe08c9..d4a336f 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2000-06-28 Jakub Jelinek <jakub@redhat.com>
+
+ * cpplex.c (output_line_command): Output correct #line if a header
+ is including itself and is not protected against multiple inclusion.
+
2000-06-28 Zack Weinberg <zack@wolery.cumb.org>
* cppfiles.c (open_include_file): If open(2) returns EMFILE or
diff --git a/gcc/cpplex.c b/gcc/cpplex.c
index b7f6da5..6249fd7 100644
--- a/gcc/cpplex.c
+++ b/gcc/cpplex.c
@@ -289,25 +289,26 @@ output_line_command (pfile, print, line)
if (CPP_OPTION (pfile, no_line_commands))
return;
- /* Determine whether the current filename has changed, and if so,
- how. 'nominal_fname' values are unique, so they can be compared
- by comparing pointers. */
- if (ip->nominal_fname == print->last_fname)
- change = same;
- else
+ if (pfile->buffer_stack_depth == print->last_bsd)
{
- if (pfile->buffer_stack_depth == print->last_bsd)
+ /* Determine whether the current filename has changed, and if so,
+ how. 'nominal_fname' values are unique, so they can be compared
+ by comparing pointers. */
+ if (ip->nominal_fname == print->last_fname)
+ change = same;
+ else
change = rname;
+ }
+ else
+ {
+ if (pfile->buffer_stack_depth > print->last_bsd)
+ change = enter;
else
- {
- if (pfile->buffer_stack_depth > print->last_bsd)
- change = enter;
- else
- change = leave;
- print->last_bsd = pfile->buffer_stack_depth;
- }
- print->last_fname = ip->nominal_fname;
+ change = leave;
+ print->last_bsd = pfile->buffer_stack_depth;
}
+ print->last_fname = ip->nominal_fname;
+
/* If the current file has not changed, we can output a few newlines
instead if we want to increase the line number by a small amount.
We cannot do this if print->lineno is zero, because that means we