Skip to content

Commit 3ec5a79

Browse files
zoecarverkubamracek
authored andcommitted
[embedded] Require whole module optimization in embedded mode.
1 parent badd33c commit 3ec5a79

File tree

6 files changed

+18
-4
lines changed

6 files changed

+18
-4
lines changed

include/swift/AST/DiagnosticsFrontend.def

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -556,6 +556,8 @@ ERROR(layout_string_instantiation_without_layout_strings,none,
556556

557557
ERROR(evolution_with_embedded,none,
558558
"Library evolution cannot be enabled with embedded Swift.", ())
559+
ERROR(wmo_with_embedded,none,
560+
"Whole module optimization (wmo) must be enabled with embedded Swift.", ())
559561

560562
#define UNDEFINE_DIAGNOSTIC_MACROS
561563
#include "DefineDiagnosticMacros.h"

lib/Frontend/CompilerInvocation.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1340,6 +1340,15 @@ static bool ParseLangArgs(LangOptions &Opts, ArgList &Args,
13401340
}
13411341
}
13421342

1343+
// Is this the correct way to query for WMO?
1344+
bool isWMO =
1345+
Args.hasArg(OPT_wmo) ||
1346+
Args.hasArg(OPT_whole_module_optimization);
1347+
if (!isWMO && Opts.hasFeature(Feature::Embedded)) {
1348+
Diags.diagnose(SourceLoc(), diag::wmo_with_embedded);
1349+
HadError = true;
1350+
}
1351+
13431352
return HadError || UnsupportedOS || UnsupportedArch;
13441353
}
13451354

test/embedded/basic-errors-no-stdlib.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: not %target-swift-frontend -emit-ir %s -parse-stdlib -enable-experimental-feature Embedded 2>&1 | %FileCheck %s
1+
// RUN: not %target-swift-frontend -emit-ir %s -parse-stdlib -enable-experimental-feature Embedded -wmo 2>&1 | %FileCheck %s
22

33
public protocol Player {}
44
struct Concrete: Player {}

test/embedded/basic-irgen-no-stdlib.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: %target-swift-emit-ir %s -parse-stdlib -enable-experimental-feature Embedded -target arm64e-apple-none | %FileCheck %s
1+
// RUN: %target-swift-emit-ir %s -parse-stdlib -enable-experimental-feature Embedded -target arm64e-apple-none -wmo | %FileCheck %s
22

33
// TODO: investigate why windows is generating more metadata.
44
// XFAIL: OS=windows-msvc
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// RUN: not %target-swift-frontend -emit-ir %s -enable-library-evolution -enable-experimental-feature Embedded 2>&1 | %FileCheck %s
2-
// RUN: not %target-swift-frontend -emit-ir %s -enable-resilience -enable-experimental-feature Embedded 2>&1 | %FileCheck %s
1+
// RUN: not %target-swift-frontend -emit-ir %s -enable-library-evolution -enable-experimental-feature Embedded -wmo 2>&1 | %FileCheck %s
2+
// RUN: not %target-swift-frontend -emit-ir %s -enable-resilience -enable-experimental-feature Embedded -wmo 2>&1 | %FileCheck %s
33

44
// CHECK: error: Library evolution cannot be enabled with embedded Swift.
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
// RUN: not %target-swift-frontend -emit-ir %s -enable-experimental-feature Embedded 2>&1 | %FileCheck %s
2+
3+
// CHECK: error: Whole module optimization (wmo) must be enabled with embedded Swift.

0 commit comments

Comments
 (0)