Skip to content

Commit 8957f81

Browse files
authored
Revert "embedded: allow dead function elimination for de-serialized functions"
1 parent 66801fd commit 8957f81

File tree

6 files changed

+9
-41
lines changed

6 files changed

+9
-41
lines changed

lib/SIL/IR/Linker.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -448,6 +448,11 @@ void SILLinkerVisitor::process() {
448448
Fn->setSerialized(IsSerialized_t::IsNotSerialized);
449449
}
450450

451+
// TODO: This should probably be done as a separate SIL pass ("internalize")
452+
if (Fn->getModule().getASTContext().LangOpts.hasFeature(Feature::Embedded)) {
453+
Fn->setLinkage(stripExternalFromLinkage(Fn->getLinkage()));
454+
}
455+
451456
LLVM_DEBUG(llvm::dbgs() << "Process imports in function: "
452457
<< Fn->getName() << "\n");
453458

lib/SIL/IR/SILFunction.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -940,9 +940,6 @@ bool SILFunction::shouldBePreservedForDebugger() const {
940940
if (getEffectiveOptimizationMode() != OptimizationMode::NoOptimization)
941941
return false;
942942

943-
if (isAvailableExternally())
944-
return false;
945-
946943
if (hasSemanticsAttr("no.preserve.debugger"))
947944
return false;
948945

lib/SILOptimizer/Mandatory/IRGenPrepare.cpp

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -87,15 +87,6 @@ class IRGenPrepare : public SILFunctionTransform {
8787
void run() override {
8888
SILFunction *F = getFunction();
8989

90-
if (getOptions().EmbeddedSwift) {
91-
// In embedded swift all the code is generated in the top-level module.
92-
// Even de-serialized functions must be code-gen'd.
93-
SILLinkage linkage = F->getLinkage();
94-
if (isAvailableExternally(linkage)) {
95-
F->setLinkage(stripExternalFromLinkage(linkage));
96-
}
97-
}
98-
9990
bool shouldInvalidate = cleanFunction(*F);
10091

10192
if (shouldInvalidate)

lib/SILOptimizer/UtilityPasses/Link.cpp

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -86,13 +86,6 @@ class SILLinker : public SILModuleTransform {
8686

8787
if (M.linkFunction(Fn, LinkMode))
8888
invalidateAnalysis(Fn, SILAnalysis::InvalidationKind::Everything);
89-
90-
// Make sure that dead-function-elimination doesn't remove runtime functions.
91-
// TODO: lazily emit runtime functions in IRGen so that we don't have to
92-
// rely on dead-stripping in the linker to remove unused runtime
93-
// functions.
94-
if (Fn->isDefinition())
95-
Fn->setLinkage(SILLinkage::Public);
9689
}
9790
};
9891
} // end anonymous namespace

test/embedded/floatingpoint.swift

Lines changed: 0 additions & 22 deletions
This file was deleted.

test/embedded/stdlib-basic.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,8 +43,12 @@ public func checks(n: Int) {
4343

4444
// CHECK: define {{.*}}i32 @main(i32 %0, ptr %1)
4545
// CHECK: define {{.*}}i1 @"$s4main4boolSbyF"()
46+
// CHECK: define {{.*}}i1 @"$sSb22_builtinBooleanLiteralSbBi1__tcfC"(i1 %0)
4647
// CHECK: define {{.*}}{{i32|i64}} @"$s4main3intSiyF"()
48+
// CHECK: define {{.*}}{{i32|i64}} @"$sSi22_builtinIntegerLiteralSiBI_tcfC"(ptr %0, {{i32|i64}} %1)
4749
// CHECK: define {{.*}}ptr @"$s4main3ptr1p1nS2V_SitF"(ptr %0, {{i32|i64}} %1)
50+
// CHECK: define {{.*}}ptr @"$sSV8advanced2bySVSi_tF"({{i32|i64}} %0, ptr %1)
4851
// CHECK: define {{.*}}{ {{i32|i64}}, i8 } @"$s4main8optionalSiSgyF"()
4952
// CHECK: define {{.*}}{ {{i32|i64}}, {{i32|i64}}, i8 } @"$s4main12staticstrings12StaticStringVyF"()
53+
// CHECK: define {{.*}}{ {{i32|i64}}, {{i32|i64}}, i8 } @"$ss12StaticStringV08_builtinB7Literal17utf8CodeUnitCount7isASCIIABBp_BwBi1_tcfC"(ptr %0, {{i32|i64}} %1, i1 %2)
5054
// CHECK: define {{.*}}void @"$s4main6checks1nySi_tF"({{i32|i64}} %0)

0 commit comments

Comments
 (0)