Don't generate silly matching code like this:
authorEvan Cheng <evan.cheng@apple.com>
Tue, 7 Mar 2006 08:31:27 +0000 (08:31 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 7 Mar 2006 08:31:27 +0000 (08:31 +0000)
 if (N1.getOpcode() == ISD::ADD &&
     ...)
   if (... &&
       (N1.getNumOperands() == 1 || !isNonImmUse(N1.Val, N10.Val))) &&
       ...)

TableGen knows N1 must have more than one operand.

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

utils/TableGen/DAGISelEmitter.cpp

index 872f08cc3be9647b4e57f20d010657f765a6c9d5..a50827e73553f8d4f1af90e76ea107a7d130b16d 100644 (file)
@@ -2006,9 +2006,14 @@ public:
               PInfo.hasProperty(SDNodeInfo::SDNPHasChain) ||
               PInfo.hasProperty(SDNodeInfo::SDNPInFlag) ||
               PInfo.hasProperty(SDNodeInfo::SDNPOptInFlag))
-            emitCheck("(" + ParentName + ".getNumOperands() == 1 || !" +
-                      "isNonImmUse(" + ParentName + ".Val, " + RootName +
-                      ".Val))");
+            if (PInfo.getNumOperands() > 1) {
+              emitCheck("!isNonImmUse(" + ParentName + ".Val, " + RootName +
+                        ".Val)");
+            } else {
+              emitCheck("(" + ParentName + ".getNumOperands() == 1 || !" +
+                        "isNonImmUse(" + ParentName + ".Val, " + RootName +
+                        ".Val))");
+            }
         }
       }