* cppfiles.c (file_hash_hash): New static function.
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Dec 2003 22:50:53 +0000 (22:50 +0000)
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 5 Dec 2003 22:50:53 +0000 (22:50 +0000)
(hash_string_eq):  Renamed static function to file_hash_eq.
(_cpp_init_files):  Create file_hash table with above callbacks.
(cpp_included):  Must use htab_find_with_hash insead of htab_find.
(_cpp_find_find, make_cpp_dir):  Must use htab_find_slot_with_hash.

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

gcc/ChangeLog
gcc/cppfiles.c

index 1cd3f93..67e9678 100644 (file)
@@ -1,5 +1,13 @@
 2003-12-05  Per Bothner  <pbothner@apple.com>
 
+       * cppfiles.c (file_hash_hash):  New static function.
+       (hash_string_eq):  Renamed static function to file_hash_eq.
+       (_cpp_init_files):  Create file_hash table with above callbacks.
+       (cpp_included):  Must use htab_find_with_hash insead of htab_find.
+       (_cpp_find_find, make_cpp_dir):  Must use htab_find_slot_with_hash.
+
+2003-12-05  Per Bothner  <pbothner@apple.com>
+
        * line-map.h (source_location):  New typedef.
        (fileline):  Redefined as source_location.
        (struct line_map, linemap_add, linemap_lookup):  Replace filefile
index 63e9921..c2d91f5 100644 (file)
@@ -172,7 +172,8 @@ static cpp_dir *make_cpp_dir (cpp_reader *, const char *dir_name, int sysp);
 static void allocate_file_hash_entries (cpp_reader *pfile);
 static struct file_hash_entry *new_file_hash_entry (cpp_reader *pfile);
 static int report_missing_guard (void **slot, void *b);
-static int hash_string_eq (const void *p, const void *q);
+static hashval_t file_hash_hash (const void *p);
+static int file_hash_eq (const void *p, const void *q);
 static char *read_filename_string (int ch, FILE *f);
 static void read_name_map (cpp_dir *dir);
 static char *remap_filename (cpp_reader *pfile, _cpp_file *file);
@@ -367,7 +368,9 @@ _cpp_find_file (cpp_reader *pfile, const char *fname, cpp_dir *start_dir, bool f
     cpp_error (pfile, CPP_DL_ICE, "NULL directory in find_file");
 
   hash_slot = (struct file_hash_entry **)
-    htab_find_slot (pfile->file_hash, fname, INSERT);
+    htab_find_slot_with_hash (pfile->file_hash, fname,
+                             htab_hash_string (fname),
+                             INSERT);
 
   /* First check the cache before we resort to memory allocation.  */
   entry = search_cache (*hash_slot, start_dir);
@@ -797,7 +800,9 @@ make_cpp_dir (cpp_reader *pfile, const char *dir_name, int sysp)
   cpp_dir *dir;
 
   hash_slot = (struct file_hash_entry **)
-    htab_find_slot (pfile->file_hash, dir_name, INSERT);
+    htab_find_slot_with_hash (pfile->file_hash, dir_name,
+                             htab_hash_string (dir_name),
+                             INSERT);
 
   /* Have we already hashed this directory?  */
   for (entry = *hash_slot; entry; entry = entry->next)
@@ -848,7 +853,8 @@ cpp_included (cpp_reader *pfile, const char *fname)
 {
   struct file_hash_entry *entry;
 
-  entry = htab_find (pfile->file_hash, fname);
+  entry = htab_find_with_hash (pfile->file_hash, fname,
+                              htab_hash_string (fname));
 
   while (entry && (entry->start_dir == NULL || entry->u.file->err_no))
     entry = entry->next;
@@ -856,9 +862,24 @@ cpp_included (cpp_reader *pfile, const char *fname)
   return entry != NULL;
 }
 
+/* Calculate the hash value of a file hash entry P. */
+
+static hashval_t
+file_hash_hash (const void *p)
+{
+  struct file_hash_entry *entry = (struct file_hash_entry *) p;
+  const char *hname;
+  if (entry->start_dir)
+    hname = entry->u.file->name;
+  else
+    hname = entry->u.dir->name;
+
+  return htab_hash_string (hname);
+}
+
 /* Compare a string Q against a file hash entry P.  */
 static int
-hash_string_eq (const void *p, const void *q)
+file_hash_eq (const void *p, const void *q)
 {
   struct file_hash_entry *entry = (struct file_hash_entry *) p;
   const char *fname = (const char *) q;
@@ -876,7 +897,7 @@ hash_string_eq (const void *p, const void *q)
 void
 _cpp_init_files (cpp_reader *pfile)
 {
-  pfile->file_hash = htab_create_alloc (127, htab_hash_string, hash_string_eq,
+  pfile->file_hash = htab_create_alloc (127, file_hash_hash, file_hash_eq,
                                        NULL, xcalloc, free);
   allocate_file_hash_entries (pfile);
 }