mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-02-10 04:33:40 +00:00
make bitvector &= do the right thing if vectors have mismatched length.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@42860 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
3ef437d137
commit
343960af31
@ -274,9 +274,18 @@ public:
|
||||
|
||||
// Intersection, union, disjoint union.
|
||||
BitVector operator&=(const BitVector &RHS) {
|
||||
assert(Size == RHS.Size && "Illegal operation!");
|
||||
for (unsigned i = 0; i < NumBitWords(size()); ++i)
|
||||
unsigned ThisWords = NumBitWords(size());
|
||||
unsigned RHSWords = NumBitWords(RHS.size());
|
||||
unsigned i;
|
||||
for (i = 0; i != std::min(ThisWords, RHSWords); ++i)
|
||||
Bits[i] &= RHS.Bits[i];
|
||||
|
||||
// Any bits that are just in this bitvector become zero, because they aren't
|
||||
// in the RHS bit vector. Any words only in RHS are ignored because they
|
||||
// are already zero in the LHS.
|
||||
for (; i != ThisWords; ++i)
|
||||
Bits[i] = 0;
|
||||
|
||||
return *this;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user