From 680a7c2d1a60880c9ba4b123fb721a6c6fe8b016 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Sun, 22 Jun 2003 03:09:10 +0000 Subject: [PATCH] Get rid of WORDSIZE macro which can pollute untold numbers of translation units git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@6843 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/Support/BitSetVector.h | 30 ++++++++++++------------------ include/llvm/ADT/BitSetVector.h | 30 ++++++++++++------------------ 2 files changed, 24 insertions(+), 36 deletions(-) diff --git a/include/Support/BitSetVector.h b/include/Support/BitSetVector.h index 2200df746f3..898ea53f65e 100644 --- a/include/Support/BitSetVector.h +++ b/include/Support/BitSetVector.h @@ -9,12 +9,6 @@ // We therefore use a vector of bitsets. The maxmimum size of our sets // (i.e., the size of the universal set) can be chosen at creation time. // -// The size of each Bitset is defined by the macro WORDSIZE. -// -// NOTE: The WORDSIZE macro should be made machine-dependent, in order to use -// 64-bit words or whatever gives most efficient Bitsets on each platform. -// -// // External functions: // // bool Disjoint(const BitSetVector& set1, const BitSetVector& set2): @@ -30,15 +24,13 @@ #include #include #include - #include -#define WORDSIZE (32U) - - class BitSetVector { + enum { BITSET_WORDSIZE = sizeof(long)*8 }; + // Types used internal to the representation - typedef std::bitset bitword; + typedef std::bitset bitword; typedef bitword::reference reference; class iterator; @@ -48,11 +40,13 @@ class BitSetVector { private: // Utility functions for the representation - static unsigned NumWords(unsigned Size) { return (Size+WORDSIZE-1)/WORDSIZE;} - static unsigned LastWordSize(unsigned Size) { return Size % WORDSIZE; } + static unsigned NumWords(unsigned Size) { + return (Size+BITSET_WORDSIZE-1)/BITSET_WORDSIZE; + } + static unsigned LastWordSize(unsigned Size) { return Size % BITSET_WORDSIZE; } // Clear the unused bits in the last word. - // The unused bits are the high (WORDSIZE - LastWordSize()) bits + // The unused bits are the high (BITSET_WORDSIZE - LastWordSize()) bits void ClearUnusedBits() { unsigned long usedBits = (1U << LastWordSize(size())) - 1; bitsetVec.back() &= bitword(usedBits); @@ -91,7 +85,7 @@ public: } reference operator[](unsigned n) { assert(n < size() && "BitSetVector: Bit number out of range"); - unsigned ndiv = n / WORDSIZE, nmod = n % WORDSIZE; + unsigned ndiv = n / BITSET_WORDSIZE, nmod = n % BITSET_WORDSIZE; return bitsetVec[ndiv][nmod]; } iterator begin() { return iterator::begin(*this); } @@ -116,7 +110,7 @@ public: /// bool test(unsigned n) const { assert(n < size() && "BitSetVector: Bit number out of range"); - unsigned ndiv = n / WORDSIZE, nmod = n % WORDSIZE; + unsigned ndiv = n / BITSET_WORDSIZE, nmod = n % BITSET_WORDSIZE; return bitsetVec[ndiv].test(nmod); } bool any() const { @@ -203,13 +197,13 @@ public: // Increment and decrement operators (pre and post) iterator& operator++() { - if (++currentBit == WORDSIZE) + if (++currentBit == BITSET_WORDSIZE) { currentBit = 0; if (currentWord < bitvec->size()) ++currentWord; } return *this; } iterator& operator--() { if (currentBit == 0) { - currentBit = WORDSIZE-1; + currentBit = BITSET_WORDSIZE-1; currentWord = (currentWord == 0)? bitvec->size() : --currentWord; } else diff --git a/include/llvm/ADT/BitSetVector.h b/include/llvm/ADT/BitSetVector.h index 2200df746f3..898ea53f65e 100644 --- a/include/llvm/ADT/BitSetVector.h +++ b/include/llvm/ADT/BitSetVector.h @@ -9,12 +9,6 @@ // We therefore use a vector of bitsets. The maxmimum size of our sets // (i.e., the size of the universal set) can be chosen at creation time. // -// The size of each Bitset is defined by the macro WORDSIZE. -// -// NOTE: The WORDSIZE macro should be made machine-dependent, in order to use -// 64-bit words or whatever gives most efficient Bitsets on each platform. -// -// // External functions: // // bool Disjoint(const BitSetVector& set1, const BitSetVector& set2): @@ -30,15 +24,13 @@ #include #include #include - #include -#define WORDSIZE (32U) - - class BitSetVector { + enum { BITSET_WORDSIZE = sizeof(long)*8 }; + // Types used internal to the representation - typedef std::bitset bitword; + typedef std::bitset bitword; typedef bitword::reference reference; class iterator; @@ -48,11 +40,13 @@ class BitSetVector { private: // Utility functions for the representation - static unsigned NumWords(unsigned Size) { return (Size+WORDSIZE-1)/WORDSIZE;} - static unsigned LastWordSize(unsigned Size) { return Size % WORDSIZE; } + static unsigned NumWords(unsigned Size) { + return (Size+BITSET_WORDSIZE-1)/BITSET_WORDSIZE; + } + static unsigned LastWordSize(unsigned Size) { return Size % BITSET_WORDSIZE; } // Clear the unused bits in the last word. - // The unused bits are the high (WORDSIZE - LastWordSize()) bits + // The unused bits are the high (BITSET_WORDSIZE - LastWordSize()) bits void ClearUnusedBits() { unsigned long usedBits = (1U << LastWordSize(size())) - 1; bitsetVec.back() &= bitword(usedBits); @@ -91,7 +85,7 @@ public: } reference operator[](unsigned n) { assert(n < size() && "BitSetVector: Bit number out of range"); - unsigned ndiv = n / WORDSIZE, nmod = n % WORDSIZE; + unsigned ndiv = n / BITSET_WORDSIZE, nmod = n % BITSET_WORDSIZE; return bitsetVec[ndiv][nmod]; } iterator begin() { return iterator::begin(*this); } @@ -116,7 +110,7 @@ public: /// bool test(unsigned n) const { assert(n < size() && "BitSetVector: Bit number out of range"); - unsigned ndiv = n / WORDSIZE, nmod = n % WORDSIZE; + unsigned ndiv = n / BITSET_WORDSIZE, nmod = n % BITSET_WORDSIZE; return bitsetVec[ndiv].test(nmod); } bool any() const { @@ -203,13 +197,13 @@ public: // Increment and decrement operators (pre and post) iterator& operator++() { - if (++currentBit == WORDSIZE) + if (++currentBit == BITSET_WORDSIZE) { currentBit = 0; if (currentWord < bitvec->size()) ++currentWord; } return *this; } iterator& operator--() { if (currentBit == 0) { - currentBit = WORDSIZE-1; + currentBit = BITSET_WORDSIZE-1; currentWord = (currentWord == 0)? bitvec->size() : --currentWord; } else -- 2.34.1