Skip to content

Commit

Permalink
Don't use potentially invalidated iterator
Browse files Browse the repository at this point in the history
If the lhs is evaluated before the rhs, FuncletI's operator-> can trigger the

  assert(isHandleInSync() && "invalid iterator access!");

at include/llvm/ADT/DenseMap.h:1061.  (Happens e.g. when compiled with GCC 6.)

Differential Revision: http://reviews.llvm.org/D18440


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265024 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
stbergmann committed Mar 31, 2016
1 parent 9bb23c0 commit 285cad0
Showing 1 changed file with 4 additions and 2 deletions.
6 changes: 4 additions & 2 deletions lib/CodeGen/BranchFolding.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -453,8 +453,10 @@ MachineBasicBlock *BranchFolder::SplitMBBAt(MachineBasicBlock &CurMBB,

// Add the new block to the funclet.
const auto &FuncletI = FuncletMembership.find(&CurMBB);
if (FuncletI != FuncletMembership.end())
FuncletMembership[NewMBB] = FuncletI->second;
if (FuncletI != FuncletMembership.end()) {
auto n = FuncletI->second;
FuncletMembership[NewMBB] = n;
}

return NewMBB;
}
Expand Down

0 comments on commit 285cad0

Please sign in to comment.