gkeating    03/01/02 13:49:40

  Modified:    live/gcc3/gcc ChangeLog cppfiles.c cpphash.h cpplib.c
                        cpppch.c dbxout.c ggc.h tree.h
               live/gcc3/gcc/doc invoke.texi
               live/gcc3/gcc/testsuite ChangeLog
  Added:       live/gcc3/gcc/testsuite/gcc.dg/pch cpp-1.c cpp-1.h cpp-2.c
                        cpp-2.h
  Log:
  Merge from FSF:
  2002-12-24  Geoffrey Keating  <[EMAIL PROTECTED]>
  
        * cpplib.c (count_registered_pragmas): New function.
        (save_registered_pragmas): New function.
        (_cpp_save_pragma_names): New function.
        (restore_registered_pragmas): New function.
        (_cpp_restore_pragma_names): New function.
        * cpphash.h (_cpp_save_pragma_names): Prototype.
        (_cpp_restore_pragma_names): Likewise.
        * cpppch.c (struct save_macro_item): Split from save_macro_data.
        (struct save_macro_data): New field 'saved_pragmas'.
        (save_macros): Update for changes to struct save_macro_data.
        (cpp_prepare_state): Call _cpp_save_pragma_names, update
        for changes to struct save_macro_data.
        (cpp_read_state): Call _cpp_restore_pragma_names, update
        for changes to struct save_macro_data.
  
        * cpppch.c (cpp_read_state): Restore the hashtable references
        in the cpp_reader.
  
        * tree.h (built_in_decls): Mark for PCH.
  
        * dbxout.c (lastfile): Don't mark for PCH.
  
        * ggc.h: Document PCH calls into memory managers.
  
  2002-12-23  Geoffrey Keating  <[EMAIL PROTECTED]>
  
        * gcc.dg/pch/cpp-1.h: New.
        * gcc.dg/pch/cpp-1.c: New.
        * gcc.dg/pch/cpp-2.h: New.
        * gcc.dg/pch/cpp-2.c: New.
  
  2002-12-18  Geoffrey Keating  <[EMAIL PROTECTED]>
  
        * doc/invoke.texi (Precompiled Headers): Document the
        directory form of PCH.
        * cppfiles.c (validate_pch): New function.
        (open_file_pch): Search suitably-named directories for PCH files.
  
  Revision  Changes    Path
  1.24      +33 -0     src/live/gcc3/gcc/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/ChangeLog,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- ChangeLog 2002/12/18 00:31:48     1.23
  +++ ChangeLog 2003/01/02 21:49:32     1.24
  @@ -1,3 +1,36 @@
  +2002-12-24  Geoffrey Keating  <[EMAIL PROTECTED]>
  +
  +     * cpplib.c (count_registered_pragmas): New function.
  +     (save_registered_pragmas): New function.
  +     (_cpp_save_pragma_names): New function.
  +     (restore_registered_pragmas): New function.
  +     (_cpp_restore_pragma_names): New function.
  +     * cpphash.h (_cpp_save_pragma_names): Prototype.
  +     (_cpp_restore_pragma_names): Likewise.
  +     * cpppch.c (struct save_macro_item): Split from save_macro_data.
  +     (struct save_macro_data): New field 'saved_pragmas'.
  +     (save_macros): Update for changes to struct save_macro_data.
  +     (cpp_prepare_state): Call _cpp_save_pragma_names, update
  +     for changes to struct save_macro_data.
  +     (cpp_read_state): Call _cpp_restore_pragma_names, update
  +     for changes to struct save_macro_data.
  +
  +     * cpppch.c (cpp_read_state): Restore the hashtable references
  +     in the cpp_reader.
  +     
  +     * tree.h (built_in_decls): Mark for PCH.
  +
  +     * dbxout.c (lastfile): Don't mark for PCH.
  +
  +     * ggc.h: Document PCH calls into memory managers.
  +
  +2002-12-18  Geoffrey Keating  <[EMAIL PROTECTED]>
  +
  +     * doc/invoke.texi (Precompiled Headers): Document the
  +     directory form of PCH.
  +     * cppfiles.c (validate_pch): New function.
  +     (open_file_pch): Search suitably-named directories for PCH files.
  +
   2002-12-11  Geoffrey Keating  <[EMAIL PROTECTED]>
   
        * gengtype.c (struct write_types_data): Add reorder_note_routine field.
  
  
  
  1.58      +63 -8     src/live/gcc3/gcc/cppfiles.c
  
  Index: cppfiles.c
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/cppfiles.c,v
  retrieving revision 1.57
  retrieving revision 1.58
  diff -u -r1.57 -r1.58
  --- cppfiles.c        2002/12/18 00:31:51     1.57
  +++ cppfiles.c        2003/01/02 21:49:34     1.58
  @@ -22,6 +22,7 @@
   
   #include "config.h"
   #include "system.h"
  +#include <dirent.h>
   #include "cpplib.h"
   #include "cpphash.h"
   #include "intl.h"
  @@ -179,6 +180,9 @@
        find_include_file PARAMS ((cpp_reader *, const cpp_token *,
                                   enum include_type));
   static struct include_file *open_file PARAMS ((cpp_reader *, const char *));
  +static struct include_file *validate_pch PARAMS ((cpp_reader *,
  +                                               const char *,
  +                                               const char *));
   static struct include_file *open_file_pch PARAMS ((cpp_reader *, 
                                                   const char *));
   static int read_include_file PARAMS ((cpp_reader *, struct include_file *));
  @@ -395,6 +399,30 @@
     return 0;
   }
   
  +static struct include_file *
  +validate_pch (pfile, filename, pchname)
  +     cpp_reader *pfile;
  +     const char *filename;
  +     const char *pchname;
  +{
  +  struct include_file * file;
  +  
  +  file = open_file (pfile, pchname);
  +  if (file == NULL)
  +    return NULL;
  +  if ((file->pch & 2) == 0)
  +    file->pch = pfile->cb.valid_pch (pfile, pchname, file->fd);
  +  if (INCLUDE_PCH_P (file))
  +    {
  +      file->header_name = _cpp_simplify_pathname (xstrdup (filename));
  +      return file;
  +    }
  +  close (file->fd);
  +  file->fd = -1;
  +  return NULL;
  +}
  +
  +
   /* Like open_file, but also look for a precompiled header if (a) one exists
      and (b) it is valid.  */
   static struct include_file *
  @@ -408,20 +436,47 @@
         size_t namelen = strlen (filename);
         char *pchname = alloca (namelen + 5);
         struct include_file * file;
  +      splay_tree_node nd;
         
         memcpy (pchname, filename, namelen);
         memcpy (pchname + namelen, ".pch", 5);
  -      file = open_file (pfile, pchname);
  +
  +      nd = find_or_create_entry (pfile, pchname);
  +      file = (struct include_file *) nd->value;
  +
         if (file != NULL)
        {
  -       if ((file->pch & 2) == 0)
  -         file->pch = pfile->cb.valid_pch (pfile, pchname, file->fd);
  -       file->header_name = xstrdup (filename);
  -       _cpp_simplify_pathname (file->header_name);
  -       if (INCLUDE_PCH_P (file))
  +       if (stat (file->name, &file->st) == 0 && S_ISDIR (file->st.st_mode))
  +         {
  +           DIR * thedir;
  +           struct dirent *d;
  +           size_t subname_len = namelen + 64;
  +           char *subname = xmalloc (subname_len);
  +           
  +           thedir = opendir (pchname);
  +           if (thedir == NULL)
  +             return NULL;
  +           memcpy (subname, pchname, namelen + 4);
  +           subname[namelen+4] = '/';
  +           while ((d = readdir (thedir)) != NULL)
  +             {
  +               if (strlen (d->d_name) + namelen + 7 > subname_len)
  +                 {
  +                   subname_len = strlen (d->d_name) + namelen + 64;
  +                   subname = xrealloc (subname, subname_len);
  +                 }
  +               strcpy (subname + namelen + 5, d->d_name);
  +               file = validate_pch (pfile, filename, subname);
  +               if (file)
  +                 break;
  +             }
  +           closedir (thedir);
  +           free (subname);
  +         }
  +       else
  +         file = validate_pch (pfile, filename, pchname);
  +       if (file)
            return file;
  -       close (file->fd);
  -       file->fd = -1;
        }
       }
     return open_file (pfile, filename);
  
  
  
  1.24      +2 -0      src/live/gcc3/gcc/cpphash.h
  
  Index: cpphash.h
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/cpphash.h,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- cpphash.h 2002/12/18 00:31:51     1.23
  +++ cpphash.h 2003/01/02 21:49:34     1.24
  @@ -554,6 +554,8 @@
   extern int _cpp_test_assertion PARAMS ((cpp_reader *, unsigned int *));
   extern int _cpp_handle_directive PARAMS ((cpp_reader *, int));
   extern void _cpp_define_builtin      PARAMS ((cpp_reader *, const char *));
  +extern char ** _cpp_save_pragma_names PARAMS ((cpp_reader *));
  +extern void _cpp_restore_pragma_names PARAMS ((cpp_reader *, char **));
   extern void _cpp_do__Pragma  PARAMS ((cpp_reader *));
   extern void _cpp_init_directives PARAMS ((cpp_reader *));
   extern void _cpp_init_internal_pragmas PARAMS ((cpp_reader *));
  
  
  
  1.45      +84 -0     src/live/gcc3/gcc/cpplib.c
  
  Index: cpplib.c
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/cpplib.c,v
  retrieving revision 1.44
  retrieving revision 1.45
  diff -u -r1.44 -r1.45
  --- cpplib.c  2002/12/08 00:37:43     1.44
  +++ cpplib.c  2003/01/02 21:49:34     1.45
  @@ -133,6 +133,11 @@
   static struct pragma_entry *insert_pragma_entry
     PARAMS ((cpp_reader *, struct pragma_entry **, const cpp_hashnode *,
           pragma_cb));
  +static int count_registered_pragmas  PARAMS ((struct pragma_entry *));
  +static char ** save_registered_pragmas 
  +  PARAMS ((struct pragma_entry *, char **));
  +static char ** restore_registered_pragmas 
  +  PARAMS ((cpp_reader *, struct pragma_entry *, char **));
   static void do_pragma_once   PARAMS ((cpp_reader *));
   static void do_pragma_poison PARAMS ((cpp_reader *));
   static void do_pragma_system_header  PARAMS ((cpp_reader *));
  @@ -1146,6 +1151,85 @@
     cpp_register_pragma (pfile, "GCC", "poison", do_pragma_poison);
     cpp_register_pragma (pfile, "GCC", "system_header", do_pragma_system_header);
     cpp_register_pragma (pfile, "GCC", "dependency", do_pragma_dependency);
  +}
  +
  +/* Return the number of registered pragmas in PE.  */
  +
  +static int
  +count_registered_pragmas (pe)
  +     struct pragma_entry *pe;
  +{
  +  int ct = 0;
  +  for (; pe != NULL; pe = pe->next)
  +    {
  +      if (pe->is_nspace)
  +     ct += count_registered_pragmas (pe->u.space);
  +      ct++;
  +    }
  +  return ct;
  +}
  +
  +/* Save into SD the names of the registered pragmas referenced by PE,
  +   and return a pointer to the next free space in SD.  */
  +
  +static char **
  +save_registered_pragmas (pe, sd)
  +     struct pragma_entry *pe;
  +     char **sd;
  +{
  +  for (; pe != NULL; pe = pe->next)
  +    {
  +      if (pe->is_nspace)
  +     sd = save_registered_pragmas (pe->u.space, sd);
  +      *sd++ = xmemdup (HT_STR (&pe->pragma->ident),
  +                    HT_LEN (&pe->pragma->ident),
  +                    HT_LEN (&pe->pragma->ident) + 1);
  +    }
  +  return sd;
  +}
  +
  +/* Return a newly-allocated array which saves the names of the
  +   registered pragmas.  */
  +
  +char **
  +_cpp_save_pragma_names (pfile)
  +     cpp_reader *pfile;
  +{
  +  int ct = count_registered_pragmas (pfile->pragmas);
  +  char **result = xnewvec (char *, ct);
  +  (void) save_registered_pragmas (pfile->pragmas, result);
  +  return result;
  +}
  +
  +/* Restore from SD the names of the registered pragmas referenced by PE,
  +   and return a pointer to the next unused name in SD.  */
  +
  +static char **
  +restore_registered_pragmas (pfile, pe, sd)
  +     cpp_reader *pfile;
  +     struct pragma_entry *pe;
  +     char **sd;
  +{
  +  for (; pe != NULL; pe = pe->next)
  +    {
  +      if (pe->is_nspace)
  +     sd = restore_registered_pragmas (pfile, pe->u.space, sd);
  +      pe->pragma = cpp_lookup (pfile, U *sd, strlen (*sd));
  +      free (*sd);
  +      sd++;
  +    }
  +  return sd;
  +}
  +
  +/* Restore the names of the registered pragmas from SAVED.  */
  +
  +void
  +_cpp_restore_pragma_names (pfile, saved)
  +     cpp_reader *pfile;
  +     char **saved;
  +{
  +  (void) restore_registered_pragmas (pfile, pfile->pragmas, saved);
  +  free (saved);
   }
   
   /* Pragmata handling.  We handle some, and pass the rest on to the
  
  
  
  1.2       +50 -23    src/live/gcc3/gcc/cpppch.c
  
  Index: cpppch.c
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/cpppch.c,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- cpppch.c  2002/12/18 00:31:52     1.1
  +++ cpppch.c  2003/01/02 21:49:34     1.2
  @@ -480,12 +480,20 @@
      This code assumes that there might be hundreds, but not thousands of
      existing definitions.  */
   
  -struct save_macro_data {
  -  struct save_macro_data *next;
  -  size_t count;
  +struct save_macro_item {
  +  struct save_macro_item *next;
     struct cpp_hashnode macs[64];
   };
   
  +struct save_macro_data 
  +{
  +  struct save_macro_item *macros;
  +  size_t count;
  +  char **saved_pragmas;
  +};
  +
  +/* Save the definition of a single macro, so that it will persist across
  +   a PCH restore.  */
   
   static int 
   save_macros (r, h, data_p)
  @@ -493,20 +501,20 @@
        cpp_hashnode *h;
        void *data_p;
   {
  -  struct save_macro_data **data = (struct save_macro_data **)data_p;
  +  struct save_macro_data *data = (struct save_macro_data *)data_p;
     if (h->type != NT_VOID
         && (h->flags & NODE_BUILTIN) == 0)
       {
         cpp_hashnode *save;
  -      if ((*data)->count == ARRAY_SIZE ((*data)->macs))
  +      if (data->count == ARRAY_SIZE (data->macros->macs))
        {
  -       struct save_macro_data *d = *data;
  -       *data = xmalloc (sizeof (struct save_macro_data));
  -       (*data)->next = d;
  -       (*data)->count = 0;
  +       struct save_macro_item *d = data->macros;
  +       data->macros = xmalloc (sizeof (struct save_macro_item));
  +       data->macros->next = d;
  +       data->count = 0;
        }
  -      save = (*data)->macs + (*data)->count;
  -      (*data)->count++;
  +      save = data->macros->macs + data->count;
  +      data->count++;
         memcpy (save, h, sizeof (struct cpp_hashnode));
         HT_STR (&save->ident) = xmemdup (HT_STR (HT_NODE (save)),
                                       HT_LEN (HT_NODE (save)),
  @@ -515,6 +523,9 @@
     return 1;
   }
   
  +/* Prepare to restore the state, by saving the currently-defined
  +   macros in 'data'.  */
  +
   void
   cpp_prepare_state (r, data)
        cpp_reader *r;
  @@ -522,13 +533,13 @@
   {
     struct save_macro_data *d = xmalloc (sizeof (struct save_macro_data));
     
  -  d->next = NULL;
  -  d->count = 0;
  -  cpp_forall_identifiers (r, save_macros, &d);
  +  d->macros = NULL;
  +  d->count = ARRAY_SIZE (d->macros->macs);
  +  cpp_forall_identifiers (r, save_macros, d);
  +  d->saved_pragmas = _cpp_save_pragma_names (r);
     *data = d;
   }
   
  -
   /* Erase all the existing macros and assertions.  */
   
   static int 
  @@ -561,21 +572,32 @@
     size_t defnlen = 256;
     unsigned char *defn = xmalloc (defnlen);
     struct lexer_state old_state;
  -  struct save_macro_data *d;
  -  size_t i;
  +  struct save_macro_item *d;
  +  size_t i, mac_count;
     int saved_line = r->line;
   
  -  /* First, erase all the existing hashtable entries for macros.  At
  -     this point, they're all from the PCH file, and their pointers
  -     won't be valid.  */
  +  /* Erase all the existing hashtable entries for macros.  At this
  +     point, they're all from the PCH file, and their pointers won't be
  +     valid.  */
     cpp_forall_identifiers (r, reset_ht, NULL);
   
  +  /* Restore spec_nodes, which will be full of references to the old 
  +     hashtable entries and so will now be invalid.  */
  +  {
  +    struct spec_nodes *s = &r->spec_nodes;
  +    s->n_defined     = cpp_lookup (r, DSC("defined"));
  +    s->n_true                = cpp_lookup (r, DSC("true"));
  +    s->n_false               = cpp_lookup (r, DSC("false"));
  +    s->n__VA_ARGS__     = cpp_lookup (r, DSC("__VA_ARGS__"));
  +  }
  +
     /* Run through the carefully-saved macros, insert them.  */
  -  d = data;
  +  d = data->macros;
  +  mac_count = data->count;
     while (d)
       {
  -      struct save_macro_data *nextd;
  -      for (i = 0; i < d->count; i++)
  +      struct save_macro_item *nextd;
  +      for (i = 0; i < mac_count; i++)
        {
          cpp_hashnode *h;
          
  @@ -589,7 +611,12 @@
         nextd = d->next;
         free (d);
         d = nextd;
  +      mac_count = ARRAY_SIZE (d->macs);
       }
  +
  +  _cpp_restore_pragma_names (r, data->saved_pragmas);
  +
  +  free (data);
   
     old_state = r->state;
   
  
  
  
  1.39      +1 -1      src/live/gcc3/gcc/dbxout.c
  
  Index: dbxout.c
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/dbxout.c,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- dbxout.c  2002/12/18 00:31:52     1.38
  +++ dbxout.c  2003/01/02 21:49:34     1.39
  @@ -344,7 +344,7 @@
   
   /* Last source file name mentioned in a NOTE insn.  */
   
  -static GTY(()) const char *lastfile;
  +static const char *lastfile;
   
   /* Current working directory.  */
   
  
  
  
  1.14      +26 -3     src/live/gcc3/gcc/ggc.h
  
  Index: ggc.h
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/ggc.h,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- ggc.h     2002/12/18 00:31:56     1.13
  +++ ggc.h     2003/01/02 21:49:34     1.14
  @@ -133,12 +133,14 @@
   extern void gt_pch_n_S                       PARAMS ((const void *));
   extern void gt_ggc_m_S                       PARAMS ((void *));
   
  +/* Initialise the string pool.  */
  +extern void init_stringpool  PARAMS ((void));
   
  -/* A GC implementation must provide these functions.  */
  +/* A GC implementation must provide these functions.  They are internal
  +   to the GC system.  */
   
   /* Initialize the garbage collector.  */
   extern void init_ggc         PARAMS ((void));
  -extern void init_stringpool  PARAMS ((void));
   
   /* Start a new GGC context.  Memory allocated in previous contexts
      will not be collected while the new context is active.  */
  @@ -150,23 +152,44 @@
   
   struct ggc_pch_data;
   
  +/* Return a new ggc_pch_data structure.  */
   extern struct ggc_pch_data *init_ggc_pch PARAMS ((void));
  +
  +/* The second parameter and third parameters give the address and size
  +   of an object.  Update the ggc_pch_data structure with as much of
  +   that information as is necessary.  */
   extern void ggc_pch_count_object     PARAMS ((struct ggc_pch_data *,
                                                 void *, size_t));
  +
  +/* Return the total size of the data to be written to hold all 
  +   the objects previously passed to ggc_pch_count_object.  */
   extern size_t ggc_pch_total_size     PARAMS ((struct ggc_pch_data *));
  +
  +/* The objects, when read, will most likely be at the address
  +   in the second parameter.  */
   extern void ggc_pch_this_base                PARAMS ((struct ggc_pch_data *,
                                                 void *));
  +
  +/* Assuming that the objects really do end up at the address
  +   passed to ggc_pch_this_base, return the address of this object.  */
   extern char *ggc_pch_alloc_object    PARAMS ((struct ggc_pch_data *,
                                                 void *, size_t));
  +
  +/* Write out any initial information required.  */
   extern void ggc_pch_prepare_write    PARAMS ((struct ggc_pch_data *,
                                                 FILE *));
  +/* Write out this object, including any padding.  */
   extern void ggc_pch_write_object     PARAMS ((struct ggc_pch_data *,
                                                 FILE *, void *, void *,
                                                 size_t));
  +/* All objects have been written, write out any final information
  +   required.  */
   extern void ggc_pch_finish           PARAMS ((struct ggc_pch_data *,
                                                 FILE *));
   
  -extern void ggc_pch_read             PARAMS ((FILE *, void *));
  +/* A PCH file has just been read in at the address specified second
  +   parameter.  Set up the GC implementation for the new objects.  */
  +extern void ggc_pch_read PARAMS ((FILE *, void *));
   
   
   /* Allocation.  */
  
  
  
  1.63      +1 -1      src/live/gcc3/gcc/tree.h
  
  Index: tree.h
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/tree.h,v
  retrieving revision 1.62
  retrieving revision 1.63
  diff -u -r1.62 -r1.63
  --- tree.h    2002/12/18 00:31:57     1.62
  +++ tree.h    2003/01/02 21:49:34     1.63
  @@ -98,7 +98,7 @@
   extern const char *const built_in_names[(int) END_BUILTINS];
   
   /* An array of _DECL trees for the above.  */
  -extern tree built_in_decls[(int) END_BUILTINS];
  +extern GTY(()) tree built_in_decls[(int) END_BUILTINS];
   
   /* The definition of tree nodes fills the next several pages.  */
   
  
  
  
  1.47      +9 -0      src/live/gcc3/gcc/doc/invoke.texi
  
  Index: invoke.texi
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/doc/invoke.texi,v
  retrieving revision 1.46
  retrieving revision 1.47
  diff -u -r1.46 -r1.47
  --- invoke.texi       2002/12/18 00:32:20     1.46
  +++ invoke.texi       2003/01/02 21:49:37     1.47
  @@ -11104,6 +11104,15 @@
   have guards against multiple inclusion, they will be skipped because
   they've already been included (in the precompiled header).
   
  +If you need to precompile the same header file for different
  +languages, targets, or compiler options, you can instead make a
  +@emph{directory} named like @file{all.h.pch}, and put each precompiled
  +header in the directory.  (It doesn't matter what you call the files
  +in the directory, every precompiled header in the directory will be
  +considered.)  The first precompiled header encountered in the
  +directory that is valid for this compilation will be used; they're
  +searched in no particular order.
  +
   There are many other possibilities, limited only by your imagination,
   good sense, and the constraints of your build system.
   
  
  
  
  1.23      +7 -0      src/live/gcc3/gcc/testsuite/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/Darwin/src/live/gcc3/gcc/testsuite/ChangeLog,v
  retrieving revision 1.22
  retrieving revision 1.23
  diff -u -r1.22 -r1.23
  --- ChangeLog 2002/12/18 00:32:29     1.22
  +++ ChangeLog 2003/01/02 21:49:38     1.23
  @@ -1,3 +1,10 @@
  +2002-12-23  Geoffrey Keating  <[EMAIL PROTECTED]>
  +
  +     * gcc.dg/pch/cpp-1.h: New.
  +     * gcc.dg/pch/cpp-1.c: New.
  +     * gcc.dg/pch/cpp-2.h: New.
  +     * gcc.dg/pch/cpp-2.c: New.
  +
   2002-11-19  Geoffrey Keating  <[EMAIL PROTECTED]>
   
        * gcc.dg/pch/except-1.h: New.
  
  
  
  1.1                  src/live/gcc3/gcc/testsuite/gcc.dg/pch/cpp-1.c
  
  Index: cpp-1.c
  ===================================================================
  #include "cpp-1.hp"
  #if !defined(__GNUC__)
  panic! panic!
  #endif
  
  
  
  1.1                  src/live/gcc3/gcc/testsuite/gcc.dg/pch/cpp-1.h
  
  Index: cpp-1.h
  ===================================================================
  /* Empty.  */
  
  
  
  1.1                  src/live/gcc3/gcc/testsuite/gcc.dg/pch/cpp-2.c
  
  Index: cpp-2.c
  ===================================================================
  /* { dg-options "-Wunknown-pragmas -I." } */
  #include "cpp-2.hp"
  #pragma GCC poison not_used
  
  
  
  
  1.1                  src/live/gcc3/gcc/testsuite/gcc.dg/pch/cpp-2.h
  
  Index: cpp-2.h
  ===================================================================
  /* Empty.  */
  
  
  


Reply via email to