diff options
author | Stephan Bergmann <sbergman@redhat.com> | 2016-03-31 15:42:01 +0000 |
---|---|---|
committer | Stephan Bergmann <sbergman@redhat.com> | 2016-03-31 15:42:01 +0000 |
commit | 480de227f69934d5fd2dede8b8c1f40373600173 (patch) | |
tree | e2679bce1f86eb64ddbdb64d1e3d9c3c3474f9a8 /llvm/lib/CodeGen/BranchFolding.cpp | |
parent | 3707ba80302b184c850ccdab2191650b75486742 (diff) | |
download | bcm5719-llvm-480de227f69934d5fd2dede8b8c1f40373600173.tar.gz bcm5719-llvm-480de227f69934d5fd2dede8b8c1f40373600173.zip |
Don't use potentially invalidated iterator
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
llvm-svn: 265024
Diffstat (limited to 'llvm/lib/CodeGen/BranchFolding.cpp')
-rw-r--r-- | llvm/lib/CodeGen/BranchFolding.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/BranchFolding.cpp b/llvm/lib/CodeGen/BranchFolding.cpp index 16d4e00a885..0a6e88ea45b 100644 --- a/llvm/lib/CodeGen/BranchFolding.cpp +++ b/llvm/lib/CodeGen/BranchFolding.cpp @@ -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; } |