]> git.saurik.com Git - bison.git/commitdiff
* lib/bbitset.h (BITSET_WINDEX_MAX): Redefine so that it cannot be
authorPaul Eggert <eggert@cs.ucla.edu>
Sat, 5 Oct 2002 05:02:30 +0000 (05:02 +0000)
committerPaul Eggert <eggert@cs.ucla.edu>
Sat, 5 Oct 2002 05:02:30 +0000 (05:02 +0000)
  interpreted as signed.
* lib/ebitset.c (ebitset_list): Fix bug.
From Michael Hayes.

lib/bbitset.h
lib/ebitset.c

index 878f91a46da60fec82947a1d3f97c49ca2000843..455fbbcb56a127d4a31d25923157a15c92057411 100644 (file)
@@ -63,7 +63,10 @@ typedef size_t bitset_windex;
 /* Maximum values for commonly-used unsigned types.  BITSET_SIZE_MAX
    always equals SIZE_MAX, but some older systems lack SIZE_MAX.  */
 #define BITSET_BINDEX_MAX ((bitset_bindex) -1)
-#define BITSET_WINDEX_MAX ((bitset_windex) -1)
+
+/* Limit max word index to the maximum value of a signed integer
+   to simplify cache disabling.  */
+#define BITSET_WINDEX_MAX (((bitset_windex) -1) >> 1)
 #define BITSET_SIZE_MAX ((size_t) -1)
 
 #define BITSET_MSB ((bitset_word) 1 << (BITSET_WORD_BITS - 1))
index 2d9493d57501ff4ce5bc7a85f72c8190b4cccccb..3fea4afd28eb607e4347a27a64dc0f5d2baf2f54 100644 (file)
@@ -771,7 +771,7 @@ ebitset_list (bset, list, num, next)
          bitset_word *srcp = EBITSET_WORDS (elt);
 
          windex = bitno / BITSET_WORD_BITS;
-         woffset = eindex / EBITSET_ELT_WORDS;
+         woffset = eindex * EBITSET_ELT_WORDS;
 
          for (; (windex - woffset) < EBITSET_ELT_WORDS; windex++)
            {