diff options
author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-01-25 18:21:22 +0000 |
---|---|---|
committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-01-25 18:21:22 +0000 |
commit | e5c8f08242105ebcd19a497c9776f2449ed385bc (patch) | |
tree | d3d47f978b9d20aa676221e18721f06cd932e531 /gcc/bitmap.c | |
parent | d622b3bd05b959236c6cdc8a78f8322b4788e5af (diff) | |
download | gcc-e5c8f08242105ebcd19a497c9776f2449ed385bc.tar.gz |
* bitmap.h (BITMAP_WORD): New typedef: fundamental storage
type for bitmaps. Use unsigned long.
(nBITMAP_WORD_BITS): New macro.
(BITMAP_WORD_BITS): New macro.
(rest of file): Use it.
* bitmap.c: Use it.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@61793 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/bitmap.c')
-rw-r--r-- | gcc/bitmap.c | 52 |
1 files changed, 25 insertions, 27 deletions
diff --git a/gcc/bitmap.c b/gcc/bitmap.c index 7b93eab88a2..4575f62a531 100644 --- a/gcc/bitmap.c +++ b/gcc/bitmap.c @@ -1,5 +1,6 @@ /* Functions to support general ended bitmaps. - Copyright (C) 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc. + Copyright (C) 1997, 1998, 1999, 2000, 2001, 2003 + Free Software Foundation, Inc. This file is part of GCC. @@ -332,7 +333,7 @@ bitmap_find_bit (head, bit) unsigned int bit; { bitmap_element *element; - unsigned HOST_WIDE_INT indx = bit / BITMAP_ELEMENT_ALL_BITS; + unsigned int indx = bit / BITMAP_ELEMENT_ALL_BITS; if (head->current == 0 || head->indx == indx) @@ -371,10 +372,9 @@ bitmap_clear_bit (head, bit) if (ptr != 0) { - unsigned bit_num = bit % (unsigned) HOST_BITS_PER_WIDE_INT; - unsigned word_num = ((bit / (unsigned) HOST_BITS_PER_WIDE_INT) - % BITMAP_ELEMENT_WORDS); - ptr->bits[word_num] &= ~ (((unsigned HOST_WIDE_INT) 1) << bit_num); + unsigned bit_num = bit % BITMAP_WORD_BITS; + unsigned word_num = bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS; + ptr->bits[word_num] &= ~ (((BITMAP_WORD) 1) << bit_num); /* If we cleared the entire word, free up the element */ if (bitmap_element_zerop (ptr)) @@ -390,10 +390,9 @@ bitmap_set_bit (head, bit) int bit; { bitmap_element *ptr = bitmap_find_bit (head, bit); - unsigned word_num - = ((bit / (unsigned) HOST_BITS_PER_WIDE_INT) % BITMAP_ELEMENT_WORDS); - unsigned bit_num = bit % (unsigned) HOST_BITS_PER_WIDE_INT; - unsigned HOST_WIDE_INT bit_val = ((unsigned HOST_WIDE_INT) 1) << bit_num; + unsigned word_num = bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS; + unsigned bit_num = bit % BITMAP_WORD_BITS; + BITMAP_WORD bit_val = ((BITMAP_WORD) 1) << bit_num; if (ptr == 0) { @@ -421,9 +420,8 @@ bitmap_bit_p (head, bit) if (ptr == 0) return 0; - bit_num = bit % (unsigned) HOST_BITS_PER_WIDE_INT; - word_num - = ((bit / (unsigned) HOST_BITS_PER_WIDE_INT) % BITMAP_ELEMENT_WORDS); + bit_num = bit % BITMAP_WORD_BITS; + word_num = bit / BITMAP_WORD_BITS % BITMAP_ELEMENT_WORDS; return (ptr->bits[word_num] >> bit_num) & 1; } @@ -436,7 +434,7 @@ bitmap_first_set_bit (a) bitmap a; { bitmap_element *ptr = a->first; - unsigned HOST_WIDE_INT word; + BITMAP_WORD word; unsigned word_num, bit_num; if (ptr == NULL) @@ -458,10 +456,10 @@ bitmap_first_set_bit (a) bit_num = 0; word = word & -word; -#if HOST_BITS_PER_WIDE_INT > 64 +#if nBITMAP_WORD_BITS > 64 #error "Fill out the table." #endif -#if HOST_BITS_PER_WIDE_INT > 32 +#if nBITMAP_WORD_BITS > 32 if ((word & 0xffffffff) == 0) word >>= 32, bit_num += 32; #endif @@ -477,7 +475,7 @@ bitmap_first_set_bit (a) bit_num += 1; return (ptr->indx * BITMAP_ELEMENT_ALL_BITS - + word_num * HOST_BITS_PER_WIDE_INT + + word_num * BITMAP_WORD_BITS + bit_num); } @@ -489,7 +487,7 @@ bitmap_last_set_bit (a) bitmap a; { bitmap_element *ptr = a->first; - unsigned HOST_WIDE_INT word; + BITMAP_WORD word; unsigned word_num, bit_num; if (ptr == NULL) @@ -511,11 +509,11 @@ bitmap_last_set_bit (a) /* Binary search for the last set bit. */ bit_num = 0; -#if HOST_BITS_PER_WIDE_INT > 64 +#if nBITMAP_WORD_BITS > 64 #error "Fill out the table." #endif -#if HOST_BITS_PER_WIDE_INT > 32 - if (word & ~ (unsigned HOST_WIDE_INT) 0xffffffff) +#if nBITMAP_WORD_BITS > 32 + if (word & ~(BITMAP_WORD)0xffffffff) word >>= 32, bit_num += 32; #endif if (word & 0xffff0000) @@ -530,7 +528,7 @@ bitmap_last_set_bit (a) bit_num += 1; return (ptr->indx * BITMAP_ELEMENT_ALL_BITS - + word_num * HOST_BITS_PER_WIDE_INT + + word_num * BITMAP_WORD_BITS + bit_num); } @@ -560,7 +558,7 @@ bitmap_operation (to, from1, from2, operation) #if BITMAP_ELEMENT_WORDS == 2 #define DOIT(OP) \ do { \ - unsigned HOST_WIDE_INT t0, t1, f10, f11, f20, f21; \ + BITMAP_WORD t0, t1, f10, f11, f20, f21; \ f10 = from1_tmp->bits[0]; \ f20 = from2_tmp->bits[0]; \ t0 = f10 OP f20; \ @@ -575,7 +573,7 @@ bitmap_operation (to, from1, from2, operation) #else #define DOIT(OP) \ do { \ - unsigned HOST_WIDE_INT t, f1, f2; \ + BITMAP_WORD t, f1, f2; \ int i; \ for (i = 0; i < BITMAP_ELEMENT_WORDS; ++i) \ { \ @@ -787,7 +785,7 @@ debug_bitmap_file (file, head) for (ptr = head->first; ptr; ptr = ptr->next) { - int i, j, col = 26; + unsigned int i, j, col = 26; fprintf (file, "\t"); fprintf (file, HOST_PTR_PRINTF, (PTR) ptr); @@ -798,7 +796,7 @@ debug_bitmap_file (file, head) fprintf (file, " indx = %u\n\t\tbits = {", ptr->indx); for (i = 0; i < BITMAP_ELEMENT_WORDS; i++) - for (j = 0; j < HOST_BITS_PER_WIDE_INT; j++) + for (j = 0; j < BITMAP_WORD_BITS; j++) if ((ptr->bits[i] >> j) & 1) { if (col > 70) @@ -808,7 +806,7 @@ debug_bitmap_file (file, head) } fprintf (file, " %u", (ptr->indx * BITMAP_ELEMENT_ALL_BITS - + i * HOST_BITS_PER_WIDE_INT + j)); + + i * BITMAP_WORD_BITS + j)); col += 4; } |