summaryrefslogtreecommitdiff
path: root/gcc/bitmap.c
diff options
context:
space:
mode:
authorkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-26 07:07:00 +0000
committerkazu <kazu@138bc75d-0d04-0410-961f-82ee72b054a4>2004-11-26 07:07:00 +0000
commit4afe554415ebc926b6e6bb61a8ba6a6efb693f45 (patch)
tree70570fb44f35a4e72fc9fc581481500db1e54681 /gcc/bitmap.c
parent34f05bfaa65c6c9e7fd41715a5a20318f6c4bce3 (diff)
downloadgcc-4afe554415ebc926b6e6bb61a8ba6a6efb693f45.tar.gz
* bitmap.c (bitmap_find_bit): Speed up by traversing from
head->first if that seems profitable. git-svn-id: svn+ssh://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)
;