Skip to content

Commit 56d100f

Browse files
committed
[analysis] Standardize AnalysisKind by moving it out of SILAnalysis into its own "struct enum" in a non-nested scope.
Generally in the SIL/SILOptimizer libraries we have been putting kinds in the swift namespace, not a nested scope in a type in swift (see ValueKind as an example of this).
1 parent c911a43 commit 56d100f

24 files changed

+73
-64
lines changed

Diff for: include/swift/SILOptimizer/Analysis/AccessSummaryAnalysis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ class AccessSummaryAnalysis : public BottomUpIPAnalysis {
176176
IndexTrieNode *SubPathTrie;
177177

178178
public:
179-
AccessSummaryAnalysis() : BottomUpIPAnalysis(AnalysisKind::AccessSummary) {
179+
AccessSummaryAnalysis() : BottomUpIPAnalysis(SILAnalysisKind::AccessSummary) {
180180
SubPathTrie = new IndexTrieNode();
181181
}
182182

@@ -205,7 +205,7 @@ class AccessSummaryAnalysis : public BottomUpIPAnalysis {
205205
virtual void invalidateFunctionTables() override {}
206206

207207
static bool classof(const SILAnalysis *S) {
208-
return S->getKind() == AnalysisKind::AccessSummary;
208+
return S->getKind() == SILAnalysisKind::AccessSummary;
209209
}
210210

211211
/// Returns a description of the subpath suitable for use in diagnostics.

Diff for: include/swift/SILOptimizer/Analysis/AccessedStorageAnalysis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -251,10 +251,10 @@ class AccessedStorageAnalysis
251251
public:
252252
AccessedStorageAnalysis()
253253
: GenericFunctionEffectAnalysis<FunctionAccessedStorage>(
254-
AnalysisKind::AccessedStorage) {}
254+
SILAnalysisKind::AccessedStorage) {}
255255

256256
static bool classof(const SILAnalysis *S) {
257-
return S->getKind() == AnalysisKind::AccessedStorage;
257+
return S->getKind() == SILAnalysisKind::AccessedStorage;
258258
}
259259
};
260260

Diff for: include/swift/SILOptimizer/Analysis/AliasAnalysis.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -155,11 +155,12 @@ class AliasAnalysis : public SILAnalysis {
155155

156156

157157
public:
158-
AliasAnalysis(SILModule *M) :
159-
SILAnalysis(AnalysisKind::Alias), Mod(M), SEA(nullptr), EA(nullptr) {}
158+
AliasAnalysis(SILModule *M)
159+
: SILAnalysis(SILAnalysisKind::Alias), Mod(M), SEA(nullptr), EA(nullptr) {
160+
}
160161

161162
static bool classof(const SILAnalysis *S) {
162-
return S->getKind() == AnalysisKind::Alias;
163+
return S->getKind() == SILAnalysisKind::Alias;
163164
}
164165

165166
virtual void initialize(SILPassManager *PM) override;

Diff for: include/swift/SILOptimizer/Analysis/Analysis.h

+15-10
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,17 @@ class SILModule;
2828
class SILFunction;
2929
class SILPassManager;
3030

31+
/// A list of the known analysis.
32+
struct SILAnalysisKind {
33+
enum InnerTy {
34+
#define ANALYSIS(NAME) NAME,
35+
#include "Analysis.def"
36+
} value;
37+
38+
SILAnalysisKind(InnerTy newValue) : value(newValue) {}
39+
operator InnerTy() const { return value; }
40+
};
41+
3142
/// The base class for all SIL-level analysis.
3243
class SILAnalysis : public DeleteNotificationHandler {
3344
public:
@@ -67,15 +78,9 @@ class SILAnalysis : public DeleteNotificationHandler {
6778
Everything = Calls | Branches | Instructions,
6879
};
6980

70-
/// A list of the known analysis.
71-
enum class AnalysisKind {
72-
#define ANALYSIS(NAME) NAME,
73-
#include "Analysis.def"
74-
};
75-
7681
private:
7782
/// Stores the kind of derived class.
78-
const AnalysisKind kind;
83+
const SILAnalysisKind kind;
7984

8085
/// A lock that prevents the invalidation of this analysis. When this
8186
/// variable is set to True then the PassManager should not invalidate
@@ -84,10 +89,10 @@ class SILAnalysis : public DeleteNotificationHandler {
8489

8590
public:
8691
/// Returns the kind of derived class.
87-
AnalysisKind getKind() const { return kind; }
92+
SILAnalysisKind getKind() const { return kind; }
8893

8994
/// Constructor.
90-
SILAnalysis(AnalysisKind k) : kind(k), invalidationLock(false) {}
95+
SILAnalysis(SILAnalysisKind k) : kind(k), invalidationLock(false) {}
9196

9297
/// Destructor.
9398
virtual ~SILAnalysis() {}
@@ -239,7 +244,7 @@ class FunctionAnalysisBase : public SILAnalysis {
239244
virtual ~FunctionAnalysisBase() {
240245
deleteAllAnalysisProviders();
241246
}
242-
FunctionAnalysisBase(AnalysisKind k) : SILAnalysis(k), storage() {}
247+
FunctionAnalysisBase(SILAnalysisKind k) : SILAnalysis(k), storage() {}
243248
FunctionAnalysisBase(const FunctionAnalysisBase &) = delete;
244249
FunctionAnalysisBase &operator=(const FunctionAnalysisBase &) = delete;
245250

Diff for: include/swift/SILOptimizer/Analysis/BasicCalleeAnalysis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -126,10 +126,10 @@ class BasicCalleeAnalysis : public SILAnalysis {
126126

127127
public:
128128
BasicCalleeAnalysis(SILModule *M)
129-
: SILAnalysis(AnalysisKind::BasicCallee), M(*M), Cache(nullptr) {}
129+
: SILAnalysis(SILAnalysisKind::BasicCallee), M(*M), Cache(nullptr) {}
130130

131131
static bool classof(const SILAnalysis *S) {
132-
return S->getKind() == AnalysisKind::BasicCallee;
132+
return S->getKind() == SILAnalysisKind::BasicCallee;
133133
}
134134

135135
/// Invalidate all information in this analysis.

Diff for: include/swift/SILOptimizer/Analysis/BottomUpIPAnalysis.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -286,7 +286,7 @@ class BottomUpIPAnalysis : public SILAnalysis {
286286
}
287287
};
288288

289-
BottomUpIPAnalysis(AnalysisKind K) : SILAnalysis(K) { }
289+
BottomUpIPAnalysis(SILAnalysisKind k) : SILAnalysis(k) {}
290290

291291
/// Increments the CurrentUpdateID.
292292
/// Should be called at the beginning of a recomputation.

Diff for: include/swift/SILOptimizer/Analysis/CallerAnalysis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ class CallerAnalysis : public SILAnalysis {
6969
}
7070

7171
public:
72-
CallerAnalysis(SILModule *M) : SILAnalysis(AnalysisKind::Caller), Mod(*M) {
72+
CallerAnalysis(SILModule *M) : SILAnalysis(SILAnalysisKind::Caller), Mod(*M) {
7373
// Make sure we compute everything first time called.
7474
for (auto &F : Mod) {
7575
FuncInfos.FindAndConstruct(&F);
@@ -78,7 +78,7 @@ class CallerAnalysis : public SILAnalysis {
7878
}
7979

8080
static bool classof(const SILAnalysis *S) {
81-
return S->getKind() == AnalysisKind::Caller;
81+
return S->getKind() == SILAnalysisKind::Caller;
8282
}
8383

8484
/// Invalidate all information in this analysis.

Diff for: include/swift/SILOptimizer/Analysis/ClassHierarchyAnalysis.h

+4-4
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,14 @@ class ClassHierarchyAnalysis : public SILAnalysis {
3434
ProtocolImplementations;
3535

3636
ClassHierarchyAnalysis(SILModule *Mod)
37-
: SILAnalysis(AnalysisKind::ClassHierarchy), M(Mod) {
38-
init();
39-
}
37+
: SILAnalysis(SILAnalysisKind::ClassHierarchy), M(Mod) {
38+
init();
39+
}
4040

4141
~ClassHierarchyAnalysis();
4242

4343
static bool classof(const SILAnalysis *S) {
44-
return S->getKind() == AnalysisKind::ClassHierarchy;
44+
return S->getKind() == SILAnalysisKind::ClassHierarchy;
4545
}
4646

4747
/// Invalidate all information in this analysis.

Diff for: include/swift/SILOptimizer/Analysis/ClosureScope.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ class ClosureScopeAnalysis : public SILAnalysis {
120120
~ClosureScopeAnalysis();
121121

122122
static bool classof(const SILAnalysis *S) {
123-
return S->getKind() == AnalysisKind::ClosureScope;
123+
return S->getKind() == SILAnalysisKind::ClosureScope;
124124
}
125125

126126
SILModule *getModule() const { return M; }

Diff for: include/swift/SILOptimizer/Analysis/DestructorAnalysis.h

+2-3
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,11 @@ class DestructorAnalysis : public SILAnalysis {
2323
SILModule *Mod;
2424
llvm::DenseMap<CanType, bool> Cached;
2525
public:
26-
2726
DestructorAnalysis(SILModule *M)
28-
: SILAnalysis(AnalysisKind::Destructor), Mod(M) {}
27+
: SILAnalysis(SILAnalysisKind::Destructor), Mod(M) {}
2928

3029
static bool classof(const SILAnalysis *S) {
31-
return S->getKind() == AnalysisKind::Destructor;
30+
return S->getKind() == SILAnalysisKind::Destructor;
3231
}
3332

3433
/// Returns true if destruction of T may store to memory.

Diff for: include/swift/SILOptimizer/Analysis/DominanceAnalysis.h

+5-4
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@ class DominanceAnalysis : public FunctionAnalysisBase<DominanceInfo> {
3232

3333
public:
3434
DominanceAnalysis()
35-
: FunctionAnalysisBase<DominanceInfo>(AnalysisKind::Dominance) {}
35+
: FunctionAnalysisBase<DominanceInfo>(SILAnalysisKind::Dominance) {}
3636

3737
DominanceAnalysis(const DominanceAnalysis &) = delete;
3838
DominanceAnalysis &operator=(const DominanceAnalysis &) = delete;
3939

4040
static bool classof(const SILAnalysis *S) {
41-
return S->getKind() == AnalysisKind::Dominance;
41+
return S->getKind() == SILAnalysisKind::Dominance;
4242
}
4343

4444
DominanceInfo *newFunctionAnalysis(SILFunction *F) override {
@@ -60,13 +60,14 @@ class PostDominanceAnalysis : public FunctionAnalysisBase<PostDominanceInfo> {
6060

6161
public:
6262
PostDominanceAnalysis()
63-
: FunctionAnalysisBase<PostDominanceInfo>(AnalysisKind::PostDominance) {}
63+
: FunctionAnalysisBase<PostDominanceInfo>(
64+
SILAnalysisKind::PostDominance) {}
6465

6566
PostDominanceAnalysis(const PostDominanceAnalysis &) = delete;
6667
PostDominanceAnalysis &operator=(const PostDominanceAnalysis &) = delete;
6768

6869
static bool classof(const SILAnalysis *S) {
69-
return S->getKind() == AnalysisKind::PostDominance;
70+
return S->getKind() == SILAnalysisKind::PostDominance;
7071
}
7172

7273
PostDominanceInfo *newFunctionAnalysis(SILFunction *F) override {

Diff for: include/swift/SILOptimizer/Analysis/EpilogueARCAnalysis.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -271,8 +271,9 @@ class EpilogueARCAnalysis : public FunctionAnalysisBase<EpilogueARCFunctionInfo>
271271

272272
public:
273273
EpilogueARCAnalysis(SILModule *)
274-
: FunctionAnalysisBase<EpilogueARCFunctionInfo>(AnalysisKind::EpilogueARC),
275-
PO(nullptr), AA(nullptr), RC(nullptr) {}
274+
: FunctionAnalysisBase<EpilogueARCFunctionInfo>(
275+
SILAnalysisKind::EpilogueARC),
276+
PO(nullptr), AA(nullptr), RC(nullptr) {}
276277

277278
EpilogueARCAnalysis(const EpilogueARCAnalysis &) = delete;
278279
EpilogueARCAnalysis &operator=(const EpilogueARCAnalysis &) = delete;
@@ -294,7 +295,7 @@ class EpilogueARCAnalysis : public FunctionAnalysisBase<EpilogueARCFunctionInfo>
294295
virtual bool needsNotifications() override { return true; }
295296

296297
static bool classof(const SILAnalysis *S) {
297-
return S->getKind() == AnalysisKind::EpilogueARC;
298+
return S->getKind() == SILAnalysisKind::EpilogueARC;
298299
}
299300

300301
virtual void initialize(SILPassManager *PM) override;

Diff for: include/swift/SILOptimizer/Analysis/EscapeAnalysis.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -750,7 +750,7 @@ class EscapeAnalysis : public BottomUpIPAnalysis {
750750
EscapeAnalysis(SILModule *M);
751751

752752
static bool classof(const SILAnalysis *S) {
753-
return S->getKind() == AnalysisKind::Escape;
753+
return S->getKind() == SILAnalysisKind::Escape;
754754
}
755755

756756
virtual void initialize(SILPassManager *PM) override;

Diff for: include/swift/SILOptimizer/Analysis/IVAnalysis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ class IVInfo : public SCCVisitor<IVInfo> {
8282
class IVAnalysis final : public FunctionAnalysisBase<IVInfo> {
8383
public:
8484
IVAnalysis(SILModule *)
85-
: FunctionAnalysisBase<IVInfo>(AnalysisKind::InductionVariable) {}
85+
: FunctionAnalysisBase<IVInfo>(SILAnalysisKind::InductionVariable) {}
8686
IVAnalysis(const IVAnalysis &) = delete;
8787
IVAnalysis &operator=(const IVAnalysis &) = delete;
8888

8989
static bool classof(const SILAnalysis *S) {
90-
return S->getKind() == AnalysisKind::InductionVariable;
90+
return S->getKind() == SILAnalysisKind::InductionVariable;
9191
}
9292

9393
IVInfo *newFunctionAnalysis(SILFunction *F) override {

Diff for: include/swift/SILOptimizer/Analysis/LoopAnalysis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,10 @@ class SILLoopAnalysis : public FunctionAnalysisBase<SILLoopInfo> {
3232
DominanceAnalysis *DA;
3333
public:
3434
SILLoopAnalysis(SILModule *)
35-
: FunctionAnalysisBase(AnalysisKind::Loop), DA(nullptr) {}
35+
: FunctionAnalysisBase(SILAnalysisKind::Loop), DA(nullptr) {}
3636

3737
static bool classof(const SILAnalysis *S) {
38-
return S->getKind() == AnalysisKind::Loop;
38+
return S->getKind() == SILAnalysisKind::Loop;
3939
}
4040

4141
virtual bool shouldInvalidate(SILAnalysis::InvalidationKind K) override {

Diff for: include/swift/SILOptimizer/Analysis/LoopRegionAnalysis.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -1066,7 +1066,8 @@ class LoopRegionAnalysis : public FunctionAnalysisBase<LoopRegionFunctionInfo> {
10661066

10671067
public:
10681068
LoopRegionAnalysis(SILModule *M)
1069-
: FunctionAnalysisBase<LoopRegionFunctionInfo>(AnalysisKind::LoopRegion) {}
1069+
: FunctionAnalysisBase<LoopRegionFunctionInfo>(
1070+
SILAnalysisKind::LoopRegion) {}
10701071

10711072
LoopRegionAnalysis(const LoopRegionAnalysis &) = delete;
10721073
LoopRegionAnalysis &operator=(const LoopRegionAnalysis &) = delete;
@@ -1076,7 +1077,7 @@ class LoopRegionAnalysis : public FunctionAnalysisBase<LoopRegionFunctionInfo> {
10761077
virtual void initialize(SILPassManager *PM) override;
10771078

10781079
static bool classof(const SILAnalysis *S) {
1079-
return S->getKind() == AnalysisKind::LoopRegion;
1080+
return S->getKind() == SILAnalysisKind::LoopRegion;
10801081
}
10811082

10821083
virtual LoopRegionFunctionInfo *newFunctionAnalysis(SILFunction *F) override {

Diff for: include/swift/SILOptimizer/Analysis/PostOrderAnalysis.h

+3-2
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,15 @@ class PostOrderAnalysis : public FunctionAnalysisBase<PostOrderFunctionInfo> {
4444

4545
public:
4646
PostOrderAnalysis()
47-
: FunctionAnalysisBase<PostOrderFunctionInfo>(AnalysisKind::PostOrder) {}
47+
: FunctionAnalysisBase<PostOrderFunctionInfo>(
48+
SILAnalysisKind::PostOrder) {}
4849

4950
// This is a cache and shouldn't be copied around.
5051
PostOrderAnalysis(const PostOrderAnalysis &) = delete;
5152
PostOrderAnalysis &operator=(const PostOrderAnalysis &) = delete;
5253

5354
static bool classof(const SILAnalysis *S) {
54-
return S->getKind() == AnalysisKind::PostOrder;
55+
return S->getKind() == SILAnalysisKind::PostOrder;
5556
}
5657
};
5758

Diff for: include/swift/SILOptimizer/Analysis/ProtocolConformanceAnalysis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -37,14 +37,14 @@ class ProtocolConformanceAnalysis : public SILAnalysis {
3737
ProtocolConformanceMap;
3838

3939
ProtocolConformanceAnalysis(SILModule *Mod)
40-
: SILAnalysis(AnalysisKind::ProtocolConformance), M(Mod) {
40+
: SILAnalysis(SILAnalysisKind::ProtocolConformance), M(Mod) {
4141
init();
4242
}
4343

4444
~ProtocolConformanceAnalysis();
4545

4646
static bool classof(const SILAnalysis *S) {
47-
return S->getKind() == AnalysisKind::ProtocolConformance;
47+
return S->getKind() == SILAnalysisKind::ProtocolConformance;
4848
}
4949

5050
/// Invalidate all information in this analysis.

Diff for: include/swift/SILOptimizer/Analysis/RCIdentityAnalysis.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -93,8 +93,9 @@ class RCIdentityAnalysis : public FunctionAnalysisBase<RCIdentityFunctionInfo> {
9393

9494
public:
9595
RCIdentityAnalysis(SILModule *)
96-
: FunctionAnalysisBase<RCIdentityFunctionInfo>(AnalysisKind::RCIdentity),
97-
DA(nullptr) {}
96+
: FunctionAnalysisBase<RCIdentityFunctionInfo>(
97+
SILAnalysisKind::RCIdentity),
98+
DA(nullptr) {}
9899

99100
RCIdentityAnalysis(const RCIdentityAnalysis &) = delete;
100101
RCIdentityAnalysis &operator=(const RCIdentityAnalysis &) = delete;
@@ -112,7 +113,7 @@ class RCIdentityAnalysis : public FunctionAnalysisBase<RCIdentityFunctionInfo> {
112113
virtual bool needsNotifications() override { return true; }
113114

114115
static bool classof(const SILAnalysis *S) {
115-
return S->getKind() == AnalysisKind::RCIdentity;
116+
return S->getKind() == SILAnalysisKind::RCIdentity;
116117
}
117118

118119
virtual void initialize(SILPassManager *PM) override;

Diff for: include/swift/SILOptimizer/Analysis/SideEffectAnalysis.h

+4-3
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,8 @@ class GenericFunctionEffectAnalysis : public BottomUpIPAnalysis {
8989
BasicCalleeAnalysis *BCA;
9090

9191
public:
92-
GenericFunctionEffectAnalysis(AnalysisKind kind) : BottomUpIPAnalysis(kind) {}
92+
GenericFunctionEffectAnalysis(SILAnalysisKind kind)
93+
: BottomUpIPAnalysis(kind) {}
9394

9495
const FunctionEffects &getEffects(SILFunction *F) {
9596
FunctionInfo *functionInfo = getFunctionInfo(F);
@@ -441,10 +442,10 @@ class SideEffectAnalysis
441442
public:
442443
SideEffectAnalysis()
443444
: GenericFunctionEffectAnalysis<FunctionSideEffects>(
444-
AnalysisKind::SideEffect) {}
445+
SILAnalysisKind::SideEffect) {}
445446

446447
static bool classof(const SILAnalysis *S) {
447-
return S->getKind() == AnalysisKind::SideEffect;
448+
return S->getKind() == SILAnalysisKind::SideEffect;
448449
}
449450
};
450451

Diff for: include/swift/SILOptimizer/Analysis/TypeExpansionAnalysis.h

+2-2
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,10 @@ class TypeExpansionAnalysis : public SILAnalysis {
2525
llvm::DenseMap<SILType, ProjectionPathList> ExpansionCache;
2626
public:
2727
TypeExpansionAnalysis(SILModule *M)
28-
: SILAnalysis(AnalysisKind::TypeExpansion) {}
28+
: SILAnalysis(SILAnalysisKind::TypeExpansion) {}
2929

3030
static bool classof(const SILAnalysis *S) {
31-
return S->getKind() == AnalysisKind::TypeExpansion;
31+
return S->getKind() == SILAnalysisKind::TypeExpansion;
3232
}
3333

3434
/// Return ProjectionPath to every leaf or intermediate node of the given type.

Diff for: lib/SILOptimizer/Analysis/ClosureScope.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ void ClosureScopeData::compute(SILModule *M) {
133133
}
134134

135135
ClosureScopeAnalysis::ClosureScopeAnalysis(SILModule *M)
136-
: SILAnalysis(AnalysisKind::ClosureScope), M(M), scopeData(nullptr) {}
136+
: SILAnalysis(SILAnalysisKind::ClosureScope), M(M), scopeData(nullptr) {}
137137

138138
ClosureScopeAnalysis::~ClosureScopeAnalysis() = default;
139139

0 commit comments

Comments
 (0)