gas/
authorRoland McGrath <roland@gnu.org>
Thu, 10 Jan 2013 17:11:17 +0000 (17:11 +0000)
committerRoland McGrath <roland@gnu.org>
Thu, 10 Jan 2013 17:11:17 +0000 (17:11 +0000)
* 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.

gas/ChangeLog
gas/hash.c
gas/hash.h
gas/macro.c

index d8563c8..57a376c 100644 (file)
@@ -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.
 2013-01-10  Will Newton <will.newton@imgtec.com>
 
        * Makefile.am: Add Meta.
index a58c948..bae8386 100644 (file)
@@ -1,6 +1,6 @@
 /* hash.c -- gas hash table code
    Copyright 1987, 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999,
 /* 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.
    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.  */
 
 
 /* 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;
 hash_new_sized (unsigned long size)
 {
   unsigned long alloc;
index fac814e..c7ea7b5 100644 (file)
@@ -1,5 +1,5 @@
 /* hash.h -- header file for gas hash table routines
 /* 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.
    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);
 /* 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.  */
 
 
 /* Delete a hash table, freeing all allocated memory.  */
 
index b3e0fd0..75b9b7e 100644 (file)
@@ -1,6 +1,6 @@
 /* macro.c - macro support for gas
    Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
 /* 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
 
    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
       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 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
       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_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", &macro->sub, get_line))
 
   idx = sb_skip_white (idx, in);
   if (! buffer_and_nest ("MACRO", "ENDM", &macro->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,
          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);
              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
   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.
       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;
 
                  if (irpc)
                    in_quotes = ! in_quotes;
-         
+
                  nxt = sb_skip_white (idx + 1, in);
                  if (nxt >= in->len)
                    {
                  nxt = sb_skip_white (idx + 1, in);
                  if (nxt >= in->len)
                    {