aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCameron Zwarich <zwarich@apple.com>2011-05-24 06:00:08 +0000
committerCameron Zwarich <zwarich@apple.com>2011-05-24 06:00:08 +0000
commit13a16083abcdacf2ee44ae95b084f87937ea9ace (patch)
treecd282d17f5036fc35b071c69723160568386c07e
parentdfa178bc2a21667aab745ba9a182cd3e702fec3b (diff)
downloadexternal_llvm-13a16083abcdacf2ee44ae95b084f87937ea9ace.zip
external_llvm-13a16083abcdacf2ee44ae95b084f87937ea9ace.tar.gz
external_llvm-13a16083abcdacf2ee44ae95b084f87937ea9ace.tar.bz2
Clean up the lazy initialization of DIBuilder a bit.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@131956 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/llvm/Transforms/Utils/SSAUpdater.h4
-rw-r--r--lib/Transforms/Scalar/LICM.cpp3
-rw-r--r--lib/Transforms/Scalar/ScalarReplAggregates.cpp2
-rw-r--r--lib/Transforms/Utils/SSAUpdater.cpp12
4 files changed, 8 insertions, 13 deletions
diff --git a/include/llvm/Transforms/Utils/SSAUpdater.h b/include/llvm/Transforms/Utils/SSAUpdater.h
index 707862f..51c8467 100644
--- a/include/llvm/Transforms/Utils/SSAUpdater.h
+++ b/include/llvm/Transforms/Utils/SSAUpdater.h
@@ -123,10 +123,10 @@ class LoadAndStorePromoter {
protected:
SSAUpdater &SSA;
DbgDeclareInst *DDI;
- DIBuilder *&DIB;
+ DIBuilder *DIB;
public:
LoadAndStorePromoter(const SmallVectorImpl<Instruction*> &Insts,
- SSAUpdater &S, DbgDeclareInst *DDI, DIBuilder *&DIB,
+ SSAUpdater &S, DbgDeclareInst *DDI, DIBuilder *DIB,
StringRef Name = StringRef());
virtual ~LoadAndStorePromoter() {}
diff --git a/lib/Transforms/Scalar/LICM.cpp b/lib/Transforms/Scalar/LICM.cpp
index f706cc2..d42d4ff 100644
--- a/lib/Transforms/Scalar/LICM.cpp
+++ b/lib/Transforms/Scalar/LICM.cpp
@@ -602,13 +602,12 @@ namespace {
SmallPtrSet<Value*, 4> &PointerMustAliases;
SmallVectorImpl<BasicBlock*> &LoopExitBlocks;
AliasSetTracker &AST;
- DIBuilder *DIB; // Only passed to LoadAndStorePromoter.
public:
LoopPromoter(Value *SP,
const SmallVectorImpl<Instruction*> &Insts, SSAUpdater &S,
SmallPtrSet<Value*, 4> &PMA,
SmallVectorImpl<BasicBlock*> &LEB, AliasSetTracker &ast)
- : LoadAndStorePromoter(Insts, S, 0, DIB), SomePtr(SP),
+ : LoadAndStorePromoter(Insts, S, 0, 0), SomePtr(SP),
PointerMustAliases(PMA), LoopExitBlocks(LEB), AST(ast) {}
virtual bool isInstInList(Instruction *I,
diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
index ebcb88c..eb683b8 100644
--- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp
+++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp
@@ -1367,6 +1367,8 @@ bool SROA::performPromotion(Function &F) {
Insts.push_back(cast<Instruction>(*UI));
DbgDeclareInst *DDI = FindAllocaDbgDeclare(AI);
+ if (DDI && !DIB)
+ DIB = new DIBuilder(*AI->getParent()->getParent()->getParent());
AllocaPromoter(Insts, SSA, DDI, DIB).run(AI, Insts);
Insts.clear();
}
diff --git a/lib/Transforms/Utils/SSAUpdater.cpp b/lib/Transforms/Utils/SSAUpdater.cpp
index 09f0a50..b336194 100644
--- a/lib/Transforms/Utils/SSAUpdater.cpp
+++ b/lib/Transforms/Utils/SSAUpdater.cpp
@@ -358,7 +358,7 @@ Value *SSAUpdater::GetValueAtEndOfBlockInternal(BasicBlock *BB) {
LoadAndStorePromoter::
LoadAndStorePromoter(const SmallVectorImpl<Instruction*> &Insts,
- SSAUpdater &S, DbgDeclareInst *DD, DIBuilder *&DB,
+ SSAUpdater &S, DbgDeclareInst *DD, DIBuilder *DB,
StringRef BaseName) : SSA(S), DDI(DD), DIB(DB) {
if (Insts.empty()) return;
@@ -407,11 +407,8 @@ run(const SmallVectorImpl<Instruction*> &Insts) const {
if (BlockUses.size() == 1) {
// If it is a store, it is a trivial def of the value in the block.
if (StoreInst *SI = dyn_cast<StoreInst>(User)) {
- if (DDI) {
- if (!DIB)
- DIB = new DIBuilder(*SI->getParent()->getParent()->getParent());
+ if (DDI)
ConvertDebugDeclareToDebugValue(DDI, SI, *DIB);
- }
SSA.AddAvailableValue(BB, SI->getOperand(0));
} else
// Otherwise it is a load, queue it to rewrite as a live-in load.
@@ -466,11 +463,8 @@ run(const SmallVectorImpl<Instruction*> &Insts) const {
// If this is a store to an unrelated pointer, ignore it.
if (!isInstInList(SI, Insts)) continue;
- if (DDI) {
- if (!DIB)
- DIB = new DIBuilder(*SI->getParent()->getParent()->getParent());
+ if (DDI)
ConvertDebugDeclareToDebugValue(DDI, SI, *DIB);
- }
// Remember that this is the active value in the block.
StoredValue = SI->getOperand(0);