summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2007-03-26 23:19:29 +0000
committerDevang Patel <dpatel@apple.com>2007-03-26 23:19:29 +0000
commit4398e242dd588e3fd054d93da7b7354fb2a86e39 (patch)
tree89dbc101fd75d3ddfd97abf9f0b195726b790b7f /llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
parentbea581d70c6dfe3331ad1a39ff7f21d2ef7a7267 (diff)
downloadbcm5719-llvm-4398e242dd588e3fd054d93da7b7354fb2a86e39.tar.gz
bcm5719-llvm-4398e242dd588e3fd054d93da7b7354fb2a86e39.zip
Reduce malloc/free traffic.
llvm-svn: 35370
Diffstat (limited to 'llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp20
1 files changed, 8 insertions, 12 deletions
diff --git a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
index 53de303a5ae..be804238525 100644
--- a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
+++ b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
@@ -77,7 +77,7 @@ namespace {
class VISIBILITY_HIDDEN RenamePassData {
public:
RenamePassData(BasicBlock *B, BasicBlock *P,
- std::vector<Value *> V) : BB(B), Pred(P), Values(V) {}
+ const std::vector<Value *> &V) : BB(B), Pred(P), Values(V) {}
BasicBlock *BB;
BasicBlock *Pred;
std::vector<Value *> Values;
@@ -123,7 +123,7 @@ namespace {
DenseMap<BasicBlock*, unsigned> BBNumbers;
/// RenamePassWorkList - Worklist used by RenamePass()
- std::vector<RenamePassData *> RenamePassWorkList;
+ std::vector<RenamePassData> RenamePassWorkList;
public:
PromoteMem2Reg(const std::vector<AllocaInst*> &A,
@@ -407,13 +407,12 @@ void PromoteMem2Reg::run() {
// and inserting the phi nodes we marked as necessary
//
RenamePassWorkList.clear();
- RenamePassData *RPD = new RenamePassData(F.begin(), 0, Values);
- RenamePassWorkList.push_back(RPD);
+ RenamePassWorkList.push_back(RenamePassData(F.begin(), 0, Values));
while(!RenamePassWorkList.empty()) {
- RenamePassData *RPD = RenamePassWorkList.back(); RenamePassWorkList.pop_back();
+ RenamePassData RPD = RenamePassWorkList.back();
+ RenamePassWorkList.pop_back();
// RenamePass may add new worklist entries.
- RenamePass(RPD->BB, RPD->Pred, RPD->Values);
- delete RPD;
+ RenamePass(RPD.BB, RPD.Pred, RPD.Values);
}
// The renamer uses the Visited set to avoid infinite loops. Clear it now.
@@ -794,11 +793,8 @@ void PromoteMem2Reg::RenamePass(BasicBlock *BB, BasicBlock *Pred,
// Recurse to our successors.
TerminatorInst *TI = BB->getTerminator();
- for (unsigned i = 0; i != TI->getNumSuccessors(); i++) {
- RenamePassData *RPD = new RenamePassData(TI->getSuccessor(i), BB,
- IncomingVals);
- RenamePassWorkList.push_back(RPD);
- }
+ for (unsigned i = 0; i != TI->getNumSuccessors(); i++)
+ RenamePassWorkList.push_back(RenamePassData(TI->getSuccessor(i), BB, IncomingVals));
}
/// PromoteMemToReg - Promote the specified list of alloca instructions into
OpenPOWER on IntegriCloud