Machine CSE was forgetting to clear some data structures.
authorEvan Cheng <evan.cheng@apple.com>
Fri, 17 Sep 2010 21:59:42 +0000 (21:59 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Fri, 17 Sep 2010 21:59:42 +0000 (21:59 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@114222 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/MachineCSE.cpp

index 39a50d2078f0c26d2a8cc46296cdf10244032b65..272b54dea1fa50fe281cc6557b6f87ff6e56ad7a 100644 (file)
@@ -54,6 +54,11 @@ namespace {
       AU.addPreserved<MachineDominatorTree>();
     }
 
+    virtual void releaseMemory() {
+      ScopeMap.clear();
+      Exps.clear();
+    }
+
   private:
     const unsigned LookAheadLimit;
     typedef ScopedHashTableScope<MachineInstr*, unsigned,
@@ -469,6 +474,8 @@ bool MachineCSE::PerformCSE(MachineDomTreeNode *Node) {
   DenseMap<MachineDomTreeNode*, MachineDomTreeNode*> ParentMap;
   DenseMap<MachineDomTreeNode*, unsigned> OpenChildren;
 
+  CurrVN = 0;
+
   // Perform a DFS walk to determine the order of visit.
   WorkList.push_back(Node);
   do {