diff options
Diffstat (limited to 'contrib/llvm/lib/CodeGen/GCMetadata.cpp')
-rw-r--r-- | contrib/llvm/lib/CodeGen/GCMetadata.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/contrib/llvm/lib/CodeGen/GCMetadata.cpp b/contrib/llvm/lib/CodeGen/GCMetadata.cpp index c3e4f3e..6101c67 100644 --- a/contrib/llvm/lib/CodeGen/GCMetadata.cpp +++ b/contrib/llvm/lib/CodeGen/GCMetadata.cpp @@ -71,9 +71,8 @@ GCStrategy *GCModuleInfo::getOrCreateStrategy(const Module *M, E = GCRegistry::end(); I != E; ++I) { if (Name == I->getName()) { std::unique_ptr<GCStrategy> S = I->instantiate(); - S->M = M; S->Name = Name; - StrategyMap.GetOrCreateValue(Name).setValue(S.get()); + StrategyMap[Name] = S.get(); StrategyList.push_back(std::move(S)); return StrategyList.back().get(); } @@ -92,12 +91,14 @@ GCFunctionInfo &GCModuleInfo::getFunctionInfo(const Function &F) { return *I->second; GCStrategy *S = getOrCreateStrategy(F.getParent(), F.getGC()); - GCFunctionInfo *GFI = S->insertFunctionInfo(F); + Functions.push_back(make_unique<GCFunctionInfo>(F, *S)); + GCFunctionInfo *GFI = Functions.back().get(); FInfoMap[&F] = GFI; return *GFI; } void GCModuleInfo::clear() { + Functions.clear(); FInfoMap.clear(); StrategyMap.clear(); StrategyList.clear(); |