summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorKostya Serebryany <kcc@google.com>2019-05-07 20:57:11 +0000
committerKostya Serebryany <kcc@google.com>2019-05-07 20:57:11 +0000
commitb9c57683026e51f5b0a1f779c95895b16e8de04c (patch)
treeb63fc749f44c0309b2544454b1a2edd240d09711 /llvm/lib/Transforms
parentf610110f1ac1177950f7727175fc299391401a9d (diff)
downloadbcm5719-llvm-b9c57683026e51f5b0a1f779c95895b16e8de04c.tar.gz
bcm5719-llvm-b9c57683026e51f5b0a1f779c95895b16e8de04c.zip
revert r360162 as it breaks most of the buildbots
llvm-svn: 360190
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Utils/BasicBlockUtils.cpp8
-rw-r--r--llvm/lib/Transforms/Vectorize/LoopVectorize.cpp20
2 files changed, 7 insertions, 21 deletions
diff --git a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
index a04092e54a9..aa7b933022c 100644
--- a/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
+++ b/llvm/lib/Transforms/Utils/BasicBlockUtils.cpp
@@ -566,13 +566,7 @@ BasicBlock *llvm::SplitBlockPredecessors(BasicBlock *BB,
// The new block unconditionally branches to the old block.
BranchInst *BI = BranchInst::Create(BB, NewBB);
- // Splitting the precedessors of a loop header creates a preheader block.
- if (LI && LI->isLoopHeader(BB))
- // Using the loop start line number prevents debuggers stepping into the
- // loop body for this instruction.
- BI->setDebugLoc(LI->getLoopFor(BB)->getStartLoc());
- else
- BI->setDebugLoc(BB->getFirstNonPHIOrDbg()->getDebugLoc());
+ BI->setDebugLoc(BB->getFirstNonPHIOrDbg()->getDebugLoc());
// Move the edges from Preds to point to NewBB instead of BB.
for (unsigned i = 0, e = Preds.size(); i != e; ++i) {
diff --git a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
index 806cd52cbc2..4f043448e4e 100644
--- a/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
+++ b/llvm/lib/Transforms/Vectorize/LoopVectorize.cpp
@@ -2894,11 +2894,11 @@ BasicBlock *InnerLoopVectorizer::createVectorizedLoopSkeleton() {
CmpInst::Create(Instruction::ICmp, CmpInst::ICMP_EQ, Count,
CountRoundDown, "cmp.n", MiddleBlock->getTerminator());
- // Here we use the same DebugLoc as the scalar loop latch branch instead
- // of the corresponding compare because they may have ended up with
- // different line numbers and we want to avoid awkward line stepping while
- // debugging. Eg. if the compare has got a line number inside the loop.
- cast<Instruction>(CmpN)->setDebugLoc(ScalarLatchBr->getDebugLoc());
+ // Provide correct stepping behaviour by using the same DebugLoc as the
+ // scalar loop latch branch cmp if it exists.
+ if (CmpInst *ScalarLatchCmp =
+ dyn_cast_or_null<CmpInst>(ScalarLatchBr->getCondition()))
+ cast<Instruction>(CmpN)->setDebugLoc(ScalarLatchCmp->getDebugLoc());
}
BranchInst *BrInst = BranchInst::Create(ExitBlock, ScalarPH, CmpN);
@@ -3631,15 +3631,7 @@ void InnerLoopVectorizer::fixReduction(PHINode *Phi) {
// Reduce all of the unrolled parts into a single vector.
Value *ReducedPartRdx = VectorLoopValueMap.getVectorValue(LoopExitInst, 0);
unsigned Op = RecurrenceDescriptor::getRecurrenceBinOp(RK);
-
- // The middle block terminator has already been assigned a DebugLoc here (the
- // OrigLoop's single latch terminator). We want the whole middle block to
- // appear to execute on this line because: (a) it is all compiler generated,
- // (b) these instructions are always executed after evaluating the latch
- // conditional branch, and (c) other passes may add new predecessors which
- // terminate on this line. This is the easiest way to ensure we don't
- // accidently cause an extra step back into the loop while debugging.
- setDebugLocFromInst(Builder, LoopMiddleBlock->getTerminator());
+ setDebugLocFromInst(Builder, ReducedPartRdx);
for (unsigned Part = 1; Part < UF; ++Part) {
Value *RdxPart = VectorLoopValueMap.getVectorValue(LoopExitInst, Part);
if (Op != Instruction::ICmp && Op != Instruction::FCmp)
OpenPOWER on IntegriCloud