X-Git-Url: http://git.sourceforge.jp/view?p=pf3gnuchains%2Fgcc-fork.git;a=blobdiff_plain;f=gcc%2Fbitmap.c;h=8d7f1b2aa9536e52528449f0211c08fc84b75f1d;hp=21a05fc4fa15b2368545c38cad608de82b4bb209;hb=ccd3dcb6fb0fb5c9e11e56556c0e6b2233ee8391;hpb=ba72912a012b97cad825eebee3f5f22253d0afe4 diff --git a/gcc/bitmap.c b/gcc/bitmap.c index 21a05fc4fa1..8d7f1b2aa95 100644 --- a/gcc/bitmap.c +++ b/gcc/bitmap.c @@ -1,6 +1,6 @@ /* Functions to support general ended bitmaps. Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, - 2006, 2007, 2008, 2009 Free Software Foundation, Inc. + 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. This file is part of GCC. @@ -21,9 +21,6 @@ along with GCC; see the file COPYING3. If not see #include "config.h" #include "system.h" #include "coretypes.h" -#include "tm.h" -#include "rtl.h" -#include "flags.h" #include "obstack.h" #include "ggc.h" #include "bitmap.h" @@ -499,7 +496,7 @@ bitmap_elt_insert_after (bitmap head, bitmap_element *elt, unsigned int indx) } else { - gcc_assert (head->current); + gcc_checking_assert (head->current); node->next = elt->next; if (node->next) node->next->prev = node; @@ -624,11 +621,13 @@ bitmap_clear_bit (bitmap head, int bit) BITMAP_WORD bit_val = ((BITMAP_WORD) 1) << bit_num; bool res = (ptr->bits[word_num] & bit_val) != 0; if (res) - ptr->bits[word_num] &= ~bit_val; - - /* If we cleared the entire word, free up the element. */ - if (bitmap_element_zerop (ptr)) - bitmap_element_free (head, ptr); + { + ptr->bits[word_num] &= ~bit_val; + /* If we cleared the entire word, free up the element. */ + if (!ptr->bits[word_num] + && bitmap_element_zerop (ptr)) + bitmap_element_free (head, ptr); + } return res; } @@ -780,7 +779,7 @@ bitmap_first_set_bit (const_bitmap a) BITMAP_WORD word; unsigned ix; - gcc_assert (elt); + gcc_checking_assert (elt); bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS; for (ix = 0; ix != BITMAP_ELEMENT_WORDS; ix++) { @@ -815,7 +814,7 @@ bitmap_first_set_bit (const_bitmap a) if (!(word & 0x1)) word >>= 1, bit_no += 1; - gcc_assert (word & 1); + gcc_checking_assert (word & 1); #endif return bit_no; } @@ -831,7 +830,7 @@ bitmap_last_set_bit (const_bitmap a) BITMAP_WORD word; int ix; - gcc_assert (elt); + gcc_checking_assert (elt); while (elt->next) elt = elt->next; bit_no = elt->indx * BITMAP_ELEMENT_ALL_BITS; @@ -869,7 +868,7 @@ bitmap_last_set_bit (const_bitmap a) word >>= 1, bit_no += 1; #endif - gcc_assert (word & 1); + gcc_checking_assert (word & 1); return bit_no; } @@ -908,7 +907,7 @@ bitmap_and (bitmap dst, const_bitmap a, const_bitmap b) dst_elt = bitmap_elt_insert_after (dst, dst_prev, a_elt->indx); else dst_elt->indx = a_elt->indx; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = a_elt->bits[ix] & b_elt->bits[ix]; @@ -927,7 +926,7 @@ bitmap_and (bitmap dst, const_bitmap a, const_bitmap b) /* Ensure that dst->current is valid. */ dst->current = dst->first; bitmap_elt_clear_from (dst, dst_elt); - gcc_assert (!dst->current == !dst->first); + gcc_checking_assert (!dst->current == !dst->first); if (dst->current) dst->indx = dst->current->indx; } @@ -960,7 +959,7 @@ bitmap_and_into (bitmap a, const_bitmap b) unsigned ix; BITMAP_WORD ior = 0; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = a_elt->bits[ix] & b_elt->bits[ix]; @@ -975,8 +974,8 @@ bitmap_and_into (bitmap a, const_bitmap b) } } bitmap_elt_clear_from (a, a_elt); - gcc_assert (!a->current == !a->first); - gcc_assert (!a->current || a->indx == a->current->indx); + gcc_checking_assert (!a->current == !a->first + && (!a->current || a->indx == a->current->indx)); } @@ -992,7 +991,7 @@ bitmap_elt_copy (bitmap dst, bitmap_element *dst_elt, bitmap_element *dst_prev, { unsigned ix; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) if (src_elt->bits[ix] != dst_elt->bits[ix]) { dst_elt->bits[ix] = src_elt->bits[ix]; @@ -1056,7 +1055,7 @@ bitmap_and_compl (bitmap dst, const_bitmap a, const_bitmap b) if (!changed && dst_elt && dst_elt->indx == a_elt->indx) { - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = a_elt->bits[ix] & ~b_elt->bits[ix]; @@ -1082,7 +1081,7 @@ bitmap_and_compl (bitmap dst, const_bitmap a, const_bitmap b) new_element = false; } - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = a_elt->bits[ix] & ~b_elt->bits[ix]; @@ -1119,7 +1118,7 @@ bitmap_and_compl (bitmap dst, const_bitmap a, const_bitmap b) changed = true; bitmap_elt_clear_from (dst, dst_elt); } - gcc_assert (!dst->current == !dst->first); + gcc_checking_assert (!dst->current == !dst->first); if (dst->current) dst->indx = dst->current->indx; @@ -1159,7 +1158,7 @@ bitmap_and_compl_into (bitmap a, const_bitmap b) unsigned ix; BITMAP_WORD ior = 0; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD cleared = a_elt->bits[ix] & b_elt->bits[ix]; BITMAP_WORD r = a_elt->bits[ix] ^ cleared; @@ -1175,8 +1174,8 @@ bitmap_and_compl_into (bitmap a, const_bitmap b) b_elt = b_elt->next; } } - gcc_assert (!a->current == !a->first); - gcc_assert (!a->current || a->indx == a->current->indx); + gcc_checking_assert (!a->current == !a->first + && (!a->current || a->indx == a->current->indx)); return changed != 0; } @@ -1207,7 +1206,7 @@ bitmap_set_range (bitmap head, unsigned int start, unsigned int count) bitmap_element_link (head, elt); } - gcc_assert (elt->indx == first_index); + gcc_checking_assert (elt->indx == first_index); elt_prev = elt->prev; for (i = first_index; i <= last_index; i++) { @@ -1453,7 +1452,7 @@ bitmap_compl_and_into (bitmap a, const_bitmap b) unsigned ix; BITMAP_WORD ior = 0; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD cleared = a_elt->bits[ix] & b_elt->bits[ix]; BITMAP_WORD r = b_elt->bits[ix] ^ cleared; @@ -1470,8 +1469,8 @@ bitmap_compl_and_into (bitmap a, const_bitmap b) b_elt = b_elt->next; } } - gcc_assert (!a->current == !a->first); - gcc_assert (!a->current || a->indx == a->current->indx); + gcc_checking_assert (!a->current == !a->first + && (!a->current || a->indx == a->current->indx)); return; } @@ -1494,7 +1493,7 @@ bitmap_elt_ior (bitmap dst, bitmap_element *dst_elt, bitmap_element *dst_prev, if (!changed && dst_elt && dst_elt->indx == a_elt->indx) { - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = a_elt->bits[ix] | b_elt->bits[ix]; if (r != dst_elt->bits[ix]) @@ -1511,7 +1510,7 @@ bitmap_elt_ior (bitmap dst, bitmap_element *dst_elt, bitmap_element *dst_prev, dst_elt = bitmap_elt_insert_after (dst, dst_prev, a_elt->indx); else dst_elt->indx = a_elt->indx; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = a_elt->bits[ix] | b_elt->bits[ix]; dst_elt->bits[ix] = r; @@ -1528,7 +1527,7 @@ bitmap_elt_ior (bitmap dst, bitmap_element *dst_elt, bitmap_element *dst_prev, else src = b_elt; - gcc_assert (src); + gcc_checking_assert (src); changed = bitmap_elt_copy (dst, dst_elt, dst_prev, src, changed); } return changed; @@ -1576,7 +1575,7 @@ bitmap_ior (bitmap dst, const_bitmap a, const_bitmap b) changed = true; bitmap_elt_clear_from (dst, dst_elt); } - gcc_assert (!dst->current == !dst->first); + gcc_checking_assert (!dst->current == !dst->first); if (dst->current) dst->indx = dst->current->indx; return changed; @@ -1615,7 +1614,7 @@ bitmap_ior_into (bitmap a, const_bitmap b) a_elt = *a_prev_pnext; } - gcc_assert (!a->current == !a->first); + gcc_checking_assert (!a->current == !a->first); if (a->current) a->indx = a->current->indx; return changed; @@ -1650,7 +1649,7 @@ bitmap_xor (bitmap dst, const_bitmap a, const_bitmap b) dst_elt = bitmap_elt_insert_after (dst, dst_prev, a_elt->indx); else dst_elt->indx = a_elt->indx; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = a_elt->bits[ix] ^ b_elt->bits[ix]; @@ -1693,7 +1692,7 @@ bitmap_xor (bitmap dst, const_bitmap a, const_bitmap b) /* Ensure that dst->current is valid. */ dst->current = dst->first; bitmap_elt_clear_from (dst, dst_elt); - gcc_assert (!dst->current == !dst->first); + gcc_checking_assert (!dst->current == !dst->first); if (dst->current) dst->indx = dst->current->indx; } @@ -1735,7 +1734,7 @@ bitmap_xor_into (bitmap a, const_bitmap b) BITMAP_WORD ior = 0; bitmap_element *next = a_elt->next; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = a_elt->bits[ix] ^ b_elt->bits[ix]; @@ -1750,7 +1749,7 @@ bitmap_xor_into (bitmap a, const_bitmap b) a_elt = next; } } - gcc_assert (!a->current == !a->first); + gcc_checking_assert (!a->current == !a->first); if (a->current) a->indx = a->current->indx; } @@ -1772,7 +1771,7 @@ bitmap_equal_p (const_bitmap a, const_bitmap b) { if (a_elt->indx != b_elt->indx) return false; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) if (a_elt->bits[ix] != b_elt->bits[ix]) return false; } @@ -1797,7 +1796,7 @@ bitmap_intersect_p (const_bitmap a, const_bitmap b) b_elt = b_elt->next; else { - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) if (a_elt->bits[ix] & b_elt->bits[ix]) return true; a_elt = a_elt->next; @@ -1824,7 +1823,7 @@ bitmap_intersect_compl_p (const_bitmap a, const_bitmap b) b_elt = b_elt->next; else { - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) if (a_elt->bits[ix] & ~b_elt->bits[ix]) return true; a_elt = a_elt->next; @@ -1880,7 +1879,7 @@ bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b, const_bitmap k BITMAP_WORD ior = 0; tmp_elt.indx = b_elt->indx; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { BITMAP_WORD r = b_elt->bits[ix] & ~kill_elt->bits[ix]; ior |= r; @@ -1932,7 +1931,7 @@ bitmap_ior_and_compl (bitmap dst, const_bitmap a, const_bitmap b, const_bitmap k changed = true; bitmap_elt_clear_from (dst, dst_elt); } - gcc_assert (!dst->current == !dst->first); + gcc_checking_assert (!dst->current == !dst->first); if (dst->current) dst->indx = dst->current->indx; @@ -1998,7 +1997,7 @@ bitmap_ior_and_into (bitmap a, const_bitmap b, const_bitmap c) overall = 0; and_elt.indx = b_elt->indx; - for (ix = BITMAP_ELEMENT_WORDS; ix--;) + for (ix = 0; ix < BITMAP_ELEMENT_WORDS; ix++) { and_elt.bits[ix] = b_elt->bits[ix] & c_elt->bits[ix]; overall |= and_elt.bits[ix]; @@ -2028,7 +2027,7 @@ bitmap_ior_and_into (bitmap a, const_bitmap b, const_bitmap c) } done: - gcc_assert (!a->current == !a->first); + gcc_checking_assert (!a->current == !a->first); if (a->current) a->indx = a->current->indx; return changed;