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;
   }