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
|
@ -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>
|
2008-01-25 Jakub Jelinek <jakub@redhat.com>
|
||||||
|
|
||||||
PR preprocessor/34692
|
PR preprocessor/34692
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
/* Hash tables for the CPP library.
|
/* Hash tables for the CPP library.
|
||||||
Copyright (C) 1986, 1987, 1989, 1992, 1993, 1994, 1995, 1996, 1998,
|
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.
|
Written by Per Bothner, 1994.
|
||||||
Based on CCCP program by Paul Rubin, June 1986
|
Based on CCCP program by Paul Rubin, June 1986
|
||||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
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 "cpplib.h"
|
||||||
#include "internal.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
|
/* Return an identifier node for hashtable.c. Used by cpplib except
|
||||||
when integrated with the C front ends. */
|
when integrated with the C front ends. */
|
||||||
static cpp_hashnode *
|
static hashnode
|
||||||
alloc_node (hash_table *table)
|
alloc_node (hash_table *table)
|
||||||
{
|
{
|
||||||
cpp_hashnode *node;
|
cpp_hashnode *node;
|
||||||
|
|
||||||
node = XOBNEW (&table->pfile->hash_ob, cpp_hashnode);
|
node = XOBNEW (&table->pfile->hash_ob, cpp_hashnode);
|
||||||
memset (node, 0, sizeof (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
|
/* 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;
|
pfile->our_hashtable = 1;
|
||||||
table = ht_create (13); /* 8K (=2^13) entries. */
|
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,
|
_obstack_begin (&pfile->hash_ob, 0, 0,
|
||||||
(void *(*) (long)) xmalloc,
|
(void *(*) (long)) xmalloc,
|
||||||
|
@ -107,12 +107,15 @@ cpp_defined (cpp_reader *pfile, const unsigned char *str, int len)
|
||||||
return node && node->type == NT_MACRO;
|
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,
|
/* For all nodes in the hashtable, callback CB with parameters PFILE,
|
||||||
the node, and V. */
|
the node, and V. */
|
||||||
void
|
void
|
||||||
cpp_forall_identifiers (cpp_reader *pfile, cpp_cb cb, void *v)
|
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);
|
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
|
/* 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. */
|
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); \
|
unsigned int to_column = (TO_COLUMN); \
|
||||||
struct line_maps *set = (SET); \
|
struct line_maps *set = (SET); \
|
||||||
if (__builtin_expect (to_column >= set->max_column_hint, 0)) \
|
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) \
|
if (r >= set->highest_location) \
|
||||||
set->highest_location = r; \
|
set->highest_location = r; \
|
||||||
(LOC) = r; \
|
(LOC) = r; \
|
||||||
}}
|
}} while (0)
|
||||||
|
|
||||||
|
|
||||||
extern source_location
|
extern source_location
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* CPP Library - lexical analysis.
|
/* 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.
|
Contributed by Per Bothner, 1994-95.
|
||||||
Based on CCCP program by Paul Rubin, June 1986
|
Based on CCCP program by Paul Rubin, June 1986
|
||||||
Adapted to ANSI C, Richard Stallman, Jan 1987
|
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;
|
len = cur - base;
|
||||||
hash = HT_HASHFINISH (hash, len);
|
hash = HT_HASHFINISH (hash, len);
|
||||||
|
|
||||||
result = (cpp_hashnode *)
|
result = CPP_HASHNODE (ht_lookup_with_hash (pfile->hash_table,
|
||||||
ht_lookup_with_hash (pfile->hash_table, base, len, hash, HT_ALLOC);
|
base, len, hash, HT_ALLOC));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Rarely, identifiers require diagnostics when lexed. */
|
/* Rarely, identifiers require diagnostics when lexed. */
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/* Map logical line numbers to (source file, line number) pairs.
|
/* 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.
|
Free Software Foundation, Inc.
|
||||||
|
|
||||||
This program is free software; you can redistribute it and/or modify it
|
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
|
FROM_LINE should be monotonic increasing across calls to this
|
||||||
function. A call to this function can relocate the previous set of
|
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. */
|
maps, so any stored line_map pointers should not be used. */
|
||||||
|
|
||||||
const struct line_map *
|
const struct line_map *
|
||||||
|
@ -225,7 +224,7 @@ linemap_line_start (struct line_maps *set, unsigned int to_line,
|
||||||
if (line_delta < 0
|
if (line_delta < 0
|
||||||
|| last_line != map->to_line
|
|| last_line != map->to_line
|
||||||
|| SOURCE_COLUMN (map, highest) >= (1U << column_bits))
|
|| 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->to_file, to_line);
|
||||||
map->column_bits = column_bits;
|
map->column_bits = column_bits;
|
||||||
r = map->start_location + ((to_line - map->to_line) << 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;
|
CUR (pfile->context) = cur;
|
||||||
len = out - pfile->out.cur;
|
len = out - pfile->out.cur;
|
||||||
result = (cpp_hashnode *) ht_lookup (pfile->hash_table, pfile->out.cur,
|
result = CPP_HASHNODE (ht_lookup (pfile->hash_table, pfile->out.cur,
|
||||||
len, HT_ALLOC);
|
len, HT_ALLOC));
|
||||||
pfile->out.cur = out;
|
pfile->out.cur = out;
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue