Remove InFlightSet hack. No longer needed.
authorEvan Cheng <evan.cheng@apple.com>
Fri, 28 Jul 2006 00:47:19 +0000 (00:47 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 28 Jul 2006 00:47:19 +0000 (00:47 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29373 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/SelectionDAG.h
lib/CodeGen/SelectionDAG/SelectionDAG.cpp
lib/Target/ARM/ARMISelDAGToDAG.cpp
lib/Target/Alpha/AlphaISelDAGToDAG.cpp
lib/Target/IA64/IA64ISelDAGToDAG.cpp
lib/Target/PowerPC/PPCISelDAGToDAG.cpp
lib/Target/Sparc/SparcISelDAGToDAG.cpp
utils/TableGen/DAGISelEmitter.cpp

index 4de4161103a12639739ee3d2519410fd16c60a8e..91d2800cc4297730dddd72317ff7cb5888c4f576 100644 (file)
@@ -435,16 +435,6 @@ public:
                                  SDNode *Key, unsigned KeyResNo,
                                  SDNode *Element, unsigned ElementResNo);
 
-  /// InsertInFlightSetEntry - A helper function to insert a SDNode* to a
-  /// SDNode* set. This is added to avoid the set insertion operator from being
-  /// inlined.
-  static void InsertInFlightSetEntry(std::set<SDNode*> &Set, SDNode *N);
-
-  /// RemoveInFlightSetEntry - A helper function to remove a SDNode* from a
-  /// SDNode* set. This is added to avoid the set removal operator from being
-  /// inlined.
-  static void RemoveInFlightSetEntry(std::set<SDNode*> &Set, SDNode *N);
-  
 private:
   void RemoveNodeFromCSEMaps(SDNode *N);
   SDNode *AddNonLeafNodeToCSEMaps(SDNode *N);
index 1a5a09b1dc9715f72b8174921e062cf7ce3011c8..8c40a72bec1cb27adb18281476023a3234243125 100644 (file)
@@ -3115,17 +3115,3 @@ void SelectionDAG::InsertISelMapEntry(std::map<SDOperand, SDOperand> &Map,
   Map.insert(std::make_pair(SDOperand(Key, KeyResNo),
                             SDOperand(Element, ElementResNo)));
 }
-
-/// InsertInFlightSetEntry - A helper function to insert a SDNode* to a
-/// SDNode* set. This is added to avoid the set insertion operator from being
-/// inlined.
-void SelectionDAG::InsertInFlightSetEntry(std::set<SDNode*> &Set, SDNode *N) {
-  Set.insert(N);
-}
-
-/// RemoveInFlightSetEntry - A helper function to remove a SDNode* from a
-/// SDNode* set. This is added to avoid the set removal operator from being
-/// inlined.
-void SelectionDAG::RemoveInFlightSetEntry(std::set<SDNode*> &Set, SDNode *N) {
-  Set.erase(N);
-}
index 8ca7c0b40c0a7c9e45413bd0e7ec1629fd2917e1..59704cb41497b15699e8a13788e281ed61a5781d 100644 (file)
@@ -282,7 +282,6 @@ void ARMDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
   DEBUG(BB->dump());
 
   DAG.setRoot(SelectRoot(DAG.getRoot()));
-  assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
   CodeGenMap.clear();
   HandleMap.clear();
   ReplaceMap.clear();
index 32d5222a025a1605c0e7a2df0a834a01bfb42f04..78a78143c15902274885e3358a546ea91ba38732 100644 (file)
@@ -172,7 +172,6 @@ void AlphaDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
   
   // Select target instructions for the DAG.
   DAG.setRoot(SelectRoot(DAG.getRoot()));
-  assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
   CodeGenMap.clear();
   HandleMap.clear();
   ReplaceMap.clear();
index 3fb7b2a3b8a5351dc90a8da71a20c3d20ad56f10..fe5a7bb0abdf078ac88da5f87c30849ad120c7de 100644 (file)
@@ -142,7 +142,6 @@ void IA64DAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
     
   // Select target instructions for the DAG.
   DAG.setRoot(SelectRoot(DAG.getRoot()));
-  assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
   CodeGenMap.clear();
   HandleMap.clear();
   ReplaceMap.clear();
index 99d97881491d674164a056b5e0a879345462ccbb..937092ab029d183900b17aac39826d77e0f90772 100644 (file)
@@ -215,7 +215,6 @@ void PPCDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
     
   // Select target instructions for the DAG.
   DAG.setRoot(SelectRoot(DAG.getRoot()));
-  assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
   CodeGenMap.clear();
   HandleMap.clear();
   ReplaceMap.clear();
index 4be7fa582d055ce30153b1af1503fb10d37f236b..1004109524d815fb82bd26cc9a3f553024ec1f85 100644 (file)
@@ -1001,7 +1001,6 @@ void SparcDAGToDAGISel::InstructionSelectBasicBlock(SelectionDAG &DAG) {
   
   // Select target instructions for the DAG.
   DAG.setRoot(SelectRoot(DAG.getRoot()));
-  assert(InFlightSet.empty() && "ISel InFlightSet has not been emptied!");
   CodeGenMap.clear();
   HandleMap.clear();
   ReplaceMap.clear();
index 935038ba3f6d1cc8d642154326bb3d20a2243ed9..fa4d8492e44aae7e3f0d3d1aefe2cce331a3dd43 100644 (file)
@@ -2106,8 +2106,6 @@ private:
   // Names of all the folded nodes which produce chains.
   std::vector<std::pair<std::string, unsigned> > FoldedChains;
   std::set<std::string> Duplicates;
-  /// These nodes are being marked "in-flight" so they cannot be folded.
-  std::vector<std::string> InflightNodes;
 
   /// GeneratedCode - This is the buffer that we emit code to.  The first bool
   /// indicates whether this is an exit predicate (something that should be
@@ -2231,8 +2229,6 @@ public:
         OpNo = 1;
       if (!isRoot) {
         const SDNodeInfo &CInfo = ISE.getSDNodeInfo(N->getOperator());
-        // Not in flight?
-        emitCheck("InFlightSet.count(" + RootName + ".Val) == 0");
         // Multiple uses of actual result?
         emitCheck(RootName + ".hasOneUse()");
         EmittedUseCheck = true;
@@ -2477,23 +2473,8 @@ public:
         for (unsigned i = 0; i < NumRes; i++)
           Code += ", CPTmp" + utostr(i + ResNo);
         emitCode(Code + ");");
-        if (InflightNodes.size()) {
-          // Remove the in-flight nodes if the ComplexPattern does not match!
-          emitCode("if (!Match) {");
-          for (std::vector<std::string>::iterator AI = InflightNodes.begin(),
-                 AE = InflightNodes.end(); AI != AE; ++AI)
-            emitCode("  SelectionDAG::RemoveInFlightSetEntry(InFlightSet, " +
-                     *AI + ".Val);");
-          emitCode("}");
-        }
-
         emitCheck("Match");
 
-        for (unsigned i = 0; i < NumRes; ++i) {
-          emitCode("SelectionDAG::InsertInFlightSetEntry(InFlightSet, CPTmp" +
-                   utostr(i+ResNo) + ".Val);");
-          InflightNodes.push_back("CPTmp" + utostr(i+ResNo));
-        }
         for (unsigned i = 0; i < NumRes; ++i) {
           emitDecl("Tmp" + utostr(i+ResNo));
           emitCode("Select(Tmp" + utostr(i+ResNo) + ", CPTmp" +
@@ -2608,22 +2589,6 @@ public:
         }
       }
 
-      // Make sure these operands which would be selected won't be folded while
-      // the isel traverses the DAG upward.
-      for (unsigned i = 0, e = EmitOrder.size(); i != e; ++i) {
-        TreePatternNode *Child = EmitOrder[i].second;
-        if (!Child->getName().empty()) {
-          std::string &Val = VariableMap[Child->getName()];
-          assert(!Val.empty() &&
-                 "Variable referenced but not defined and not caught earlier!");
-          if (Child->isLeaf() && !NodeGetComplexPattern(Child, ISE)) {
-            emitCode("SelectionDAG::InsertInFlightSetEntry(InFlightSet, " +
-                     Val + ".Val);");
-            InflightNodes.push_back(Val);
-          }
-        }
-      }
-
       // Emit all of the operands.
       std::vector<std::pair<unsigned, unsigned> > NumTemps(EmitOrder.size());
       for (unsigned i = 0, e = EmitOrder.size(); i != e; ++i) {
@@ -2651,14 +2616,6 @@ public:
         emitCode("  Select(InFlag, N.getOperand(N.getNumOperands()-1));");
       }
 
-      if (isRoot) {
-        // The operands have been selected. Remove them from InFlightSet.
-        for (std::vector<std::string>::iterator AI = InflightNodes.begin(),
-               AE = InflightNodes.end(); AI != AE; ++AI)
-          emitCode("SelectionDAG::RemoveInFlightSetEntry(InFlightSet, " +
-                   *AI + ".Val);");
-      }
-
       unsigned NumResults = Inst.getNumResults();    
       unsigned ResNo = TmpNo++;
       if (!isRoot || InputHasChain || NodeHasChain || NodeHasOutFlag ||
@@ -3639,9 +3596,6 @@ void DAGISelEmitter::run(std::ostream &OS) {
   OS << "// Instance var to keep track of mapping of place handle nodes\n"
      << "// and their replacement nodes.\n";
   OS << "std::map<SDOperand, SDOperand> ReplaceMap;\n";
-  OS << "// Keep track of nodes that are currently being selecte and therefore\n"
-     << "// should not be folded.\n";
-  OS << "std::set<SDNode*> InFlightSet;\n";
 
   OS << "\n";
   OS << "// AddHandleReplacement - Note the pending replacement node for a\n"