gas/hash.c: add new functions
The first of a patch series deleting the gas/hash.c hash table implementation and instead using libiberty/hashtab.c hash tables in gas. * as.h: Include hashtab.h. * hash.c (htab_insert): New. (htab_print_statistics): Likewise. * hash.h (htab_insert): Likewise. (htab_print_statistics): Likewise.
This commit is contained in:
parent
c51ed085ab
commit
abebb03c3a
@ -1,3 +1,11 @@
|
||||
2020-08-20 Martin Liska <mliska@suse.cz>
|
||||
|
||||
* as.h: Include hashtab.h.
|
||||
* hash.c (htab_insert): New.
|
||||
(htab_print_statistics): Likewise.
|
||||
* hash.h (htab_insert): Likewise.
|
||||
(htab_print_statistics): Likewise.
|
||||
|
||||
2020-08-19 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* testsuite/gas/ppc/int128.s: Correct vcmpuq.
|
||||
|
1
gas/as.h
1
gas/as.h
@ -565,6 +565,7 @@ int generic_force_reloc (struct fix *);
|
||||
|
||||
#include "write.h"
|
||||
#include "frags.h"
|
||||
#include "hashtab.h"
|
||||
#include "hash.h"
|
||||
#include "read.h"
|
||||
#include "symbols.h"
|
||||
|
24
gas/hash.c
24
gas/hash.c
@ -407,6 +407,30 @@ hash_print_statistics (FILE *f ATTRIBUTE_UNUSED,
|
||||
fprintf (f, "\t%lu empty slots\n", empty);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* Insert ELEMENT into HTAB. If the element exists, it is overwritten. */
|
||||
|
||||
void
|
||||
htab_insert (htab_t htab, PTR element)
|
||||
{
|
||||
void **slot = htab_find_slot (htab, element, INSERT);
|
||||
if (slot != NULL && htab->del_f)
|
||||
(*htab->del_f) (*slot);
|
||||
|
||||
*slot = element;
|
||||
}
|
||||
|
||||
/* Print statistics about a hash table. */
|
||||
|
||||
void
|
||||
htab_print_statistics (FILE *f, const char *name, htab_t table)
|
||||
{
|
||||
fprintf (f, "%s hash statistics:\n", name);
|
||||
fprintf (f, "\t%u searches\n", table->searches);
|
||||
fprintf (f, "\t%u collisions\n", table->collisions);
|
||||
fprintf (f, "\t%lu elements\n", (unsigned long) htab_elements (table));
|
||||
fprintf (f, "\t%lu table size\n", (unsigned long) htab_size (table));
|
||||
}
|
||||
|
||||
#ifdef TEST
|
||||
|
||||
|
@ -85,4 +85,12 @@ extern void hash_traverse (struct hash_control *,
|
||||
extern void hash_print_statistics (FILE *, const char *name,
|
||||
struct hash_control *);
|
||||
|
||||
/* Insert ELEMENT into HTAB. If the element exists, it is overwritten. */
|
||||
|
||||
extern void htab_insert (htab_t, void *);
|
||||
|
||||
/* Print statistics about a hash table. */
|
||||
|
||||
extern void htab_print_statistics (FILE *f, const char *name, htab_t table);
|
||||
|
||||
#endif /* HASH_H */
|
||||
|
Loading…
x
Reference in New Issue
Block a user