OSDN Git Service

* traditional.c (lex_identifier): Use CPP_HASHNODE.
authortromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Feb 2008 02:16:43 +0000 (02:16 +0000)
committertromey <tromey@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 20 Feb 2008 02:16:43 +0000 (02:16 +0000)
* lex.c (lex_identifier): Use CPP_HASHNODE.
* include/line-map.h (LINEMAP_POSITION_FOR_COLUMN): Wrap in
do-while.
* identifiers.c (alloc_node): Change return type.
(_cpp_init_hashtable): Don't cast 'alloc_node'.
(proxy_assertion_broken): New declaration.
(cpp_forall_identifiers): Move comment.
* line-map.c (linemap_add): Comment fix.
(linemap_line_start): Indentation fix.

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

libcpp/ChangeLog
libcpp/identifiers.c
libcpp/include/line-map.h
libcpp/lex.c
libcpp/line-map.c
libcpp/traditional.c

index a14c38e..c2c026e 100644 (file)
@@ -1,3 +1,16 @@
+2008-02-19  Tom Tromey  <tromey@redhat.com>
+
+       * traditional.c (lex_identifier): Use CPP_HASHNODE.
+       * lex.c (lex_identifier): Use CPP_HASHNODE.
+       * include/line-map.h (LINEMAP_POSITION_FOR_COLUMN): Wrap in
+       do-while.
+       * identifiers.c (alloc_node): Change return type.
+       (_cpp_init_hashtable): Don't cast 'alloc_node'.
+       (proxy_assertion_broken): New declaration.
+       (cpp_forall_identifiers): Move comment.
+       * line-map.c (linemap_add): Comment fix.
+       (linemap_line_start): Indentation fix.
+
 2008-01-25  Jakub Jelinek  <jakub@redhat.com>
 
        PR preprocessor/34692
index c22f4a7..41f32a2 100644 (file)
@@ -1,6 +1,6 @@
 /* Hash tables for the CPP library.
    Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
-   1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+   1999, 2000, 2001, 2002, 2007 Free Software Foundation, Inc.
    Written by Per Bothner, 1994.
    Based on CCCP program by Paul Rubin, June 1986
    Adapted to ANSI C, Richard Stallman, Jan 1987
@@ -28,18 +28,18 @@ Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 #include "cpplib.h"
 #include "internal.h"
 
-static cpp_hashnode *alloc_node (hash_table *);
+static hashnode alloc_node (hash_table *);
 
 /* Return an identifier node for hashtable.c.  Used by cpplib except
    when integrated with the C front ends.  */
-static cpp_hashnode *
+static hashnode
 alloc_node (hash_table *table)
 {
   cpp_hashnode *node;
 
   node = XOBNEW (&table->pfile->hash_ob, cpp_hashnode);
   memset (node, 0, sizeof (cpp_hashnode));
-  return node;
+  return HT_NODE (node);
 }
 
 /* Set up the identifier hash table.  Use TABLE if non-null, otherwise
@@ -53,7 +53,7 @@ _cpp_init_hashtable (cpp_reader *pfile, hash_table *table)
     {
       pfile->our_hashtable = 1;
       table = ht_create (13);  /* 8K (=2^13) entries.  */
-      table->alloc_node = (hashnode (*) (hash_table *)) alloc_node;
+      table->alloc_node = alloc_node;
 
       _obstack_begin (&pfile->hash_ob, 0, 0,
                      (void *(*) (long)) xmalloc,
@@ -107,12 +107,15 @@ cpp_defined (cpp_reader *pfile, const unsigned char *str, int len)
   return node && node->type == NT_MACRO;
 }
 
+/* We don't need a proxy since the hash table's identifier comes first
+   in cpp_hashnode.  However, in case this is ever changed, we have a
+   static assertion for it.  */
+extern char proxy_assertion_broken[offsetof (struct cpp_hashnode, ident) == 0 ? 1 : -1];
+
 /* For all nodes in the hashtable, callback CB with parameters PFILE,
    the node, and V.  */
 void
 cpp_forall_identifiers (cpp_reader *pfile, cpp_cb cb, void *v)
 {
-  /* We don't need a proxy since the hash table's identifier comes
-     first in cpp_hashnode.  */
   ht_forall (pfile->hash_table, (ht_cb) cb, v);
 }
