aboutsummaryrefslogtreecommitdiff
path: root/gcc/bitmap.c
diff options
context:
space:
mode:
authorKazu Hirata <kazu@cs.umass.edu>2004-11-26 07:07:00 +0000
committerKazu Hirata <kazu@cs.umass.edu>2004-11-26 07:07:00 +0000
commitb23da30afd73d6f2f17d219df202a5bc9ec2cafc (patch)
tree70570fb44f35a4e72fc9fc581481500db1e54681 /gcc/bitmap.c
parentf0030d8b62f13e2f330f59dad3b461b70414096f (diff)
* bitmap.c (bitmap_find_bit): Speed up by traversing from
head->first if that seems profitable. git-svn-id: https://gcc.gnu.org/svn/gcc/trunk@91335 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/bitmap.c')
-rw-r--r--gcc/bitmap.c16
1 files changed, 14 insertions, 2 deletions
diff --git a/gcc/bitmap.c b/gcc/bitmap.c
index f633505eeba..140dd007e79 100644
--- a/gcc/bitmap.c
+++ b/gcc/bitmap.c
@@ -401,14 +401,26 @@ bitmap_find_bit (bitmap head, unsigned int bit)
|| head->indx == indx)
return head->current;
- if (head->indx > indx)
+ if (head->indx < indx)
+ /* INDX is beyond head->indx. Search from head->current
+ forward. */
+ for (element = head->current;
+ element->next != 0 && element->indx < indx;
+ element = element->next)
+ ;
+
+ else if (head->indx / 2 < indx)
+ /* INDX is less than head->indx and closer to head->indx than to
+ 0. Search from head->current backward. */
for (element = head->current;
element->prev != 0 && element->indx > indx;
element = element->prev)
;
else
- for (element = head->current;
+ /* INDX is less than head->indx and closer to 0 than to
+ head->indx. Search from head->first forward. */
+ for (element = head->first;
element->next != 0 && element->indx < indx;
element = element->next)
;