diff options
-rw-r--r-- | gas/ChangeLog | 7 | ||||
-rw-r--r-- | gas/hash.c | 4 | ||||
-rw-r--r-- | gas/hash.h | 3 | ||||
-rw-r--r-- | gas/macro.c | 26 |
4 files changed, 24 insertions, 16 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index d8563c8..57a376c 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -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. */ diff --git a/gas/macro.c b/gas/macro.c index b3e0fd0..75b9b7e 100644 --- a/gas/macro.c +++ b/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) { |