diff options
author | Kostya Serebryany <kcc@google.com> | 2019-05-07 20:57:11 +0000 |
---|---|---|
committer | Kostya Serebryany <kcc@google.com> | 2019-05-07 20:57:11 +0000 |
commit | b9c57683026e51f5b0a1f779c95895b16e8de04c (patch) | |
tree | b63fc749f44c0309b2544454b1a2edd240d09711 /llvm/lib/Transforms | |
parent | f610110f1ac1177950f7727175fc299391401a9d (diff) | |
download | bcm5719-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.cpp | 8 | ||||
-rw-r--r-- | llvm/lib/Transforms/Vectorize/LoopVectorize.cpp | 20 |
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) |