[llvm-commits] CVS: llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
Chris Lattner
sabre at nondot.org
Mon Feb 5 15:37:37 PST 2007
Changes in directory llvm/lib/Transforms/Utils:
PromoteMemoryToRegister.cpp updated: 1.91 -> 1.92
---
Log message:
With the last change, we no longer need both directions of mapping from
BBNumbers. Instead of using a bi-directional mapping, just use a single
densemap. This speeds up mem2reg on 176.gcc by 8%, from 1.3489 to
1.2485s.
---
Diffs of the changes: (+8 -4)
PromoteMemoryToRegister.cpp | 12 ++++++++----
1 files changed, 8 insertions(+), 4 deletions(-)
Index: llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
diff -u llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.91 llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.92
--- llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp:1.91 Mon Feb 5 17:31:26 2007
+++ llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp Mon Feb 5 17:37:20 2007
@@ -23,11 +23,11 @@
#include "llvm/Instructions.h"
#include "llvm/Analysis/Dominators.h"
#include "llvm/Analysis/AliasSetTracker.h"
+#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/Support/CFG.h"
-#include "llvm/Support/StableBasicBlockNumbering.h"
#include "llvm/Support/Compiler.h"
#include <algorithm>
using namespace llvm;
@@ -88,7 +88,7 @@
/// BBNumbers - Contains a stable numbering of basic blocks to avoid
/// non-determinstic behavior.
- StableBasicBlockNumbering BBNumbers;
+ DenseMap<BasicBlock*, unsigned> BBNumbers;
public:
PromoteMem2Reg(const std::vector<AllocaInst*> &A,
@@ -265,7 +265,11 @@
// If we haven't computed a numbering for the BB's in the function, do so
// now.
- BBNumbers.compute(F);
+ if (BBNumbers.empty()) {
+ unsigned ID = 0;
+ for (Function::iterator I = F.begin(), E = F.end(); I != E; ++I)
+ BBNumbers[I] = ID++;
+ }
// Compute the locations where PhiNodes need to be inserted. Look at the
// dominance frontier of EACH basic-block we have a write in.
@@ -289,7 +293,7 @@
// processing blocks in order of the occurance in the function.
for (DominanceFrontier::DomSetType::const_iterator P = S.begin(),
PE = S.end(); P != PE; ++P)
- DFBlocks.push_back(std::make_pair(BBNumbers.getNumber(*P), *P));
+ DFBlocks.push_back(std::make_pair(BBNumbers[*P], *P));
// Sort by which the block ordering in the function.
std::sort(DFBlocks.begin(), DFBlocks.end());
More information about the llvm-commits
mailing list