c-common.c (parse_in): Make a cpp_reader *.
authorNeil Booth <neil@gcc.gnu.org>
Thu, 7 Dec 2000 07:14:42 +0000 (07:14 +0000)
committerNeil Booth <neil@gcc.gnu.org>
Thu, 7 Dec 2000 07:14:42 +0000 (07:14 +0000)
        * c-common.c (parse_in): Make a cpp_reader *.
        * cppfiles.c (_cpp_fake_include): Remove.
        * cpphash.h: Similarly.
        * cpplib.c (do_line): Don't call _cpp_fake_include.  A valid
        #line always creates a callback; FC_RENAME if there are no
        #line flags.
        * fix-header.c (read_scan_file): cpp_push_buffer cannot fail.
        The first EOF must be our get_char buffer.

From-SVN: r38101

gcc/c-common.c
gcc/cppfiles.c
gcc/cpphash.h
gcc/cpplib.c
gcc/fix-header.c

index cdbc8aa..b42f320 100644 (file)
@@ -36,7 +36,7 @@ Boston, MA 02111-1307, USA.  */
 #include "diagnostic.h"
 #include "obstack.h"
 #include "cpplib.h"
-cpp_reader  parse_in;
+cpp_reader *parse_in;          /* Declared in c-lex.h.  */
 
 #undef WCHAR_TYPE_SIZE
 #define WCHAR_TYPE_SIZE TYPE_PRECISION (wchar_type_node)
index 0e924b3..8a943a1 100644 (file)
@@ -474,50 +474,6 @@ find_include_file (pfile, fname, search_start)
   return 0;
 }
 
-/* #line uses this to save artificial file names.  We have to stat the
-   file because an all_include_files entry is always either + or -,
-   there's no 'I don't know' value.  */
-const char *
-_cpp_fake_include (pfile, fname)
-     cpp_reader *pfile;
-     const char *fname;
-{
-  splay_tree_node nd;
-  struct include_file *file;
-  char *name;
-
-  file = find_include_file (pfile, fname, CPP_OPTION (pfile, quote_include));
-  if (file)
-    {
-      if (file->fd > 0)
-       {
-         close (file->fd);
-         file->fd = -1;
-       }
-      return file->name;
-    }
-
-  name = xstrdup (fname);
-  _cpp_simplify_pathname (name);
-
-  /* We cannot just blindly insert a node, because there's still the
-     chance that the node already exists but isn't on the search path.  */
-  nd = splay_tree_lookup (pfile->all_include_files, (splay_tree_key) name);
-  if (nd)
-    {
-      free (name);
-      return (const char *) nd->key;
-    }
-
-  file = xcnew (struct include_file);
-  file->name = name;
-  file->fd = -2;
-  splay_tree_insert (pfile->all_include_files, (splay_tree_key) name,
-                    (splay_tree_value) file);
-
-  return file->name;
-}
-
 /* Not everyone who wants to set system-header-ness on a buffer can
    see the details of struct include_file.  This is an exported interface
    because fix-header needs it.  */
index 2cab362..433b665 100644 (file)
@@ -233,7 +233,6 @@ extern int _cpp_compare_file_date       PARAMS ((cpp_reader *,
 extern void _cpp_report_missing_guards PARAMS ((cpp_reader *));
 extern void _cpp_init_includes         PARAMS ((cpp_reader *));
 extern void _cpp_cleanup_includes      PARAMS ((cpp_reader *));
-extern const char *_cpp_fake_include   PARAMS ((cpp_reader *, const char *));
 extern void _cpp_pop_file_buffer       PARAMS ((cpp_reader *, cpp_buffer *));
 
 /* In cppexp.c */
index 26c2ece..537e477 100644 (file)
@@ -721,7 +721,7 @@ do_line (pfile)
   cpp_buffer *buffer = pfile->buffer;
   const char *filename = buffer->nominal_fname;
   unsigned int lineno = buffer->lineno;
-  enum cpp_fc_reason reason = (enum cpp_fc_reason) -1;
+  enum cpp_fc_reason reason = FC_RENAME;
   unsigned long new_lineno;
   unsigned int cap;
   cpp_token token;
@@ -749,19 +749,14 @@ do_line (pfile)
       unsigned int len;
       int action_number = 0;
 
+      /* FIXME: memory leak.  */
       len = token.val.str.len;
-      fname = alloca (len + 1);
+      fname = xmalloc (len + 1);
       memcpy (fname, token.val.str.text, len);
       fname[len] = '\0';
     
-      if (strcmp (fname, buffer->nominal_fname))
-       {
-         reason = FC_RENAME;
-         if (!strcmp (fname, buffer->inc->name))
-           buffer->nominal_fname = buffer->inc->name;
-         else
-           buffer->nominal_fname = _cpp_fake_include (pfile, fname);
-       }
+      _cpp_simplify_pathname (fname);
+      buffer->nominal_fname = fname;
 
       if (read_line_number (pfile, &action_number) != 0)
        {
@@ -803,8 +798,7 @@ do_line (pfile)
 
   /* Our line number is incremented after the directive is processed.  */
   buffer->lineno = new_lineno - 1;
-  if (reason != (enum cpp_fc_reason) -1)
-    _cpp_do_file_change (pfile, reason, filename, lineno);
+  _cpp_do_file_change (pfile, reason, filename, lineno);
 }
 
 /* Arrange the file_change callback.  The assumption is that the
index 8727512..281e4c4 100644 (file)
@@ -649,26 +649,21 @@ read_scan_file (in_fname, argc, argv)
     {
       static const unsigned char getchar_call[] = "getchar();";
       int seen_filbuf = 0;
-      cpp_buffer *buf = CPP_BUFFER (scan_in);
-      if (cpp_push_buffer (scan_in, getchar_call,
-                          sizeof(getchar_call) - 1) == NULL)
-       return;
 
       /* Scan the macro expansion of "getchar();".  */
+      cpp_push_buffer (scan_in, getchar_call, sizeof(getchar_call) - 1);
       for (;;)
        {
          cpp_token t;
 
          cpp_get_token (scan_in, &t);
          if (t.type == CPP_EOF)
-           {
-             cpp_pop_buffer (scan_in);
-             if (CPP_BUFFER (scan_in) == buf)
-               break;
-           }
+           break;
          else if (cpp_ideq (&t, "_filbuf"))
            seen_filbuf++;
        }
+      cpp_pop_buffer (scan_in);
+
       if (seen_filbuf)
        {
          int need_filbuf = !SEEN (fn) && !REQUIRED (fn);