From ed6b9bfeabdc482d2b133eb3054a3c1530449f27 Mon Sep 17 00:00:00 2001 From: Bruno Cardoso Lopes Date: Thu, 20 Aug 2015 18:24:54 +0000 Subject: [PATCH] [LVI] Avoid iterator invalidation in LazyValueInfoCache::threadEdge Do that by copying out the elements to another SmallPtrSet. Follow up from r245309. llvm-svn: 245590 --- llvm/lib/Analysis/LazyValueInfo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/llvm/lib/Analysis/LazyValueInfo.cpp b/llvm/lib/Analysis/LazyValueInfo.cpp index a984bc40ac10..4fb6b105646e 100644 --- a/llvm/lib/Analysis/LazyValueInfo.cpp +++ b/llvm/lib/Analysis/LazyValueInfo.cpp @@ -1055,7 +1055,7 @@ void LazyValueInfoCache::threadEdge(BasicBlock *PredBB, BasicBlock *OldSucc, auto I = OverDefinedCache.find(OldSucc); if (I == OverDefinedCache.end()) return; // Nothing to process here. - SmallPtrSetImpl &ClearSet = I->second; + SmallPtrSet ClearSet(I->second.begin(), I->second.end()); // Use a worklist to perform a depth-first search of OldSucc's successors. // NOTE: We do not need a visited list since any blocks we have already