[ProfileData] Thread unique_ptr through the summary builder to avoid leaks.
llvm-svn: 270195
diff --git a/llvm/include/llvm/ProfileData/ProfileCommon.h b/llvm/include/llvm/ProfileData/ProfileCommon.h
index f5b9405..e43d307 100644
--- a/llvm/include/llvm/ProfileData/ProfileCommon.h
+++ b/llvm/include/llvm/ProfileData/ProfileCommon.h
@@ -74,7 +74,7 @@
InstrProfSummaryBuilder(std::vector<uint32_t> Cutoffs)
: ProfileSummaryBuilder(Cutoffs), MaxInternalBlockCount(0) {}
void addRecord(const InstrProfRecord &);
- ProfileSummary *getSummary();
+ std::unique_ptr<ProfileSummary> getSummary();
};
class SampleProfileSummaryBuilder final : public ProfileSummaryBuilder {
@@ -83,7 +83,7 @@
void addRecord(const sampleprof::FunctionSamples &FS);
SampleProfileSummaryBuilder(std::vector<uint32_t> Cutoffs)
: ProfileSummaryBuilder(Cutoffs) {}
- ProfileSummary *getSummary();
+ std::unique_ptr<ProfileSummary> getSummary();
};
// This is called when a count is seen in the profile.
diff --git a/llvm/lib/ProfileData/InstrProfReader.cpp b/llvm/lib/ProfileData/InstrProfReader.cpp
index 8ffdc5b..a7d8fcf 100644
--- a/llvm/lib/ProfileData/InstrProfReader.cpp
+++ b/llvm/lib/ProfileData/InstrProfReader.cpp
@@ -617,7 +617,7 @@
InstrProfSummaryBuilder Builder(ProfileSummaryBuilder::DefaultCutoffs);
// FIXME: This only computes an empty summary. Need to call addRecord for
// all InstrProfRecords to get the correct summary.
- this->Summary.reset(Builder.getSummary());
+ this->Summary = Builder.getSummary();
return Cur;
}
}
diff --git a/llvm/lib/ProfileData/InstrProfWriter.cpp b/llvm/lib/ProfileData/InstrProfWriter.cpp
index e9543ce..e25299e 100644
--- a/llvm/lib/ProfileData/InstrProfWriter.cpp
+++ b/llvm/lib/ProfileData/InstrProfWriter.cpp
@@ -259,7 +259,7 @@
IndexedInstrProf::allocSummary(SummarySize);
// Compute the Summary and copy the data to the data
// structure to be serialized out (to disk or buffer).
- ProfileSummary *PS = ISB.getSummary();
+ std::unique_ptr<ProfileSummary> PS = ISB.getSummary();
setSummary(TheSummary.get(), *PS);
InfoObj->SummaryBuilder = 0;
diff --git a/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp b/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp
index ee40d68..1e71bb9 100644
--- a/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp
+++ b/llvm/lib/ProfileData/ProfileSummaryBuilder.cpp
@@ -86,18 +86,18 @@
}
}
-ProfileSummary *SampleProfileSummaryBuilder::getSummary() {
+std::unique_ptr<ProfileSummary> SampleProfileSummaryBuilder::getSummary() {
computeDetailedSummary();
- return new ProfileSummary(ProfileSummary::PSK_Sample, DetailedSummary,
- TotalCount, MaxCount, 0, MaxFunctionCount,
- NumCounts, NumFunctions);
+ return llvm::make_unique<ProfileSummary>(
+ ProfileSummary::PSK_Sample, DetailedSummary, TotalCount, MaxCount, 0,
+ MaxFunctionCount, NumCounts, NumFunctions);
}
-ProfileSummary *InstrProfSummaryBuilder::getSummary() {
+std::unique_ptr<ProfileSummary> InstrProfSummaryBuilder::getSummary() {
computeDetailedSummary();
- return new ProfileSummary(ProfileSummary::PSK_Instr, DetailedSummary,
- TotalCount, MaxCount, MaxInternalBlockCount,
- MaxFunctionCount, NumCounts, NumFunctions);
+ return llvm::make_unique<ProfileSummary>(
+ ProfileSummary::PSK_Instr, DetailedSummary, TotalCount, MaxCount,
+ MaxInternalBlockCount, MaxFunctionCount, NumCounts, NumFunctions);
}
void InstrProfSummaryBuilder::addEntryCount(uint64_t Count) {
diff --git a/llvm/lib/ProfileData/SampleProfReader.cpp b/llvm/lib/ProfileData/SampleProfReader.cpp
index bd5aacc..d3929e8 100644
--- a/llvm/lib/ProfileData/SampleProfReader.cpp
+++ b/llvm/lib/ProfileData/SampleProfReader.cpp
@@ -798,5 +798,5 @@
const FunctionSamples &Profile = I.second;
Builder.addRecord(Profile);
}
- Summary.reset(Builder.getSummary());
+ Summary = Builder.getSummary();
}
diff --git a/llvm/lib/ProfileData/SampleProfWriter.cpp b/llvm/lib/ProfileData/SampleProfWriter.cpp
index 9c58f9e..4fa7128 100644
--- a/llvm/lib/ProfileData/SampleProfWriter.cpp
+++ b/llvm/lib/ProfileData/SampleProfWriter.cpp
@@ -260,5 +260,5 @@
const FunctionSamples &Profile = I.second;
Builder.addRecord(Profile);
}
- Summary.reset(Builder.getSummary());
+ Summary = Builder.getSummary();
}