From 6989f05abedada6c391c528c5ea0d2f0fa7724fa Mon Sep 17 00:00:00 2001 From: Konrad 'ktoso' Malawski Date: Tue, 17 Jun 2025 18:26:28 +0900 Subject: [PATCH] Revert revert & fix distributed protocol and TBD handling This reverts a revert that was done internally here https://stashweb.sd.apple.com/projects/DEVTOOLS/repos/swift/pull-requests/8697/overview and corrects some issues with the reverted code while at it. This fix is crucial to land for correctness and necessary to fix the rdar://144568615 which had a fix submitted however that assumed that THIS change also was present, so the fix submitted for 144568615 is incomplete without this change as well. This enables, and adds more TBD testing and was explicitly checked against the GameKit reproducer project from rdar://144568615. I will also upstream the necessary parts missing from OSS repo there so we have alignment between all branches. --- lib/IRGen/GenMeta.cpp | 2 +- lib/IRGen/IRSymbolVisitor.cpp | 1 + test/TBD/distributed_library_evolution.swift | 10 +++++----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/IRGen/GenMeta.cpp b/lib/IRGen/GenMeta.cpp index eab0114d589fb..d862046acd21e 100644 --- a/lib/IRGen/GenMeta.cpp +++ b/lib/IRGen/GenMeta.cpp @@ -1002,7 +1002,7 @@ namespace { // Emit the dispatch thunk. auto shouldEmitDispatchThunk = - (Resilient || IGM.getOptions().WitnessMethodElimination); + Resilient || IGM.getOptions().WitnessMethodElimination; if (shouldEmitDispatchThunk) { IGM.emitDispatchThunk(func); } diff --git a/lib/IRGen/IRSymbolVisitor.cpp b/lib/IRGen/IRSymbolVisitor.cpp index b62d906146aa4..ff249fccf3b45 100644 --- a/lib/IRGen/IRSymbolVisitor.cpp +++ b/lib/IRGen/IRSymbolVisitor.cpp @@ -108,6 +108,7 @@ class IRSymbolVisitorImpl : public SILSymbolVisitor { void addDispatchThunk(SILDeclRef declRef) override { auto entity = LinkEntity::forDispatchThunk(declRef); + addLinkEntity(entity); if (declRef.getAbstractFunctionDecl()->hasAsync()) diff --git a/test/TBD/distributed_library_evolution.swift b/test/TBD/distributed_library_evolution.swift index 07f384984afe3..6ef9631d128d7 100644 --- a/test/TBD/distributed_library_evolution.swift +++ b/test/TBD/distributed_library_evolution.swift @@ -22,14 +22,14 @@ // RUN: -validate-tbd-against-ir=all \ // RUN: -emit-module-interface-path %t/Library.swiftinterface -// RUN: %target-swift-frontend %t/actor.swift \ -// RUN: -enable-library-evolution \ +// RUN: %target-swift-frontend %t/actor.swift -enable-library-evolution \ +// RUN: -enable-library-evolution \ // RUN: -disable-availability-checking -emit-ir -o %t/test.ll -emit-tbd \ // RUN: -emit-tbd-path %t/actor.tbd -I %t -tbd-install_name actor -// RUN: %target-swift-frontend %t/actor.swift \ -// RUN: -I %t \ -// RUN: -disable-availability-checking \ +// RUN: %target-swift-frontend %t/actor.swift \ +// RUN: -I %t \ +// RUN: -disable-availability-checking \ // RUN: -emit-module \ // RUN: -package-name Package \ // RUN: -enable-library-evolution \