aboutsummaryrefslogtreecommitdiff
path: root/gcc/cppmain.c
diff options
context:
space:
mode:
authorNeil Booth <neil@daikokuya.demon.co.uk>2001-08-21 06:20:18 +0000
committerNeil Booth <neil@gcc.gnu.org>2001-08-21 06:20:18 +0000
commitd7bc7a9850ac55871f1108c491585118e10afd04 (patch)
treed3294a0e95ec060c7d36c19a66723166c94ce0f9 /gcc/cppmain.c
parentbb1a503c19ca810ff94db1674cbe607f903d1ffc (diff)
downloadgcc-d7bc7a9850ac55871f1108c491585118e10afd04.zip
gcc-d7bc7a9850ac55871f1108c491585118e10afd04.tar.gz
gcc-d7bc7a9850ac55871f1108c491585118e10afd04.tar.bz2
cpphash.h (_cpp_push_next_buffer): New.
* cpphash.h (_cpp_push_next_buffer): New. * cppinit.c (do_includes): Remove. (push_include, free_chain, _cpp_push_next_buffer): New. (cpp_start_read): Use them to rework command line option handling. (cpp_handle_option): Combine handling of -include and -imacros. * cpplex.c (_cpp_lex_token): Push a new -include buffer if appropriate. Always insert missing \n at EOF. * cpplib.c (start_directive): Get the directive position right. * cppmain.c (cb_file_change): Always print the first line, unless preprocessed. From-SVN: r45070
Diffstat (limited to 'gcc/cppmain.c')
-rw-r--r--gcc/cppmain.c15
1 files changed, 10 insertions, 5 deletions
diff --git a/gcc/cppmain.c b/gcc/cppmain.c
index b116615..b710dad 100644
--- a/gcc/cppmain.c
+++ b/gcc/cppmain.c
@@ -399,11 +399,17 @@ cb_file_change (pfile, map)
cpp_reader *pfile ATTRIBUTE_UNUSED;
const struct line_map *map;
{
- /* Not first time? */
- if (print.map)
- {
- const char *flags = "";
+ const char *flags = "";
+ /* First time? */
+ if (print.map == NULL)
+ {
+ /* Avoid printing foo.i when the main file is foo.c. */
+ if (!options->preprocessed)
+ print_line (map, map->from_line, flags);
+ }
+ else
+ {
/* Bring current file to correct line when entering a new file. */
if (map->reason == LC_ENTER)
maybe_print_line (map - 1, map->from_line - 1);
@@ -412,7 +418,6 @@ cb_file_change (pfile, map)
flags = " 1";
else if (map->reason == LC_LEAVE)
flags = " 2";
-
print_line (map, map->from_line, flags);
}