summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/BranchFolding.cpp
diff options
context:
space:
mode:
authorStephan Bergmann <sbergman@redhat.com>2016-03-31 15:42:01 +0000
committerStephan Bergmann <sbergman@redhat.com>2016-03-31 15:42:01 +0000
commit480de227f69934d5fd2dede8b8c1f40373600173 (patch)
treee2679bce1f86eb64ddbdb64d1e3d9c3c3474f9a8 /llvm/lib/CodeGen/BranchFolding.cpp
parent3707ba80302b184c850ccdab2191650b75486742 (diff)
downloadbcm5719-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.cpp6
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;
}
OpenPOWER on IntegriCloud