summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/GCMetadata.cpp
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-04-15 05:34:49 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-04-15 05:34:49 +0000
commit88368bae4cbf9cca6f8148e5397cf0cf805ebd57 (patch)
tree668da32ea792d4e39bac18ebaaec42c8a169296f /llvm/lib/CodeGen/GCMetadata.cpp
parentf564ab62677c17775603465dbd7c1668d27bae20 (diff)
downloadbcm5719-llvm-88368bae4cbf9cca6f8148e5397cf0cf805ebd57.tar.gz
bcm5719-llvm-88368bae4cbf9cca6f8148e5397cf0cf805ebd57.zip
Use unique_ptr to manage ownership of GCStrategy objects in GCMetadata
llvm-svn: 206246
Diffstat (limited to 'llvm/lib/CodeGen/GCMetadata.cpp')
-rw-r--r--llvm/lib/CodeGen/GCMetadata.cpp15
1 files changed, 4 insertions, 11 deletions
diff --git a/llvm/lib/CodeGen/GCMetadata.cpp b/llvm/lib/CodeGen/GCMetadata.cpp
index c47450ea735..19f21864562 100644
--- a/llvm/lib/CodeGen/GCMetadata.cpp
+++ b/llvm/lib/CodeGen/GCMetadata.cpp
@@ -61,10 +61,6 @@ GCModuleInfo::GCModuleInfo()
initializeGCModuleInfoPass(*PassRegistry::getPassRegistry());
}
-GCModuleInfo::~GCModuleInfo() {
- clear();
-}
-
GCStrategy *GCModuleInfo::getOrCreateStrategy(const Module *M,
const std::string &Name) {
strategy_map_type::iterator NMI = StrategyMap.find(Name);
@@ -74,12 +70,12 @@ GCStrategy *GCModuleInfo::getOrCreateStrategy(const Module *M,
for (GCRegistry::iterator I = GCRegistry::begin(),
E = GCRegistry::end(); I != E; ++I) {
if (Name == I->getName()) {
- GCStrategy *S = I->instantiate();
+ std::unique_ptr<GCStrategy> S(I->instantiate());
S->M = M;
S->Name = Name;
- StrategyMap.GetOrCreateValue(Name).setValue(S);
- StrategyList.push_back(S);
- return S;
+ StrategyMap.GetOrCreateValue(Name).setValue(S.get());
+ StrategyList.push_back(std::move(S));
+ return StrategyList.back().get();
}
}
@@ -104,9 +100,6 @@ GCFunctionInfo &GCModuleInfo::getFunctionInfo(const Function &F) {
void GCModuleInfo::clear() {
FInfoMap.clear();
StrategyMap.clear();
-
- for (iterator I = begin(), E = end(); I != E; ++I)
- delete *I;
StrategyList.clear();
}
OpenPOWER on IntegriCloud