* cppfiles.c (stack_include_file): Don't handle -H here.
authorneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 21 Aug 2001 21:17:48 +0000 (21:17 +0000)
committerneil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 21 Aug 2001 21:17:48 +0000 (21:17 +0000)
* cppinit.c (cpp_start_read): Set include tracing after
cpp_post_options and after stacking the main file.
* line-map.c (trace_include): New.
(init_line_maps, add_line_map): Update.
* line-map.h (struct line_maps): New member trace_includes.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45084 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/cppfiles.c
gcc/cppinit.c
gcc/line-map.c
gcc/line-map.h

index 58889c7..04b2d0c 100644 (file)
@@ -1,5 +1,14 @@
 2001-08-21  Neil Booth  <neil@daikokuya.demon.co.uk>
 
+       * cppfiles.c (stack_include_file): Don't handle -H here.
+       * cppinit.c (cpp_start_read): Set include tracing after
+       cpp_post_options and after stacking the main file.
+       * line-map.c (trace_include): New.
+       (init_line_maps, add_line_map): Update.
+       * line-map.h (struct line_maps): New member trace_includes.
+
+2001-08-21  Neil Booth  <neil@daikokuya.demon.co.uk>
+
        * cppfiles.c (stack_include_file): Harmonize system headerness tests.
        * cppfiles.c (stack_include_file): Only stack a file if there
        is something to do.  Return a boolean indicating whether a
index da244be..1d60d36 100644 (file)
@@ -313,18 +313,8 @@ stack_include_file (pfile, inc)
     }
 
   if (pfile->buffer)
-    {
-      /* We don't want MI guard advice for the main file.  */
-      inc->include_count++;
-
-      /* Handle -H option.  */
-      if (CPP_OPTION (pfile, print_include_names))
-       {
-         for (fp = pfile->buffer; fp; fp = fp->prev)
-           putc ('.', stderr);
-         fprintf (stderr, " %s\n", inc->name);
-       }
-    }
+    /* We don't want MI guard advice for the main file.  */
+    inc->include_count++;
 
   /* Push a buffer.  */
   fp = cpp_push_buffer (pfile, inc->buffer, inc->st.st_size, BUF_FILE, 0);
index 0c4aa01..b57910c 100644 (file)
@@ -939,6 +939,11 @@ cpp_start_read (pfile, fname)
   if (!_cpp_read_file (pfile, fname))
     return 0;
 
+  /* Set this after cpp_post_options so the client can change the
+     option if it wishes, and after stacking the main file so we don't
+     trace the main file.  */
+  pfile->line_maps.trace_includes = CPP_OPTION (pfile, print_include_names);
+
   /* Install builtins and process command line macros etc. in the order
      they appeared, but only if not already preprocessed.  */
   if (! CPP_OPTION (pfile, preprocessed))
index d1df557..b2809b1 100644 (file)
@@ -25,6 +25,9 @@ Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
 #include "line-map.h"
 #include "intl.h"
 
+static void trace_include
+  PARAMS ((const struct line_maps *, const struct line_map *));
+
 /* Initialize a line map set.  */
 
 void
@@ -35,6 +38,7 @@ init_line_maps (set)
   set->allocated = 0;
   set->used = 0;
   set->last_listed = -1;
+  set->trace_includes = false;
 }
 
 /* Free a line map set.  */
@@ -136,8 +140,11 @@ add_line_map (set, reason, sysp, from_line, to_file, to_line)
     map->included_from = map[-1].included_from;
   else if (reason == LC_LEAVE)
     map->included_from = INCLUDED_FROM (set, map - 1)->included_from;
-
   set->used++;
+
+  if (reason == LC_ENTER && set->trace_includes)
+    trace_include (set, map);
+
   return map;
 }
 
@@ -207,3 +214,17 @@ print_containing_files (set, map)
 
   fputs (":\n", stderr);
 }
+
+/* Print an include trace, for e.g. the -H option of the preprocessor.  */
+
+static void
+trace_include (set, map)
+     const struct line_maps *set;
+     const struct line_map *map;
+{
+  const struct line_map *m;
+
+  for (m = map; !MAIN_FILE_P (m); m = INCLUDED_FROM (set, m))
+    putc ('.', stderr);
+  fprintf (stderr, " %s\n", map->to_file);
+}
index ed02420..a226a1f 100644 (file)
@@ -59,6 +59,9 @@ struct line_maps
      LAST_LISTED as the topmost including file.  -1 indicates nothing
      has been listed yet.  */
   int last_listed;
+
+  /* If true, prints an include trace a la -H.  */
+  bool trace_includes;
 };
 
 /* Initialize a line map set.  */