Skip to content

Commit 540d7bb

Browse files
committed
[embedded] Avoid a flag on DFE in favor of Module->isSerialized
1 parent 7c5962b commit 540d7bb

File tree

1 file changed

+10
-16
lines changed

1 file changed

+10
-16
lines changed

lib/SILOptimizer/IPO/DeadFunctionElimination.cpp

Lines changed: 10 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,6 @@ class DeadFunctionAndGlobalElimination {
9595

9696
bool keepExternalWitnessTablesAlive;
9797

98-
bool removeUnspecializedFunctionsInEmbeddedSwift;
99-
10098
/// Checks is a function is alive, e.g. because it is visible externally.
10199
bool isAnchorFunction(SILFunction *F) {
102100

@@ -433,8 +431,9 @@ class DeadFunctionAndGlobalElimination {
433431
// externally and are not anchors.
434432
bool embedded = Module->getOptions().EmbeddedSwift;
435433
bool generic = loweredFunctionHasGenericArguments(&F);
434+
bool isSerialized = Module->isSerialized();
436435
bool ignoreAnchor =
437-
embedded && generic && removeUnspecializedFunctionsInEmbeddedSwift;
436+
embedded && generic && isSerialized;
438437

439438
if (isAnchorFunction(&F) && !ignoreAnchor) {
440439
LLVM_DEBUG(llvm::dbgs() << " anchor function: " << F.getName() <<"\n");
@@ -706,16 +705,13 @@ class DeadFunctionAndGlobalElimination {
706705
}
707706

708707
public:
709-
DeadFunctionAndGlobalElimination(
710-
SILModule *module, bool keepExternalWitnessTablesAlive,
711-
bool removeUnspecializedFunctionsInEmbeddedSwift)
712-
: Module(module),
713-
keepExternalWitnessTablesAlive(keepExternalWitnessTablesAlive),
714-
removeUnspecializedFunctionsInEmbeddedSwift(
715-
removeUnspecializedFunctionsInEmbeddedSwift) {}
708+
DeadFunctionAndGlobalElimination(SILModule *module,
709+
bool keepExternalWitnessTablesAlive) :
710+
Module(module),
711+
keepExternalWitnessTablesAlive(keepExternalWitnessTablesAlive) {}
716712

717-
/// The main entry point of the optimization.
718-
void eliminateFunctionsAndGlobals(SILModuleTransform *DFEPass) {
713+
/// The main entry point of the optimization.
714+
void eliminateFunctionsAndGlobals(SILModuleTransform *DFEPass) {
719715

720716
LLVM_DEBUG(llvm::dbgs() << "running dead function elimination\n");
721717
findAliveFunctions();
@@ -796,10 +792,8 @@ class DeadFunctionAndGlobalEliminationPass : public SILModuleTransform {
796792
// can eliminate such functions.
797793
getModule()->invalidateSILLoaderCaches();
798794

799-
DeadFunctionAndGlobalElimination deadFunctionElimination(
800-
getModule(),
801-
/*keepExternalWitnessTablesAlive*/ !isLateDFE,
802-
/*removeUnspecializedFunctionsInEmbeddedSwift*/ isLateDFE);
795+
DeadFunctionAndGlobalElimination deadFunctionElimination(getModule(),
796+
/*keepExternalWitnessTablesAlive*/ !isLateDFE);
803797
deadFunctionElimination.eliminateFunctionsAndGlobals(this);
804798
}
805799
};

0 commit comments

Comments
 (0)