summaryrefslogtreecommitdiffstats
path: root/clang/lib/CodeGen
diff options
context:
space:
mode:
authorDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-03-26 19:26:05 +0000
committerDuncan P. N. Exon Smith <dexonsmith@apple.com>2014-03-26 19:26:05 +0000
commit1b67cfd40f426ed7730009df444646020a4a8ecf (patch)
tree802cd8158a7e5d6015291d1ab9de40f694a0de6f /clang/lib/CodeGen
parent3586be721697cf7dbad82d45fffa80506d84a3e1 (diff)
downloadbcm5719-llvm-1b67cfd40f426ed7730009df444646020a4a8ecf.tar.gz
bcm5719-llvm-1b67cfd40f426ed7730009df444646020a4a8ecf.zip
InstrProf: Use unique_ptr
llvm-svn: 204846
Diffstat (limited to 'clang/lib/CodeGen')
-rw-r--r--clang/lib/CodeGen/CodeGenPGO.cpp25
-rw-r--r--clang/lib/CodeGen/CodeGenPGO.h16
2 files changed, 16 insertions, 25 deletions
diff --git a/clang/lib/CodeGen/CodeGenPGO.cpp b/clang/lib/CodeGen/CodeGenPGO.cpp
index 34dca7c7248..7b45650572a 100644
--- a/clang/lib/CodeGen/CodeGenPGO.cpp
+++ b/clang/lib/CodeGen/CodeGenPGO.cpp
@@ -162,7 +162,7 @@ void CodeGenPGO::setFuncName(llvm::Function *Fn) {
RawFuncName = RawFuncName.substr(1);
if (!Fn->hasLocalLinkage()) {
- PrefixedFuncName = new std::string(RawFuncName);
+ PrefixedFuncName.reset(new std::string(RawFuncName));
return;
}
@@ -170,7 +170,7 @@ void CodeGenPGO::setFuncName(llvm::Function *Fn) {
// Do not include the full path in the file name since there's no guarantee
// that it will stay the same, e.g., if the files are checked out from
// version control in different locations.
- PrefixedFuncName = new std::string(CGM.getCodeGenOpts().MainFileName);
+ PrefixedFuncName.reset(new std::string(CGM.getCodeGenOpts().MainFileName));
if (PrefixedFuncName->empty())
PrefixedFuncName->assign("<unknown>");
PrefixedFuncName->append(":");
@@ -849,7 +849,7 @@ void CodeGenPGO::assignRegionCounters(const Decl *D, llvm::Function *Fn) {
}
void CodeGenPGO::mapRegionCounters(const Decl *D) {
- RegionCounterMap = new llvm::DenseMap<const Stmt*, unsigned>();
+ RegionCounterMap.reset(new llvm::DenseMap<const Stmt *, unsigned>);
MapRegionCounters Walker(*RegionCounterMap);
if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D))
Walker.VisitFunctionDecl(FD);
@@ -863,7 +863,7 @@ void CodeGenPGO::mapRegionCounters(const Decl *D) {
}
void CodeGenPGO::computeRegionCounts(const Decl *D) {
- StmtCountMap = new llvm::DenseMap<const Stmt*, uint64_t>();
+ StmtCountMap.reset(new llvm::DenseMap<const Stmt *, uint64_t>);
ComputeRegionCounts Walker(*StmtCountMap, *this);
if (const FunctionDecl *FD = dyn_cast_or_null<FunctionDecl>(D))
Walker.VisitFunctionDecl(FD);
@@ -917,22 +917,17 @@ void CodeGenPGO::loadRegionCounts(PGOProfileData *PGOData) {
// counters does not match. This could be tightened down in the future to
// ignore counts when the input changes in various ways, e.g., by comparing a
// hash value based on some characteristics of the input.
- RegionCounts = new std::vector<uint64_t>();
+ RegionCounts.reset(new std::vector<uint64_t>);
uint64_t Hash;
if (PGOData->getFunctionCounts(getFuncName(), Hash, *RegionCounts) ||
- Hash != FunctionHash || RegionCounts->size() != NumRegionCounters) {
- delete RegionCounts;
- RegionCounts = 0;
- }
+ Hash != FunctionHash || RegionCounts->size() != NumRegionCounters)
+ RegionCounts.reset();
}
void CodeGenPGO::destroyRegionCounters() {
- if (RegionCounterMap != 0)
- delete RegionCounterMap;
- if (StmtCountMap != 0)
- delete StmtCountMap;
- if (RegionCounts != 0)
- delete RegionCounts;
+ RegionCounterMap.reset();
+ StmtCountMap.reset();
+ RegionCounts.reset();
}
/// \brief Calculate what to divide by to scale weights.
diff --git a/clang/lib/CodeGen/CodeGenPGO.h b/clang/lib/CodeGen/CodeGenPGO.h
index 2645537cba6..c59a58e3f89 100644
--- a/clang/lib/CodeGen/CodeGenPGO.h
+++ b/clang/lib/CodeGen/CodeGenPGO.h
@@ -53,26 +53,22 @@ public:
class CodeGenPGO {
private:
CodeGenModule &CGM;
- std::string *PrefixedFuncName;
+ std::unique_ptr<std::string> PrefixedFuncName;
StringRef RawFuncName;
llvm::GlobalValue::LinkageTypes VarLinkage;
unsigned NumRegionCounters;
uint64_t FunctionHash;
llvm::GlobalVariable *RegionCounters;
- llvm::DenseMap<const Stmt*, unsigned> *RegionCounterMap;
- llvm::DenseMap<const Stmt*, uint64_t> *StmtCountMap;
- std::vector<uint64_t> *RegionCounts;
+ std::unique_ptr<llvm::DenseMap<const Stmt *, unsigned>> RegionCounterMap;
+ std::unique_ptr<llvm::DenseMap<const Stmt *, uint64_t>> StmtCountMap;
+ std::unique_ptr<std::vector<uint64_t>> RegionCounts;
uint64_t CurrentRegionCount;
public:
CodeGenPGO(CodeGenModule &CGM)
- : CGM(CGM), PrefixedFuncName(0), NumRegionCounters(0), FunctionHash(0),
- RegionCounters(0), RegionCounterMap(0), StmtCountMap(0),
- RegionCounts(0), CurrentRegionCount(0) {}
- ~CodeGenPGO() {
- if (PrefixedFuncName) delete PrefixedFuncName;
- }
+ : CGM(CGM), NumRegionCounters(0), FunctionHash(0), RegionCounters(0),
+ CurrentRegionCount(0) {}
/// Whether or not we have PGO region data for the current function. This is
/// false both when we have no data at all and when our data has been
OpenPOWER on IntegriCloud