From 6060969b9b8966377cffdedb65b326420e6af76a Mon Sep 17 00:00:00 2001 From: Chandler Carruth Date: Mon, 21 Apr 2014 11:11:54 +0000 Subject: [PM] Fix a bug where we didn't properly clear the list map when the list became empty. This would manifest later as an assert failure due to a non-empty list map but an empty result map. This doesn't easily manifest with just the module pass manager and the function pass manager, but the next commit will add the CGSCC pass manager that hits this assert immediately. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@206744 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/PassManager.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'lib/IR/PassManager.cpp') diff --git a/lib/IR/PassManager.cpp b/lib/IR/PassManager.cpp index 17f6fbcf54..3344b09953 100644 --- a/lib/IR/PassManager.cpp +++ b/lib/IR/PassManager.cpp @@ -165,6 +165,8 @@ void FunctionAnalysisManager::invalidateImpl(Function *F, while (!InvalidatedPassIDs.empty()) FunctionAnalysisResults.erase( std::make_pair(InvalidatedPassIDs.pop_back_val(), F)); + if (ResultsList.empty()) + FunctionAnalysisResultLists.erase(F); } char FunctionAnalysisManagerModuleProxy::PassID; -- cgit v1.2.3