Move some key maps from std::map to DenseMap. This improves the time to optimize...
authorOwen Anderson <resistor@mac.com>
Tue, 10 Jul 2007 00:27:22 +0000 (00:27 +0000)
committerOwen Anderson <resistor@mac.com>
Tue, 10 Jul 2007 00:27:22 +0000 (00:27 +0000)
to 15.7s.

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

lib/Transforms/Scalar/GVNPRE.cpp

index 007c6777195f6480b8d45b55f93673d74c3efbeb..96870e3fdf2096ddd5ba9f80350b86de2f41f326 100644 (file)
@@ -556,6 +556,10 @@ class ValueNumberedSet {
     BitVector numbers;
   public:
     ValueNumberedSet() { numbers.resize(1); }
+    ValueNumberedSet(const ValueNumberedSet& other) {
+      numbers = other.numbers;
+      contents = other.contents;
+    }
     
     typedef SmallPtrSet<Value*, 8>::iterator iterator;
     
@@ -614,9 +618,9 @@ namespace {
     ValueTable VN;
     std::vector<Instruction*> createdExpressions;
     
-    std::map<BasicBlock*, ValueNumberedSet> availableOut;
-    std::map<BasicBlock*, ValueNumberedSet> anticipatedIn;
-    std::map<BasicBlock*, ValueNumberedSet> generatedPhis;
+    DenseMap<BasicBlock*, ValueNumberedSet> availableOut;
+    DenseMap<BasicBlock*, ValueNumberedSet> anticipatedIn;
+    DenseMap<BasicBlock*, ValueNumberedSet> generatedPhis;
     
     // This transformation requires dominator postdominator info
     virtual void getAnalysisUsage(AnalysisUsage &AU) const {
@@ -1175,7 +1179,7 @@ bool GVNPRE::elimination() {
           isa<ExtractElementInst>(BI) || isa<SelectInst>(BI) ||
           isa<CastInst>(BI) || isa<GetElementPtrInst>(BI)) {
         
-        if (availableOut[BB].test(VN.lookup(BI)) && ! availableOut[BB].count(BI)) {
+        if (availableOut[BB].test(VN.lookup(BI)) && !availableOut[BB].count(BI)) {
           Value *leader = find_leader(availableOut[BB], VN.lookup(BI));
           if (Instruction* Instr = dyn_cast<Instruction>(leader))
             if (Instr->getParent() != 0 && Instr != BI) {