Skip to content

Commit 093aed9

Browse files
committed
Enable lifetime dependence diagnostics for Nonescapable types.
Adds -Xfrontend -disable-lifetime-dependence-diagnostics. Removes -Xllvm -enable-lifetime-dependence-insertion Removes -Xllvm -enable-lifetime-dependence-diagnostics
1 parent df7326d commit 093aed9

File tree

4 files changed

+17
-16
lines changed

4 files changed

+17
-16
lines changed

include/swift/AST/SILOptions.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,9 @@ class SILOptions {
137137
/// function pointers.
138138
bool EnableImportPtrauthFieldFunctionPointers = false;
139139

140+
/// Enables SIL-level diagnostics for NonescapableTypes.
141+
bool EnableLifetimeDependenceDiagnostics = true;
142+
140143
/// Controls whether or not paranoid verification checks are run.
141144
bool VerifyAll = false;
142145

include/swift/Option/FrontendOptions.td

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,6 +1240,13 @@ def disable_import_ptrauth_field_function_pointers :
12401240
Flag<["-"], "disable-import-ptrauth-field-function-pointers">,
12411241
HelpText<"Disable import of custom ptrauth qualified field function pointers">;
12421242

1243+
def enable_lifetime_dependence_diagnostics :
1244+
Flag<["-"], "enable-lifetime-dependence-diagnostics">,
1245+
HelpText<"Enable lifetime dependence diagnostics for Nonescapable types.">;
1246+
def disable_lifetime_dependence_diagnostics :
1247+
Flag<["-"], "disable-lifetime-dependence-diagnostics">,
1248+
HelpText<"Disable lifetime dependence diagnostics for Nonescapable types.">;
1249+
12431250
def enable_collocate_metadata_functions :
12441251
Flag<["-"], "enable-collocate-metadata-functions">,
12451252
HelpText<"Enable collocate metadata functions">;

lib/Frontend/CompilerInvocation.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2352,6 +2352,11 @@ static bool ParseSILArgs(SILOptions &Opts, ArgList &Args,
23522352
Args.hasArg(OPT_enable_import_ptrauth_field_function_pointers,
23532353
OPT_disable_import_ptrauth_field_function_pointers,
23542354
Opts.EnableImportPtrauthFieldFunctionPointers);
2355+
Opts.EnableLifetimeDependenceDiagnostics =
2356+
Args.hasFlag(OPT_enable_lifetime_dependence_diagnostics,
2357+
OPT_disable_lifetime_dependence_diagnostics,
2358+
Opts.EnableLifetimeDependenceDiagnostics);
2359+
23552360
Opts.VerifyAll |= Args.hasArg(OPT_sil_verify_all);
23562361
Opts.VerifyNone |= Args.hasArg(OPT_sil_verify_none);
23572362
Opts.DebugSerialization |= Args.hasArg(OPT_sil_debug_serialization);

lib/SILOptimizer/PassManager/PassPipeline.cpp

Lines changed: 2 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -65,18 +65,6 @@ static llvm::cl::opt<bool>
6565
EnableDeinitDevirtualizer("enable-deinit-devirtualizer", llvm::cl::init(false),
6666
llvm::cl::desc("Enable the DestroyHoisting pass."));
6767

68-
// Temporary flag until the stdlib builds with ~Escapable
69-
static llvm::cl::opt<bool>
70-
EnableLifetimeDependenceInsertion(
71-
"enable-lifetime-dependence-insertion", llvm::cl::init(false),
72-
llvm::cl::desc("Enable lifetime dependence insertion."));
73-
74-
// Temporary flag until the stdlib builds with ~Escapable
75-
static llvm::cl::opt<bool>
76-
EnableLifetimeDependenceDiagnostics(
77-
"enable-lifetime-dependence-diagnostics", llvm::cl::init(false),
78-
llvm::cl::desc("Enable lifetime dependence diagnostics."));
79-
8068
//===----------------------------------------------------------------------===//
8169
// Diagnostic Pass Pipeline
8270
//===----------------------------------------------------------------------===//
@@ -184,7 +172,7 @@ static void addMandatoryDiagnosticOptPipeline(SILPassPipelinePlan &P) {
184172
P.addMoveOnlyChecker();
185173

186174
// Check ~Escapable.
187-
if (EnableLifetimeDependenceDiagnostics) {
175+
if (P.getOptions().EnableLifetimeDependenceDiagnostics) {
188176
P.addLifetimeDependenceDiagnostics();
189177
}
190178
if (EnableDeinitDevirtualizer)
@@ -296,10 +284,8 @@ SILPassPipelinePlan::getSILGenPassPipeline(const SILOptions &Options) {
296284
P.startPipeline("SILGen Passes");
297285

298286
P.addSILGenCleanup();
299-
if (EnableLifetimeDependenceDiagnostics || EnableLifetimeDependenceInsertion) {
287+
if (P.getOptions().EnableLifetimeDependenceDiagnostics) {
300288
P.addLifetimeDependenceInsertion();
301-
}
302-
if (EnableLifetimeDependenceDiagnostics) {
303289
P.addLifetimeDependenceScopeFixup();
304290
}
305291
if (SILViewSILGenCFG) {

0 commit comments

Comments
 (0)