diff --git a/include/swift/SILOptimizer/PassManager/Passes.def b/include/swift/SILOptimizer/PassManager/Passes.def index 27de06f8400..45b7e95c7e7 100644 --- a/include/swift/SILOptimizer/PassManager/Passes.def +++ b/include/swift/SILOptimizer/PassManager/Passes.def @@ -464,7 +464,7 @@ PASS(PartialApplySimplification, "partial-apply-simplification", "Transform partial_apply instructions into explicit closure box constructions") PASS(MovedAsyncVarDebugInfoPropagator, "sil-moved-async-var-dbginfo-propagator", "Propagate debug info from moved async vars after coroutine funclet boundaries") -PASS(MoveOnlyDeinitInsertion, "sil-move-only-deinit-insertion", +PASS(MoveOnlyDeinitDevirtualization, "sil-move-only-deinit-devirtualization", "After running move only checking, convert last destroy_values to deinit calls") PASS(MoveOnlyBorrowToDestructureTransform, "sil-move-only-borrow-to-destructure", diff --git a/lib/SILOptimizer/Mandatory/CMakeLists.txt b/lib/SILOptimizer/Mandatory/CMakeLists.txt index 2a48a358fcf..742bd063847 100644 --- a/lib/SILOptimizer/Mandatory/CMakeLists.txt +++ b/lib/SILOptimizer/Mandatory/CMakeLists.txt @@ -28,7 +28,6 @@ target_sources(swiftSILOptimizer PRIVATE MoveOnlyBorrowToDestructureTester.cpp MoveOnlyBorrowToDestructureUtils.cpp MoveOnlyChecker.cpp - MoveOnlyDeinitInsertion.cpp MoveOnlyDiagnostics.cpp MoveOnlyObjectCheckerTester.cpp MoveOnlyObjectCheckerUtils.cpp diff --git a/lib/SILOptimizer/PassManager/PassPipeline.cpp b/lib/SILOptimizer/PassManager/PassPipeline.cpp index 83a9047218b..216354ee738 100644 --- a/lib/SILOptimizer/PassManager/PassPipeline.cpp +++ b/lib/SILOptimizer/PassManager/PassPipeline.cpp @@ -157,7 +157,7 @@ static void addMandatoryDiagnosticOptPipeline(SILPassPipelinePlan &P) { // Check noImplicitCopy and move only types for objects and addresses. P.addMoveOnlyChecker(); // Convert last destroy_value to deinits. - P.addMoveOnlyDeinitInsertion(); + P.addMoveOnlyDeinitDevirtualization(); // Lower move only wrapped trivial types. P.addTrivialMoveOnlyTypeEliminator(); // Check no uses after consume operator of a value in an address. diff --git a/lib/SILOptimizer/Transforms/CMakeLists.txt b/lib/SILOptimizer/Transforms/CMakeLists.txt index e5d6a5a4b24..7e4bd1c81f0 100644 --- a/lib/SILOptimizer/Transforms/CMakeLists.txt +++ b/lib/SILOptimizer/Transforms/CMakeLists.txt @@ -20,6 +20,7 @@ target_sources(swiftSILOptimizer PRIVATE DifferentiabilityWitnessDevirtualizer.cpp EagerSpecializer.cpp GenericSpecializer.cpp + MoveOnlyDeinitDevirtualization.cpp Outliner.cpp AssemblyVisionRemarkGenerator.cpp PartialApplySimplification.cpp diff --git a/lib/SILOptimizer/Mandatory/MoveOnlyDeinitInsertion.cpp b/lib/SILOptimizer/Transforms/MoveOnlyDeinitDevirtualization.cpp similarity index 94% rename from lib/SILOptimizer/Mandatory/MoveOnlyDeinitInsertion.cpp rename to lib/SILOptimizer/Transforms/MoveOnlyDeinitDevirtualization.cpp index 037f4c5d1b8..65090aa8c44 100644 --- a/lib/SILOptimizer/Mandatory/MoveOnlyDeinitInsertion.cpp +++ b/lib/SILOptimizer/Transforms/MoveOnlyDeinitDevirtualization.cpp @@ -1,4 +1,4 @@ -//===--- MoveOnlyDeinitInsertion.cpp --------------------------------------===// +//===--- MoveOnlyDeinitDevirtualization.cpp --------------------------------------===// // // This source file is part of the Swift.org open source project // @@ -143,7 +143,7 @@ static bool performTransform(SILFunction &fn) { namespace { -class SILMoveOnlyDeinitInsertionPass : public SILFunctionTransform { +class SILMoveOnlyDeinitDevirtualizationPass : public SILFunctionTransform { void run() override { auto *fn = getFunction(); @@ -153,7 +153,7 @@ class SILMoveOnlyDeinitInsertionPass : public SILFunctionTransform { assert(fn->getModule().getStage() == SILStage::Raw && "Should only run on Raw SIL"); - LLVM_DEBUG(llvm::dbgs() << "===> MoveOnly Deinit Insertion. Visiting: " + LLVM_DEBUG(llvm::dbgs() << "===> MoveOnly Deinit Devirtualization. Visiting: " << fn->getName() << '\n'); if (performTransform(*fn)) { invalidateAnalysis(SILAnalysis::InvalidationKind::CallsAndInstructions); @@ -163,6 +163,6 @@ class SILMoveOnlyDeinitInsertionPass : public SILFunctionTransform { } // anonymous namespace -SILTransform *swift::createMoveOnlyDeinitInsertion() { - return new SILMoveOnlyDeinitInsertionPass(); +SILTransform *swift::createMoveOnlyDeinitDevirtualization() { + return new SILMoveOnlyDeinitDevirtualizationPass(); } diff --git a/test/SILOptimizer/moveonly_deinit_insertion.sil b/test/SILOptimizer/moveonly_deinit_devirtualization.sil similarity index 98% rename from test/SILOptimizer/moveonly_deinit_insertion.sil rename to test/SILOptimizer/moveonly_deinit_devirtualization.sil index 4e148eb4911..895cd6dc985 100644 --- a/test/SILOptimizer/moveonly_deinit_insertion.sil +++ b/test/SILOptimizer/moveonly_deinit_devirtualization.sil @@ -1,4 +1,4 @@ -// RUN: %target-sil-opt -module-name main -enable-sil-verify-all -sil-move-only-deinit-insertion -enable-experimental-feature MoveOnlyClasses -enable-experimental-feature MoveOnlyEnumDeinits %s | %FileCheck %s +// RUN: %target-sil-opt -module-name main -enable-sil-verify-all -sil-move-only-deinit-devirtualization -enable-experimental-feature MoveOnlyClasses -enable-experimental-feature MoveOnlyEnumDeinits %s | %FileCheck %s sil_stage raw diff --git a/test/SILOptimizer/moveonly_deinit_insertion_library_evolution.sil b/test/SILOptimizer/moveonly_deinit_devirtualization_library_evolution.sil similarity index 98% rename from test/SILOptimizer/moveonly_deinit_insertion_library_evolution.sil rename to test/SILOptimizer/moveonly_deinit_devirtualization_library_evolution.sil index 43826429c70..c4217810e3a 100644 --- a/test/SILOptimizer/moveonly_deinit_insertion_library_evolution.sil +++ b/test/SILOptimizer/moveonly_deinit_devirtualization_library_evolution.sil @@ -1,4 +1,4 @@ -// RUN: %target-sil-opt -enable-library-evolution -module-name main -enable-sil-verify-all -sil-move-only-deinit-insertion -enable-experimental-feature MoveOnlyClasses -enable-experimental-feature MoveOnlyEnumDeinits %s | %FileCheck %s +// RUN: %target-sil-opt -enable-library-evolution -module-name main -enable-sil-verify-all -sil-move-only-deinit-devirtualization -enable-experimental-feature MoveOnlyClasses -enable-experimental-feature MoveOnlyEnumDeinits %s | %FileCheck %s sil_stage raw