@@ -58,64 +58,6 @@ struct State {
58
58
static constexpr unsigned NumStates = 2 ;
59
59
};
60
60
61
- // / a ritzy wrapper for a SILInstruction* that includes a high-level description
62
- // struct NonIsolatedUse {
63
- // // NOTE: these enum values correspond to messages in diagnostics
64
- // enum Kind {
65
- // Uncategorized = 0,
66
- // SelfCopy = 1,
67
- // InvokeFunc = 2,
68
- // };
69
- //
70
- // SILInstruction* inst;
71
- // Kind kind;
72
- //
73
- // NonIsolatedUse() : inst(nullptr), kind(Uncategorized) {}
74
- // NonIsolatedUse(SILInstruction *i, Kind c) : inst(i), kind(c) {}
75
- // NonIsolatedUse(std::pair<SILInstruction*, Kind> const& other) {
76
- // inst = other.first;
77
- // kind = other.second;
78
- // }
79
- //
80
- // /// Returns an ID corresponding to a selector in a diagnostic suitable
81
- // /// for describing this use kind.
82
- // unsigned descriptionID() const {
83
- // return (unsigned)kind;
84
- // }
85
- //
86
- // /// Returns an identifier describing the subject of the use kind.
87
- // DeclName descriptionSubject() const {
88
- // switch (kind) {
89
- // // subject is 'self'
90
- // case SelfCopy:
91
- // case Uncategorized: {
92
- // auto &ctx = inst->getModule().getASTContext();
93
- // return ctx.Id_self;
94
- // break;
95
- // }
96
- //
97
- // // subject is the callee function
98
- // case MethodCall:
99
- // case ExplicitArgInCall: {
100
- // auto apply = ApplySite::isa(inst);
101
- // if (auto *fn = apply.getReferencedFunctionOrNull())
102
- // if (auto *declCxt = fn->getDeclContext())
103
- // if (auto *astDecl = dyn_cast<ValueDecl>(declCxt->getAsDecl()))
104
- // return astDecl->getName();
105
- // }
106
- // };
107
- // }
108
- //
109
- // operator bool() const {
110
- // return inst;
111
- // }
112
- //
113
- // void dump() const LLVM_ATTRIBUTE_USED {
114
- // inst->dump();
115
- // llvm::dbgs() << "(" << descriptionID() << ")\n";
116
- // }
117
- // };
118
-
119
61
// / Information gathered for analysis that is specific to a block.
120
62
struct Info {
121
63
using UseSet = SmallPtrSet<SILInstruction*, 8 >;
@@ -827,10 +769,12 @@ void checkFlowIsolation(SILFunction *fn) {
827
769
info.verifyIsolation ();
828
770
}
829
771
830
- // / The FlowIsolation pass performs flow-sensitive actor-isolation checking in the body of actor member
831
- // / functions that treat `self` as `nonisolated` after the first `nonisolated` use. This pass uses a simple
832
- // / forward dataflow analysis to track these changes and emits diagnostics if an isolated use of `self` appears
833
- // / when `self` may be `nonisolated` at that point in the function.
772
+ // / The FlowIsolation pass performs flow-sensitive actor-isolation checking in
773
+ // / the body of actor member functions that treat `self` as `nonisolated` after
774
+ // / the first `nonisolated` use. This pass uses a simple forward dataflow
775
+ // / analysis to track these changes and emits diagnostics if an isolated use of
776
+ // / `self` appears when `self` may be `nonisolated` at that point in the
777
+ // / function.
834
778
class FlowIsolation : public SILFunctionTransform {
835
779
836
780
// / The entry point to the checker.
0 commit comments