summaryrefslogtreecommitdiff
path: root/libiberty
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-21 09:37:31 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2009-06-21 09:37:31 +0000
commit15efa0080e1896407a33d14e9eabb01e67710b9d (patch)
tree78044b4964bd0f9ad698377fc65677426b49252f /libiberty
parent93973253875f390195795adae9af63e4c55d3564 (diff)
downloadgcc-15efa0080e1896407a33d14e9eabb01e67710b9d.tar.gz
* hashtab.c (htab_traverse): Don't call htab_expand for
nearly empty hashtabs with sizes 7, 13 or 31. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@148759 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'libiberty')
-rw-r--r--libiberty/ChangeLog5
-rw-r--r--libiberty/hashtab.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog
index f5ac7832942..eb7c913b838 100644
--- a/libiberty/ChangeLog
+++ b/libiberty/ChangeLog
@@ -1,3 +1,8 @@
+2009-06-21 Jakub Jelinek <jakub@redhat.com>
+
+ * hashtab.c (htab_traverse): Don't call htab_expand for
+ nearly empty hashtabs with sizes 7, 13 or 31.
+
2009-06-16 Nick Clifton <nickc@redhat.com>
PR 10197
diff --git a/libiberty/hashtab.c b/libiberty/hashtab.c
index bf34a6d297e..3e649215f42 100644
--- a/libiberty/hashtab.c
+++ b/libiberty/hashtab.c
@@ -1,5 +1,5 @@
/* An expandable hash tables datatype.
- Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2009
Free Software Foundation, Inc.
Contributed by Vladimir Makarov (vmakarov@cygnus.com).
@@ -759,7 +759,8 @@ htab_traverse_noresize (htab_t htab, htab_trav callback, PTR info)
void
htab_traverse (htab_t htab, htab_trav callback, PTR info)
{
- if (htab_elements (htab) * 8 < htab_size (htab))
+ size_t size = htab_size (htab);
+ if (htab_elements (htab) * 8 < size && size > 32)
htab_expand (htab);
htab_traverse_noresize (htab, callback, info);