mirror of
https://github.com/apple/swift.git
synced 2025-12-14 20:36:38 +01:00
[embedded] Add basics of module serialization, importing and validation in embedded Swift.
- Add a flag to the serialized module (IsEmbeddedSwiftModule) - Check on import that the mode matches (don't allow importing non-embedded module in embedded mode and vice versa) - Drop TBD support, it's not expected to work in embedded Swift for now - Drop auto-linking backdeploy libraries, it's not expected to backdeploy embedded Swift for now - Drop prespecializations, not expected to work in embedded Swift for now - Use CMO to serialize everything when emitting an embedded Swift module - Change SILLinker to deserialize/import everything when importing an embedded Swift module - Add an IR test for importing modules - Add a deserialization validation test
This commit is contained in:
@@ -442,7 +442,9 @@ bool CrossModuleOptimization::shouldSerialize(SILFunction *function) {
|
||||
if (function->hasSemanticsAttr("optimize.no.crossmodule"))
|
||||
return false;
|
||||
|
||||
if (SerializeEverything)
|
||||
// In embedded Swift we serialize everything.
|
||||
if (SerializeEverything ||
|
||||
function->getASTContext().LangOpts.hasFeature(Feature::Embedded))
|
||||
return true;
|
||||
|
||||
if (!conservative) {
|
||||
@@ -652,15 +654,18 @@ class CrossModuleOptimizationPass: public SILModuleTransform {
|
||||
return;
|
||||
|
||||
bool conservative = false;
|
||||
switch (M.getOptions().CMOMode) {
|
||||
case swift::CrossModuleOptimizationMode::Off:
|
||||
return;
|
||||
case swift::CrossModuleOptimizationMode::Default:
|
||||
conservative = true;
|
||||
break;
|
||||
case swift::CrossModuleOptimizationMode::Aggressive:
|
||||
conservative = false;
|
||||
break;
|
||||
// In embedded Swift we serialize everything.
|
||||
if (!M.getASTContext().LangOpts.hasFeature(Feature::Embedded)) {
|
||||
switch (M.getOptions().CMOMode) {
|
||||
case swift::CrossModuleOptimizationMode::Off:
|
||||
return;
|
||||
case swift::CrossModuleOptimizationMode::Default:
|
||||
conservative = true;
|
||||
break;
|
||||
case swift::CrossModuleOptimizationMode::Aggressive:
|
||||
conservative = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
CrossModuleOptimization CMO(M, conservative);
|
||||
|
||||
Reference in New Issue
Block a user