summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libcpp/ChangeLog13
-rw-r--r--libcpp/identifiers.c17
-rw-r--r--libcpp/include/line-map.h4
-rw-r--r--libcpp/lex.c6
-rw-r--r--libcpp/line-map.c7
-rw-r--r--libcpp/traditional.c4
6 files changed, 33 insertions, 18 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog
index a14c38ef9a9..c2c026e27ea 100644
--- a/libcpp/ChangeLog
+++ b/libcpp/ChangeLog
@@ -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
diff --git a/libcpp/identifiers.c b/libcpp/identifiers.c
index c22f4a714bb..41f32a2bbae 100644
--- a/libcpp/identifiers.c
+++ b/libcpp/identifiers.c
@@ -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);
}
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index cddc74d432e..3378315238f 100644
--- a/libcpp/include/line-map.h
+++ b/libcpp/include/line-map.h
@@ -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
diff --git a/libcpp/lex.c b/libcpp/lex.c
index ef59f900c64..2eaf6105922 100644
--- a/libcpp/lex.c
+++ b/libcpp/lex.c
@@ -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. */
diff --git a/libcpp/line-map.c b/libcpp/line-map.c
index c13a82dcafc..2c6d2510e61 100644
--- a/libcpp/line-map.c
+++ b/libcpp/line-map.c
@@ -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);
}
diff --git a/libcpp/traditional.c b/libcpp/traditional.c
index 6c4dda1a9f3..1a384253a90 100644
--- a/libcpp/traditional.c
+++ b/libcpp/traditional.c
@@ -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;
}