Commit 3aeee1b4 by Kazu Hirata Committed by Kazu Hirata

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
parent 6a66a8a7
...@@ -3,6 +3,9 @@ ...@@ -3,6 +3,9 @@
* cfgrtl.c (try_redirect_by_replacing_jump): Speed up the * cfgrtl.c (try_redirect_by_replacing_jump): Speed up the
check that tests if all edges go to the same destination. 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> 2004-11-25 Jeff Law <law@redhat.com>
* timevar.def (TV_TREE_LOOP_INIT, TV_TREE_LOOP_FINI): New timevars. * timevar.def (TV_TREE_LOOP_INIT, TV_TREE_LOOP_FINI): New timevars.
......
...@@ -401,14 +401,26 @@ bitmap_find_bit (bitmap head, unsigned int bit) ...@@ -401,14 +401,26 @@ bitmap_find_bit (bitmap head, unsigned int bit)
|| head->indx == indx) || head->indx == indx)
return head->current; 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; for (element = head->current;
element->prev != 0 && element->indx > indx; element->prev != 0 && element->indx > indx;
element = element->prev) element = element->prev)
; ;
else 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->next != 0 && element->indx < indx;
element = element->next) element = element->next)
; ;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment