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