bitmap.c (bitmap_find_bit): Speed up by traversing from head->first if that seems profitable.

* bitmap.c (bitmap_find_bit): Speed up by traversing from
	head->first if that seems profitable.

From-SVN: r91335
This commit is contained in:
Kazu Hirata 2004-11-26 07:07:00 +00:00 committed by Kazu Hirata
parent 6a66a8a7a2
commit 3aeee1b434
2 changed files with 17 additions and 2 deletions

View File

@ -3,6 +3,9 @@
* cfgrtl.c (try_redirect_by_replacing_jump): Speed up the
check that tests if all edges go to the same destination.
* bitmap.c (bitmap_find_bit): Speed up by traversing from
head->first if that seems profitable.
2004-11-25 Jeff Law <law@redhat.com>
* timevar.def (TV_TREE_LOOP_INIT, TV_TREE_LOOP_FINI): New timevars.

View File

@ -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)
;