Changes in directory llvm/include/llvm/ADT:
BitVector.h updated: 1.3 -> 1.4 --- Log message: Eliminate new[0], just set Bits to NULL. --- Diffs of the changes: (+20 -11) BitVector.h | 31 ++++++++++++++++++++----------- 1 files changed, 20 insertions(+), 11 deletions(-) Index: llvm/include/llvm/ADT/BitVector.h diff -u llvm/include/llvm/ADT/BitVector.h:1.3 llvm/include/llvm/ADT/BitVector.h:1.4 --- llvm/include/llvm/ADT/BitVector.h:1.3 Thu Feb 15 12:48:41 2007 +++ llvm/include/llvm/ADT/BitVector.h Thu Feb 15 12:59:15 2007 @@ -69,7 +69,7 @@ /// BitVector default ctor - Creates an empty bitvector. BitVector() : Size(0), Capacity(0) { - Bits = new BitWord[0]; + Bits = NULL; } /// BitVector ctor - Creates a bitvector of specified number of bits. All @@ -154,9 +154,11 @@ /// clear - Clear all bits. void clear() { - delete[] Bits; - Bits = new BitWord[0]; - Size = Capacity = 0; + if (Capacity > 0) { + delete[] Bits; + Bits = NULL; + Size = Capacity = 0; + } } /// resize - Grow or shrink the bitvector. @@ -186,8 +188,10 @@ // Set, reset, flip BitVector &set() { - init_words(Bits, Capacity, true); - clear_unused_bits(); + if (Bits) { + init_words(Bits, Capacity, true); + clear_unused_bits(); + } return *this; } @@ -197,7 +201,8 @@ } BitVector &reset() { - init_words(Bits, Capacity, false); + if (Bits) + init_words(Bits, Capacity, false); return *this; } @@ -303,8 +308,10 @@ // Clear the unused top bits in the high word. void clear_unused_bits() { - unsigned ExtraBits = Size % BITS_PER_WORD; - Bits[Size / BITS_PER_WORD] &= ~(~0 << ExtraBits); + if (Size) { + unsigned ExtraBits = Size % BITS_PER_WORD; + Bits[Size / BITS_PER_WORD] &= ~(~0 << ExtraBits); + } } void grow(unsigned NewSize) { @@ -317,12 +324,14 @@ std::copy(Bits, &Bits[OldCapacity], NewBits); // Destroy the old bits. - delete[] Bits; + if (Bits) + delete[] Bits; Bits = NewBits; } void init_words(BitWord *B, unsigned NumWords, bool t) { - memset(B, 0 - (int)t, NumWords*sizeof(BitWord)); + if (B) + memset(B, 0 - (int)t, NumWords*sizeof(BitWord)); } }; _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits