gas/
* hash.c (hash_new_sized): Make it global. * hash.h: Declare it. * macro.c (define_macro): Use hash_new_sized instead of hash_new, pass a small size.
This commit is contained in:
parent
861ea9c877
commit
4c665b71b1
@ -1,3 +1,10 @@
|
||||
2013-01-10 Roland McGrath <mcgrathr@google.com>
|
||||
|
||||
* hash.c (hash_new_sized): Make it global.
|
||||
* hash.h: Declare it.
|
||||
* macro.c (define_macro): Use hash_new_sized instead of hash_new,
|
||||
pass a small size.
|
||||
|
||||
2013-01-10 Will Newton <will.newton@imgtec.com>
|
||||
|
||||
* Makefile.am: Add Meta.
|
||||
|
@ -1,6 +1,6 @@
|
||||
/* hash.c -- gas hash table code
|
||||
Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999,
|
||||
2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011
|
||||
2000, 2001, 2002, 2003, 2005, 2007, 2008, 2009, 2011, 2013
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
@ -83,7 +83,7 @@ set_gas_hash_table_size (unsigned long size)
|
||||
|
||||
/* Create a hash table. This return a control block. */
|
||||
|
||||
static struct hash_control *
|
||||
struct hash_control *
|
||||
hash_new_sized (unsigned long size)
|
||||
{
|
||||
unsigned long alloc;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/* hash.h -- header file for gas hash table routines
|
||||
Copyright 1987, 1992, 1993, 1995, 1999, 2003, 2005, 2007, 2008
|
||||
Copyright 1987, 1992, 1993, 1995, 1999, 2003, 2005, 2007, 2008, 2013
|
||||
Free Software Foundation, Inc.
|
||||
|
||||
This file is part of GAS, the GNU Assembler.
|
||||
@ -31,6 +31,7 @@ void set_gas_hash_table_size (unsigned long);
|
||||
/* Create a hash table. This return a control block. */
|
||||
|
||||
extern struct hash_control *hash_new (void);
|
||||
extern struct hash_control *hash_new_sized (unsigned long);
|
||||
|
||||
/* Delete a hash table, freeing all allocated memory. */
|
||||
|
||||
|
26
gas/macro.c
26
gas/macro.c
@ -1,6 +1,6 @@
|
||||
/* macro.c - macro support for gas
|
||||
Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
|
||||
2004, 2005, 2006, 2007, 2008, 2011, 2012 Free Software Foundation, Inc.
|
||||
2004, 2005, 2006, 2007, 2008, 2011, 2012, 2013 Free Software Foundation, Inc.
|
||||
|
||||
Written by Steve and Judy Chamberlain of Cygnus Support,
|
||||
sac@cygnus.com
|
||||
@ -574,9 +574,9 @@ do_formals (macro_entry *macro, size_t idx, sb *in)
|
||||
formal_entry *formal = new_formal ();
|
||||
|
||||
/* Add a special NARG formal, which macro_expand will set to the
|
||||
number of arguments. */
|
||||
number of arguments. */
|
||||
/* The same MRI assemblers which treat '@' characters also use
|
||||
the name $NARG. At least until we find an exception. */
|
||||
the name $NARG. At least until we find an exception. */
|
||||
if (macro_strip_at)
|
||||
name = "$NARG";
|
||||
else
|
||||
@ -642,7 +642,7 @@ define_macro (size_t idx, sb *in, sb *label,
|
||||
|
||||
macro->formal_count = 0;
|
||||
macro->formals = 0;
|
||||
macro->formal_hash = hash_new ();
|
||||
macro->formal_hash = hash_new_sized (7);
|
||||
|
||||
idx = sb_skip_white (idx, in);
|
||||
if (! buffer_and_nest ("MACRO", "ENDM", ¯o->sub, get_line))
|
||||
@ -950,13 +950,13 @@ macro_expand_body (sb *in, sb *out, formal_entry *formals,
|
||||
if (ptr == NULL)
|
||||
{
|
||||
/* FIXME: We should really return a warning string here,
|
||||
but we can't, because the == might be in the MRI
|
||||
comment field, and, since the nature of the MRI
|
||||
comment field depends upon the exact instruction
|
||||
being used, we don't have enough information here to
|
||||
figure out whether it is or not. Instead, we leave
|
||||
the == in place, which should cause a syntax error if
|
||||
it is not in a comment. */
|
||||
but we can't, because the == might be in the MRI
|
||||
comment field, and, since the nature of the MRI
|
||||
comment field depends upon the exact instruction
|
||||
being used, we don't have enough information here to
|
||||
figure out whether it is or not. Instead, we leave
|
||||
the == in place, which should cause a syntax error if
|
||||
it is not in a comment. */
|
||||
sb_add_char (out, '=');
|
||||
sb_add_char (out, '=');
|
||||
sb_add_sb (out, &t);
|
||||
@ -1023,7 +1023,7 @@ macro_expand (size_t idx, sb *in, macro_entry *m, sb *out)
|
||||
if (macro_mri)
|
||||
{
|
||||
/* The macro may be called with an optional qualifier, which may
|
||||
be referred to in the macro body as \0. */
|
||||
be referred to in the macro body as \0. */
|
||||
if (idx < in->len && in->ptr[idx] == '.')
|
||||
{
|
||||
/* The Microtec assembler ignores this if followed by a white space.
|
||||
@ -1349,7 +1349,7 @@ expand_irp (int irpc, size_t idx, sb *in, sb *out, size_t (*get_line) (sb *))
|
||||
|
||||
if (irpc)
|
||||
in_quotes = ! in_quotes;
|
||||
|
||||
|
||||
nxt = sb_skip_white (idx + 1, in);
|
||||
if (nxt >= in->len)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user