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:
parent
18ca3965e9
commit
2bf41bf05d
6 changed files with 33 additions and 18 deletions
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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. */
|
||||
|
|
|
@ -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,7 +224,7 @@ 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 = (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);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue