traditional.c (lex_identifier): Use CPP_HASHNODE.

* 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.

From-SVN: r132467
This commit is contained in:
Tom Tromey 2008-02-20 02:16:43 +00:00 committed by Tom Tromey
parent 18ca3965e9
commit 2bf41bf05d
6 changed files with 33 additions and 18 deletions

View 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

View 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);
}

View 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

View 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. */

View 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);
}

View 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;
}