[PM] Fix a bug where we didn't properly clear the list map when the list
authorChandler Carruth <chandlerc@gmail.com>
Mon, 21 Apr 2014 11:11:54 +0000 (11:11 +0000)
committerChandler Carruth <chandlerc@gmail.com>
Mon, 21 Apr 2014 11:11:54 +0000 (11:11 +0000)
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

index 17f6fbcf5469e7311d91a7aea3df319fb2d27eb9..3344b09953702e6907dde26dc329436cde964d64 100644 (file)
@@ -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;