[llvm-commits] [llvm] r167634 - /llvm/trunk/utils/TableGen/CodeEmitterGen.cpp

Evandro Menezes emenezes at codeaurora.org
Fri Nov 9 12:29:38 PST 2012


Author: emenezes
Date: Fri Nov  9 14:29:37 2012
New Revision: 167634

URL: http://llvm.org/viewvc/llvm-project?rev=167634&view=rev
Log:
Fix issue with invalid flat operand number

Avoid iterating over list of operands beyond the number of operands in it.



Modified:
    llvm/trunk/utils/TableGen/CodeEmitterGen.cpp

Modified: llvm/trunk/utils/TableGen/CodeEmitterGen.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/utils/TableGen/CodeEmitterGen.cpp?rev=167634&r1=167633&r2=167634&view=diff
==============================================================================
--- llvm/trunk/utils/TableGen/CodeEmitterGen.cpp (original)
+++ llvm/trunk/utils/TableGen/CodeEmitterGen.cpp Fri Nov  9 14:29:37 2012
@@ -134,10 +134,15 @@
     assert(!CGI.Operands.isFlatOperandNotEmitted(OpIdx) &&
            "Explicitly used operand also marked as not emitted!");
   } else {
+    unsigned NumberOps = CGI.Operands.size();
     /// If this operand is not supposed to be emitted by the
     /// generated emitter, skip it.
-    while (CGI.Operands.isFlatOperandNotEmitted(NumberedOp))
+    while (NumberedOp < NumberOps &&
+           CGI.Operands.isFlatOperandNotEmitted(NumberedOp))
       ++NumberedOp;
+    // If this operand has not been found, ignore it.
+    if (NumberedOp >= NumberOps)
+      return;
     OpIdx = NumberedOp++;
   }
   





More information about the llvm-commits mailing list