[llvm-commits] [llvm] r57353 - /llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Nuno Lopes
nunoplopes at sapo.pt
Fri Oct 10 09:25:52 PDT 2008
Author: nlopes
Date: Fri Oct 10 11:25:50 2008
New Revision: 57353
URL: http://llvm.org/viewvc/llvm-project?rev=57353&view=rev
Log:
fix memleak by cleaning the global sets on pass exit
Modified:
llvm/trunk/lib/Transforms/Scalar/GVN.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/GVN.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/GVN.cpp?rev=57353&r1=57352&r2=57353&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/GVN.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/GVN.cpp Fri Oct 10 11:25:50 2008
@@ -739,6 +739,7 @@
bool performPRE(Function& F);
Value* lookupNumber(BasicBlock* BB, uint32_t num);
bool mergeBlockIntoPredecessor(BasicBlock* BB);
+ void cleanupGlobalSets();
};
char GVN::ID = 0;
@@ -1129,7 +1130,9 @@
changed |= PREChanged;
}
}
-
+
+ cleanupGlobalSets();
+
return changed;
}
@@ -1332,16 +1335,9 @@
// iterateOnFunction - Executes one iteration of GVN
bool GVN::iterateOnFunction(Function &F) {
- // Clean out global sets from any previous functions
- VN.clear();
- phiMap.clear();
-
- for (DenseMap<BasicBlock*, ValueNumberScope*>::iterator
- I = localAvail.begin(), E = localAvail.end(); I != E; ++I)
- delete I->second;
- localAvail.clear();
-
- DominatorTree &DT = getAnalysis<DominatorTree>();
+ DominatorTree &DT = getAnalysis<DominatorTree>();
+
+ cleanupGlobalSets();
// Top-down walk of the dominator tree
bool changed = false;
@@ -1351,3 +1347,13 @@
return changed;
}
+
+void GVN::cleanupGlobalSets() {
+ VN.clear();
+ phiMap.clear();
+
+ for (DenseMap<BasicBlock*, ValueNumberScope*>::iterator
+ I = localAvail.begin(), E = localAvail.end(); I != E; ++I)
+ delete I->second;
+ localAvail.clear();
+}
More information about the llvm-commits
mailing list