summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms/Scalar/SROA.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'llvm/lib/Transforms/Scalar/SROA.cpp')
-rw-r--r--llvm/lib/Transforms/Scalar/SROA.cpp31
1 files changed, 1 insertions, 30 deletions
diff --git a/llvm/lib/Transforms/Scalar/SROA.cpp b/llvm/lib/Transforms/Scalar/SROA.cpp
index 8fc9a94aefe..a7c1dc14713 100644
--- a/llvm/lib/Transforms/Scalar/SROA.cpp
+++ b/llvm/lib/Transforms/Scalar/SROA.cpp
@@ -1220,10 +1220,6 @@ class SROA : public FunctionPass {
/// currently in the promotable queue.
SetVector<SelectInst *, SmallVector<SelectInst *, 2>> SpeculatableSelects;
- /// Debug intrinsics do not show up as regular uses in the
- /// IR. This side-table holds the missing use edges.
- DenseMap<AllocaInst *, DbgDeclareInst *> DbgDeclares;
-
public:
SROA(bool RequiresDomTree = true)
: FunctionPass(ID), RequiresDomTree(RequiresDomTree), C(nullptr),
@@ -3497,27 +3493,6 @@ bool SROA::rewritePartition(AllocaInst &AI, AllocaSlices &AS,
SliceTy, nullptr, Alignment,
AI.getName() + ".sroa." + Twine(P.begin() - AS.begin()), &AI);
++NumNewAllocas;
-
- // Migrate debug information from the old alloca to the new alloca
- // and the individial slices.
- if (DbgDeclareInst *DbgDecl = DbgDeclares.lookup(&AI)) {
- DIVariable Var(DbgDecl->getVariable());
- DIExpression Piece;
- DIBuilder DIB(*AI.getParent()->getParent()->getParent(),
- /*AllowUnresolved*/ false);
- // Create a piece expression describing the slice, if the new slize is
- // smaller than the old alloca or the old alloca already was described
- // with a piece. It would be even better to just compare against the size
- // of the type described in the debug info, but then we would need to
- // build an expensive DIRefMap.
- if (P.size() < DL->getTypeAllocSize(AI.getAllocatedType()) ||
- DIExpression(DbgDecl->getExpression()).isVariablePiece())
- Piece = DIB.createPieceExpression(P.beginOffset(), P.size());
- Instruction *NewDDI = DIB.insertDeclare(NewAI, Var, Piece, &AI);
- NewDDI->setDebugLoc(DbgDecl->getDebugLoc());
- DbgDeclares.insert(std::make_pair(NewAI, cast<DbgDeclareInst>(NewDDI)));
- DeadInsts.insert(DbgDecl);
- }
}
DEBUG(dbgs() << "Rewriting alloca partition "
@@ -3851,13 +3826,9 @@ bool SROA::runOnFunction(Function &F) {
BasicBlock &EntryBB = F.getEntryBlock();
for (BasicBlock::iterator I = EntryBB.begin(), E = std::prev(EntryBB.end());
- I != E; ++I) {
+ I != E; ++I)
if (AllocaInst *AI = dyn_cast<AllocaInst>(I))
Worklist.insert(AI);
- else if (DbgDeclareInst *DDI = dyn_cast<DbgDeclareInst>(I))
- if (auto AI = dyn_cast_or_null<AllocaInst>(DDI->getAddress()))
- DbgDeclares.insert(std::make_pair(AI, DDI));
- }
bool Changed = false;
// A set of deleted alloca instruction pointers which should be removed from
OpenPOWER on IntegriCloud