Skip to content

Commit f543c33

Browse files
committed
Use SetVector instead of a SmallVector+DenseMap in CallerAnalysis
1 parent 1209258 commit f543c33

File tree

1 file changed

+6
-20
lines changed

1 file changed

+6
-20
lines changed

include/swift/SILOptimizer/Analysis/CallerAnalysis.h

Lines changed: 6 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,8 @@ class CallerAnalysis : public SILAnalysis {
7171
/// A map between all the functions and their callsites in the module.
7272
llvm::DenseMap<SILFunction *, CallerAnalysisFunctionInfo> CallInfo;
7373

74-
/// A set of functions that needs to be recomputed. This is used to make sure
75-
/// a function is not pushed to the RecomputeFunctionList more than once.
76-
llvm::DenseSet<SILFunction *> RecomputeFunctionSet;
77-
7874
/// A list of functions that needs to be recomputed.
79-
llvm::SmallVector<SILFunction *, 16> RecomputeFunctionList;
75+
llvm::SetVector<SILFunction *> RecomputeFunctionList;
8076

8177
/// Iterate over all the call sites in the function and update
8278
/// CallInfo.
@@ -91,15 +87,13 @@ class CallerAnalysis : public SILAnalysis {
9187
processFunctionCallSites(F);
9288
}
9389
RecomputeFunctionList.clear();
94-
RecomputeFunctionSet.clear();
9590
}
9691

9792
public:
9893
CallerAnalysis(SILModule *M) : SILAnalysis(AnalysisKind::Caller), Mod(*M) {
9994
// Make sure we compute everything first time called.
10095
for(auto &F : Mod) {
101-
RecomputeFunctionSet.insert(&F);
102-
RecomputeFunctionList.push_back(&F);
96+
RecomputeFunctionList.insert(&F);
10397
}
10498
}
10599

@@ -108,11 +102,7 @@ class CallerAnalysis : public SILAnalysis {
108102
}
109103

110104
virtual void notifyAnalysisOfFunction(SILFunction *F) {
111-
// This is not a new function.
112-
if (RecomputeFunctionSet.find(F) != RecomputeFunctionSet.end())
113-
return;
114-
RecomputeFunctionSet.insert(F);
115-
RecomputeFunctionList.push_back(F);
105+
RecomputeFunctionList.insert(F);
116106
}
117107

118108
virtual void invalidate(SILFunction *F, InvalidationKind K) {
@@ -124,15 +114,13 @@ class CallerAnalysis : public SILAnalysis {
124114
// This function has become "unknown" to us. Invalidate any callsite
125115
// information related to this function.
126116
invalidateExistingCalleeRelation(F);
127-
if (RecomputeFunctionSet.find(F) != RecomputeFunctionSet.end())
128-
return;
129117
// Make sure this function is recomputed next time.
130-
RecomputeFunctionSet.insert(F);
131-
RecomputeFunctionList.push_back(F);
118+
RecomputeFunctionList.insert(F);
132119
}
133120

134121
virtual void invalidateForDeadFunction(SILFunction *F, InvalidationKind K) {
135122
invalidateExistingCalleeRelation(F);
123+
RecomputeFunctionList.remove(F);
136124
}
137125

138126
virtual void invalidate(InvalidationKind K) {
@@ -143,10 +131,8 @@ class CallerAnalysis : public SILAnalysis {
143131

144132
CallInfo.clear();
145133
RecomputeFunctionList.clear();
146-
RecomputeFunctionSet.clear();
147134
for(auto &F : Mod) {
148-
RecomputeFunctionSet.insert(&F);
149-
RecomputeFunctionList.push_back(&F);
135+
RecomputeFunctionList.insert(&F);
150136
}
151137
}
152138

0 commit comments

Comments
 (0)