Skip to content

Commit 4779328

Browse files
committed
Guard lifetime dependence diagnostics
by -enable-experimental-feature NonescapableTypes These passes do nothing unless the above feature flag is enabled, so there's no reason to be running them. These passes rely on fundamental SwiftCompilerSources abstractions which have not yet been tested outside of the passes. They don't yet handle all SIL patterns, and SIL continues to evolve. We should not expose these issues on a release branch. This reverts commit 6efcb59. "Always-enable lifetime-depenence diagnostics." Workaround for: ** rdar://129931868 [nonescapable] (Crash on attempt to compile unit test); SIL/FunctionConvention.swift:29: Fatal error: requires contextual type ** rdar://129494573 [nonescapable] [LifetimeDependenceDiagnostics] ** rdar://128434000 ([nonescapable] [LifetimeDependenceInsertion] Package resolution fails with arm64 Windows toolchain)
1 parent ed21303 commit 4779328

File tree

3 files changed

+9
-0
lines changed

3 files changed

+9
-0
lines changed

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/LifetimeDependenceDiagnostics.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@ private func log(prefix: Bool = true, _ message: @autoclosure () -> String) {
2929
let lifetimeDependenceDiagnosticsPass = FunctionPass(
3030
name: "lifetime-dependence-diagnostics")
3131
{ (function: Function, context: FunctionPassContext) in
32+
if !context.options.hasFeature(.NonescapableTypes) {
33+
return
34+
}
3235
log(prefix: false, "\n--- Diagnosing lifetime dependence in \(function.name)")
3336
log("\(function)")
3437

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/LifetimeDependenceInsertion.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ private func log(prefix: Bool = true, _ message: @autoclosure () -> String) {
3131
let lifetimeDependenceInsertionPass = FunctionPass(
3232
name: "lifetime-dependence-insertion")
3333
{ (function: Function, context: FunctionPassContext) in
34+
if !context.options.hasFeature(.NonescapableTypes) {
35+
return
36+
}
3437
log(prefix: false, "\n--- Inserting lifetime dependence markers in \(function.name)")
3538

3639
for instruction in function.instructions {

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/LifetimeDependenceScopeFixup.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ private func log(prefix: Bool = true, _ message: @autoclosure () -> String) {
3131
let lifetimeDependenceScopeFixupPass = FunctionPass(
3232
name: "lifetime-dependence-scope-fixup")
3333
{ (function: Function, context: FunctionPassContext) in
34+
if !context.options.hasFeature(.NonescapableTypes) {
35+
return
36+
}
3437
log(prefix: false, "\n--- Scope fixup for lifetime dependence in \(function.name)")
3538

3639
let localReachabilityCache = LocalVariableReachabilityCache()

0 commit comments

Comments
 (0)