summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
diff options
context:
space:
mode:
authorChandler Carruth <chandlerc@gmail.com>2013-07-20 23:33:06 +0000
committerChandler Carruth <chandlerc@gmail.com>2013-07-20 23:33:06 +0000
commitf3878f46cecac3326a3e53db5eca7b04af995ab1 (patch)
tree920fb185c5b70c822c73eecc3e47b85edcec70d1 /llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
parente62f211b777cc2113652f2afd3486aea57d46f24 (diff)
downloadbcm5719-llvm-f3878f46cecac3326a3e53db5eca7b04af995ab1.tar.gz
bcm5719-llvm-f3878f46cecac3326a3e53db5eca7b04af995ab1.zip
Don't allocate the DIBuilder on the heap and remove all the complexity
that ensued from that. llvm-svn: 186777
Diffstat (limited to 'llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp')
-rw-r--r--llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp24
1 files changed, 8 insertions, 16 deletions
diff --git a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
index ef1b55a3487..bb215cd1440 100644
--- a/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
+++ b/llvm/lib/Transforms/Utils/PromoteMemoryToRegister.cpp
@@ -178,7 +178,7 @@ struct PromoteMem2Reg {
/// The alloca instructions being promoted.
std::vector<AllocaInst *> Allocas;
DominatorTree &DT;
- DIBuilder *DIB;
+ DIBuilder DIB;
/// An AliasSetTracker object to update. If null, don't update it.
AliasSetTracker *AST;
@@ -225,8 +225,8 @@ struct PromoteMem2Reg {
public:
PromoteMem2Reg(const std::vector<AllocaInst *> &Allocas, DominatorTree &DT,
AliasSetTracker *AST)
- : Allocas(Allocas), DT(DT), DIB(0), AST(AST) {}
- ~PromoteMem2Reg() { delete DIB; }
+ : Allocas(Allocas), DT(DT), DIB(*DT.getRoot()->getParent()->getParent()),
+ AST(AST) {}
void run();
@@ -405,9 +405,7 @@ void PromoteMem2Reg::run() {
// Record debuginfo for the store and remove the declaration's
// debuginfo.
if (DbgDeclareInst *DDI = Info.DbgDeclare) {
- if (!DIB)
- DIB = new DIBuilder(*DDI->getParent()->getParent()->getParent());
- ConvertDebugDeclareToDebugValue(DDI, Info.OnlyStore, *DIB);
+ ConvertDebugDeclareToDebugValue(DDI, Info.OnlyStore, DIB);
DDI->eraseFromParent();
}
// Remove the (now dead) store and alloca.
@@ -440,11 +438,8 @@ void PromoteMem2Reg::run() {
while (!AI->use_empty()) {
StoreInst *SI = cast<StoreInst>(AI->use_back());
// Record debuginfo for the store before removing it.
- if (DbgDeclareInst *DDI = Info.DbgDeclare) {
- if (!DIB)
- DIB = new DIBuilder(*SI->getParent()->getParent()->getParent());
- ConvertDebugDeclareToDebugValue(DDI, SI, *DIB);
- }
+ if (DbgDeclareInst *DDI = Info.DbgDeclare)
+ ConvertDebugDeclareToDebugValue(DDI, SI, DIB);
SI->eraseFromParent();
LBI.deleteValue(SI);
}
@@ -1089,11 +1084,8 @@ NextIteration:
// what value were we writing?
IncomingVals[ai->second] = SI->getOperand(0);
// Record debuginfo for the store before removing it.
- if (DbgDeclareInst *DDI = AllocaDbgDeclares[ai->second]) {
- if (!DIB)
- DIB = new DIBuilder(*SI->getParent()->getParent()->getParent());
- ConvertDebugDeclareToDebugValue(DDI, SI, *DIB);
- }
+ if (DbgDeclareInst *DDI = AllocaDbgDeclares[ai->second])
+ ConvertDebugDeclareToDebugValue(DDI, SI, DIB);
BB->getInstList().erase(SI);
}
}
OpenPOWER on IntegriCloud