PredicateOperand related bug fix.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 15 May 2007 01:19:51 +0000 (01:19 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 15 May 2007 01:19:51 +0000 (01:19 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37060 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/DAGISelEmitter.cpp

index c3db37e696e6089b56f357330c3d6ddc11b60024..1926359c43fab9a053d95f5be29543b158042ebc 100644 (file)
@@ -2799,6 +2799,7 @@ public:
       // in the 'execute always' values.  Match up the node operands to the
       // instruction operands to do this.
       std::vector<std::string> AllOps;
+      unsigned NumEAInputs = 0; // # of synthesized 'execute always' inputs.
       for (unsigned ChildNo = 0, InstOpNo = NumResults;
            InstOpNo != II.OperandList.size(); ++InstOpNo) {
         std::vector<std::string> Ops;
@@ -2821,6 +2822,7 @@ public:
             Ops = EmitResultCode(Pred.AlwaysOps[i], RetSelected, 
                                  InFlagDecled, ResNodeDecled);
             AllOps.insert(AllOps.end(), Ops.begin(), Ops.end());
+            NumEAInputs += Ops.size();
           }
         }
       }
@@ -2899,7 +2901,7 @@ public:
           else if (NodeHasOptInFlag)
             EndAdjust = "-(HasInFlag?1:0)"; // May have a flag.
 
-          emitCode("for (unsigned i = " + utostr(NumInputs) +
+          emitCode("for (unsigned i = " + utostr(NumInputs - NumEAInputs) +
                    ", e = N.getNumOperands()" + EndAdjust + "; i != e; ++i) {");
 
           emitCode("  AddToISelQueue(N.getOperand(i));");