Fix an accidentally duplicated line that caused tblgen to crash on itanium.
authorChris Lattner <sabre@nondot.org>
Tue, 18 Jul 2006 19:06:01 +0000 (19:06 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 18 Jul 2006 19:06:01 +0000 (19:06 +0000)
Add an assert that catches the real problem earlier.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29185 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/AsmWriterEmitter.cpp

index 432dc6a291d8638c8998a11389ab3e25eb6b7013..d8e983940789c237222fa59d5cddd08cea8b9ad9 100644 (file)
@@ -399,7 +399,6 @@ FindUniqueOperandCommands(std::vector<std::string> &UniqueOperandCommands,
       // set share the operand.
       bool AllSame = true;
       
-      NIT = std::find(NIT+1, InstIdxs.end(), CommandIdx);
       for (NIT = std::find(NIT+1, InstIdxs.end(), CommandIdx);
            NIT != InstIdxs.end();
            NIT = std::find(NIT+1, InstIdxs.end(), CommandIdx)) {
@@ -559,6 +558,8 @@ void AsmWriterEmitter::run(std::ostream &O) {
       if (AsmWriterInst *Inst = getAsmWriterInstByID(i))
         if (!Inst->Operands.empty()) {
           unsigned NumOps = NumInstOpsHandled[InstIdxs[i]];
+          assert(NumOps <= Inst->Operands.size() &&
+                 "Can't remove this many ops!");
           Inst->Operands.erase(Inst->Operands.begin(),
                                Inst->Operands.begin()+NumOps);
         }
@@ -679,8 +680,8 @@ void AsmWriterEmitter::run(std::ostream &O) {
       EmitInstructions(Instructions, O);
 
     O << "  }\n";
+    O << "  return true;\n";
   }
   
-  O << "  return true;\n"
-       "}\n";
+  O << "}\n";
 }