Skip to content

Commit 279eb78

Browse files
committed
[windows] Temporarily guard lifetime dependence diagnostics
by -enable-experimental-feature NonescapableTypes on the Windows platform These passes do nothing unless the above feature flag is enabled, so the only reason to run the pass is to exercise SwiftCompilerSources and catch invalid SIL. 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 would like to can these issues quickly as we hit them, but only if we have a way of reproducing the failure. Currently, we don't have a way of reproducing Windows-arm64 failures. Workaround for: rdar://128434000 ([nonescapable] [LifetimeDependenceInsertion] Package resolution fails with arm64 Windows toolchain)
1 parent 174983f commit 279eb78

File tree

3 files changed

+15
-0
lines changed

3 files changed

+15
-0
lines changed

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/LifetimeDependenceDiagnostics.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,11 @@ 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 os(Windows)
33+
if !context.options.hasFeature(.NonescapableTypes) {
34+
return
35+
}
36+
#endif
3237
log(prefix: false, "\n--- Diagnosing lifetime dependence in \(function.name)")
3338
log("\(function)")
3439

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/LifetimeDependenceInsertion.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ 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 os(Windows)
35+
if !context.options.hasFeature(.NonescapableTypes) {
36+
return
37+
}
38+
#endif
3439
log(prefix: false, "\n--- Inserting lifetime dependence markers in \(function.name)")
3540

3641
for instruction in function.instructions {

SwiftCompilerSources/Sources/Optimizer/FunctionPasses/LifetimeDependenceScopeFixup.swift

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ 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 os(Windows)
35+
if !context.options.hasFeature(.NonescapableTypes) {
36+
return
37+
}
38+
#endif
3439
log(prefix: false, "\n--- Scope fixup for lifetime dependence in \(function.name)")
3540

3641
let localReachabilityCache = LocalVariableReachabilityCache()

0 commit comments

Comments
 (0)