Tighten up assertion checking
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4939 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/utils/TableGen/FileParser.y b/utils/TableGen/FileParser.y
index 38efb83..ff3ec40 100644
--- a/utils/TableGen/FileParser.y
+++ b/utils/TableGen/FileParser.y
@@ -89,14 +89,21 @@
BitsInit *NewVal = new BitsInit(CurVal->getNumBits());
- for (unsigned i = 0, e = CurVal->getNumBits(); i != e; ++i)
- NewVal->setBit(i, CurVal->getBit(i));
-
- // Loop over bits, assigning values as appopriate...
+ // Loop over bits, assigning values as appropriate...
for (unsigned i = 0, e = BitList->size(); i != e; ++i) {
unsigned Bit = (*BitList)[i];
+ if (NewVal->getBit(i)) {
+ err() << "Cannot set bit #" << i << " of value '" << ValName
+ << "' more than once!\n";
+ abort();
+ }
NewVal->setBit(Bit, BInit->getBit(i));
}
+
+ for (unsigned i = 0, e = CurVal->getNumBits(); i != e; ++i)
+ if (NewVal->getBit(i) == 0)
+ NewVal->setBit(i, CurVal->getBit(i));
+
V = NewVal;
}