index cddc74d..3378315 100644 (file)
@@ -172,7 +172,7 @@ extern void linemap_print_containing_files (struct line_maps *,
 /* Set LOC to a source position that is the same line as the most recent
    linemap_line_start, but with the specified TO_COLUMN column number.  */
 
-#define LINEMAP_POSITION_FOR_COLUMN(LOC, SET, TO_COLUMN) { \
+#define LINEMAP_POSITION_FOR_COLUMN(LOC, SET, TO_COLUMN) do { \
   unsigned int to_column = (TO_COLUMN); \
   struct line_maps *set = (SET); \
   if (__builtin_expect (to_column >= set->max_column_hint, 0)) \
@@ -183,7 +183,7 @@ extern void linemap_print_containing_files (struct line_maps *,
     if (r >= set->highest_location) \
       set->highest_location = r; \
     (LOC) = r;                  \
-  }}
+  }} while (0)
     
 
 extern source_location
index ef59f90..2eaf610 100644 (file)
@@ -1,5 +1,5 @@
 /* CPP Library - lexical analysis.
-   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2007 Free Software Foundation, Inc.
    Contributed by Per Bothner, 1994-95.
    Based on CCCP program by Paul Rubin, June 1986
    Adapted to ANSI C, Richard Stallman, Jan 1987
@@ -538,8 +538,8 @@ lex_identifier (cpp_reader *pfile, const uchar *base, bool starts_ucn,
       len = cur - base;
       hash = HT_HASHFINISH (hash, len);
 
-      result = (cpp_hashnode *)
-       ht_lookup_with_hash (pfile->hash_table, base, len, hash, HT_ALLOC);
+      result = CPP_HASHNODE (ht_lookup_with_hash (pfile->hash_table,
+                                                 base, len, hash, HT_ALLOC));
     }
 
   /* Rarely, identifiers require diagnostics when lexed.  */
index c13a82d..2c6d251 100644 (file)
@@ -1,5 +1,5 @@
 /* Map logical line numbers to (source file, line number) pairs.
-   Copyright (C) 2001, 2003, 2004, 2007
+   Copyright (C) 2001, 2003, 2004, 2007, 2008
    Free Software Foundation, Inc.
 
 This program is free software; you can redistribute it and/or modify it
@@ -81,7 +81,6 @@ linemap_free (struct line_maps *set)
 
    FROM_LINE should be monotonic increasing across calls to this
    function.  A call to this function can relocate the previous set of
-   A call to this function can relocate the previous set of
    maps, so any stored line_map pointers should not be used.  */
 
 const struct line_map *
@@ -225,8 +224,8 @@ linemap_line_start (struct line_maps *set, unsigned int to_line,
       if (line_delta < 0
          || last_line != map->to_line
          || SOURCE_COLUMN (map, highest) >= (1U << column_bits))
-       map = (struct line_map*) linemap_add (set, LC_RENAME, map->sysp,
-                                     map->to_file, to_line);
+       map = (struct line_map *) linemap_add (set, LC_RENAME, map->sysp,
+                                              map->to_file, to_line);
       map->column_bits = column_bits;
       r = map->start_location + ((to_line - map->to_line) << column_bits);
     }
index 6c4dda1..1a38425 100644 (file)
@@ -253,8 +253,8 @@ lex_identifier (cpp_reader *pfile, const uchar *cur)
 
   CUR (pfile->context) = cur;
   len = out - pfile->out.cur;
-  result = (cpp_hashnode *) ht_lookup (pfile->hash_table, pfile->out.cur,
-                                      len, HT_ALLOC);
+  result = CPP_HASHNODE (ht_lookup (pfile->hash_table, pfile->out.cur,
+                                   len, HT_ALLOC));
   pfile->out.cur = out;
   return result;
 }