diff options
author | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-02-18 22:02:39 +0000 |
---|---|---|
committer | bothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4> | 2004-02-18 22:02:39 +0000 |
commit | 6e04daf1453c7f763647be12ad9123fdb4b9e385 (patch) | |
tree | e807c23671fa4dd53228ec168fcfa7e99628f896 /gcc/c-ppoutput.c | |
parent | 20de033908c0f2ec1f09c7d5d56db3d24c222dd5 (diff) | |
download | gcc-6e04daf1453c7f763647be12ad9123fdb4b9e385.tar.gz |
* cpphash.h (struct cpp_buffer): Restore return_at_eof field. This
partly reverts my 2003-10-01 change, because we're back to logically
including <command line> inside the main line.
* cpplex.c (_cpp_get_fresh_line): Check return_at_eof field.
* cppmacro.c (cpp_scan_nooutput): Set return_at_eof of current buffer.
Fixes PR preprocessor/14103.
* cppfiles.c (_cpp_stack_include): When appropriate decrement
line_table's highest_location, fixing LAST_SOURCE_LINE_LOCATION.
(cpp_push_include): Don't need to increment pfile's line field.
* line-map.h (LAST_SOURCE_LINE_LOCATION): Only decrement by 1.
* c-ppoutput.c (print struct): New first_time field.
(init_pp_output): Set print.first_time.
(pp_file_change): Use print.first_time, rather than MAIN_FILE_P,
which is set also for (say) <command line>. Clear print.first_time.
* cppfiles.c (struct _cpp_file): Comment and type for pch field
does not match the code, so fix both.
(should_stack_file): Inline include_pch_p function.
(include_pch_p): Remove pointless function.
* cpphash.h (struct cpp_buffer): Remove unused search_cached field.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@78049 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/c-ppoutput.c')
-rw-r--r-- | gcc/c-ppoutput.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/c-ppoutput.c b/gcc/c-ppoutput.c index 1dba766b42a..24be879acb3 100644 --- a/gcc/c-ppoutput.c +++ b/gcc/c-ppoutput.c @@ -36,6 +36,7 @@ static struct const cpp_token *source; /* Source token for spacing. */ int src_line; /* Line number currently being written. */ unsigned char printed; /* Nonzero if something output at line. */ + bool first_time; /* pp_file_change hasn't been called yet. */ } print; /* General output routines. */ @@ -118,6 +119,7 @@ init_pp_output (FILE *out_stream) print.printed = 0; print.prev = 0; print.outf = out_stream; + print.first_time = 1; } /* Writes out the preprocessed file, handling spacing and paste @@ -365,12 +367,12 @@ pp_file_change (const struct line_map *map) if (map != NULL) { - /* First time? */ - if (MAIN_FILE_P (map)) + if (print.first_time) { /* Avoid printing foo.i when the main file is foo.c. */ if (!cpp_get_options (parse_in)->preprocessed) print_line (map->start_location, flags); + print.first_time = 0; } else { |