Revert last patch which causes tblgen to segfault (why, I'm not sure).
authorReid Spencer <rspencer@reidspencer.com>
Thu, 2 Nov 2006 21:07:40 +0000 (21:07 +0000)
committerReid Spencer <rspencer@reidspencer.com>
Thu, 2 Nov 2006 21:07:40 +0000 (21:07 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@31383 91177308-0d34-0410-b5e6-96231b3b80d8

utils/TableGen/DAGISelEmitter.cpp

index 39480c966404a92f0e5006fa5ba3baf97e756c03..4f5a731736ec0785e6492d4aacd96552a9b39b91 100644 (file)
@@ -2259,11 +2259,13 @@ public:
     unsigned OpNo = 0;
     bool NodeHasChain = NodeHasProperty   (N, SDNPHasChain, ISE);
     bool HasChain     = PatternHasProperty(N, SDNPHasChain, ISE);
+    bool HasOutFlag   = PatternHasProperty(N, SDNPOutFlag,  ISE);
     bool EmittedUseCheck = false;
     if (HasChain) {
       if (NodeHasChain)
         OpNo = 1;
       if (!isRoot) {
+        const SDNodeInfo &CInfo = ISE.getSDNodeInfo(N->getOperator());
         // Multiple uses of actual result?
         emitCheck(RootName + ".hasOneUse()");
         EmittedUseCheck = true;
@@ -2327,6 +2329,7 @@ public:
         (PatternHasProperty(N, SDNPInFlag, ISE) ||
          PatternHasProperty(N, SDNPOptInFlag, ISE) ||
          PatternHasProperty(N, SDNPOutFlag, ISE))) {
+      const SDNodeInfo &CInfo = ISE.getSDNodeInfo(N->getOperator());
       if (!EmittedUseCheck) {
         // Multiple uses of actual result?
         emitCheck(RootName + ".hasOneUse()");
@@ -3315,9 +3318,10 @@ void DAGISelEmitter::EmitInstructionSelector(std::ostream &OS) {
       PatternsByOpcode[Node->getOperator()].push_back(&PatternsToMatch[i]);
     } else {
       const ComplexPattern *CP;
-      if (dynamic_cast<IntInit*>(Node->getLeafValue())) {
+      if (IntInit *II = 
+          dynamic_cast<IntInit*>(Node->getLeafValue())) {
         PatternsByOpcode[getSDNodeNamed("imm")].push_back(&PatternsToMatch[i]);
-      } else if (NodeGetComplexPattern(Node, *this)) {
+      } else if ((CP = NodeGetComplexPattern(Node, *this))) {
         std::vector<Record*> OpNodes = CP->getRootNodes();
         for (unsigned j = 0, e = OpNodes.size(); j != e; j++) {
           PatternsByOpcode[OpNodes[j]]