From 480de227f69934d5fd2dede8b8c1f40373600173 Mon Sep 17 00:00:00 2001 From: Stephan Bergmann Date: Thu, 31 Mar 2016 15:42:01 +0000 Subject: 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 --- llvm/lib/CodeGen/BranchFolding.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) (limited to 'llvm/lib/CodeGen') 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; } -- cgit v1.2.3