diff options
Diffstat (limited to 'llvm/lib/Transforms')
| -rw-r--r-- | llvm/lib/Transforms/Utils/SimplifyCFG.cpp | 7 | 
1 files changed, 5 insertions, 2 deletions
| diff --git a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp index b8bac6da2fe..925e3e9e1f8 100644 --- a/llvm/lib/Transforms/Utils/SimplifyCFG.cpp +++ b/llvm/lib/Transforms/Utils/SimplifyCFG.cpp @@ -1069,9 +1069,12 @@ static bool SpeculativelyExecuteBB(BranchInst *BI, BasicBlock *BB1) {    }    // If we get here, we can hoist the instruction. Try to place it -  // before the icmp instruction preceeding the conditional branch. +  // before the icmp instruction preceding the conditional branch.    BasicBlock::iterator InsertPos = BI; -  if (InsertPos != BIParent->begin())  +  if (InsertPos != BIParent->begin()) +    --InsertPos; +  // Skip debug info between condition and branch. +  while (InsertPos != BIParent->begin() && isa<DbgInfoIntrinsic>(InsertPos))      --InsertPos;    if (InsertPos == BrCond && !isa<PHINode>(BrCond)) {      SmallPtrSet<Instruction *, 4> BB1Insns; | 

