diff options
-rw-r--r-- | libcpp/ChangeLog | 13 | ||||
-rw-r--r-- | libcpp/identifiers.c | 17 | ||||
-rw-r--r-- | libcpp/include/line-map.h | 4 | ||||
-rw-r--r-- | libcpp/lex.c | 6 | ||||
-rw-r--r-- | libcpp/line-map.c | 7 | ||||
-rw-r--r-- | libcpp/traditional.c | 4 |
6 files changed, 33 insertions, 18 deletions
diff --git a/libcpp/ChangeLog b/libcpp/ChangeLog index a14c38e..c2c026e 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 c22f4a7..41f32a2 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 cddc74d..3378315 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 ef59f900..2eaf610 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 c13a82d..2c6d251 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 6c4dda1..1a38425 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; } |