Skip to content

Commit f4de4fc

Browse files
authored
Merge pull request #8442 from eeckstein/fix-leak
2 parents d7401b5 + aa8eabf commit f4de4fc

File tree

1 file changed

+8
-3
lines changed

1 file changed

+8
-3
lines changed

include/swift/SILOptimizer/Analysis/Analysis.h

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -168,6 +168,12 @@ namespace swift {
168168
/// meant to be overridden by subclasses.
169169
virtual void verify(AnalysisTy *A) const {}
170170

171+
void deleteAllAnalysisProviders() {
172+
for (auto D : Storage)
173+
delete D.second;
174+
Storage.clear();
175+
}
176+
171177
public:
172178
/// Returns an analysis provider for a specific function \p F.
173179
AnalysisTy *get(SILFunction *F) {
@@ -183,7 +189,7 @@ namespace swift {
183189

184190
/// Invalidate all information in this analysis.
185191
virtual void invalidate() override {
186-
Storage.clear();
192+
deleteAllAnalysisProviders();
187193
}
188194

189195
/// Helper function to remove the analysis data for a function.
@@ -216,8 +222,7 @@ namespace swift {
216222

217223
FunctionAnalysisBase() {}
218224
virtual ~FunctionAnalysisBase() {
219-
for (auto D : Storage)
220-
delete D.second;
225+
deleteAllAnalysisProviders();
221226
}
222227
FunctionAnalysisBase(AnalysisKind K) : SILAnalysis(K), Storage() {}
223228
FunctionAnalysisBase(const FunctionAnalysisBase &) = delete;

0 commit comments

Comments
 (0)