Merge pull request #38939 from xymus/emit-module-separately-interface-hash

[Frontend] Generate an interface hash for emit-module-separately jobs
This commit is contained in:
Alexis Laferrière
2021-08-19 09:57:07 -07:00
committed by GitHub
2 changed files with 10 additions and 4 deletions

View File

@@ -1153,10 +1153,10 @@ CompilerInstance::getSourceFileParsingOptions(bool forPrimary) const {
opts |= SourceFile::ParsingFlags::DisableDelayedBodies;
}
auto typeOpts = getASTContext().TypeCheckerOpts;
if (forPrimary || isWholeModuleCompilation()) {
// Disable delayed body parsing for primaries and in WMO, unless
// forcefully skipping function bodies
auto typeOpts = getASTContext().TypeCheckerOpts;
if (typeOpts.SkipFunctionBodies == FunctionBodySkipping::None)
opts |= SourceFile::ParsingFlags::DisableDelayedBodies;
} else {
@@ -1165,9 +1165,10 @@ CompilerInstance::getSourceFileParsingOptions(bool forPrimary) const {
opts |= SourceFile::ParsingFlags::SuppressWarnings;
}
// Enable interface hash computation for primaries, but not in WMO, as it's
// only currently needed for incremental mode.
if (forPrimary) {
// Enable interface hash computation for primaries or emit-module-separately,
// but not in WMO, as it's only currently needed for incremental mode.
if (forPrimary ||
typeOpts.SkipFunctionBodies == FunctionBodySkipping::NonInlinableWithoutTypes) {
opts |= SourceFile::ParsingFlags::EnableInterfaceHash;
}
return opts;

View File

@@ -4,6 +4,11 @@
// RUN: %target-swift-frontend -dump-interface-hash -primary-file %t/b.swift 2> %t/b.hash
// RUN: not cmp %t/a.hash %t/b.hash
/// We should generate an interface hash for emit-module-separately jobs even
/// with no primaries.
// RUN: %target-swift-frontend -dump-interface-hash %t/b.swift -experimental-skip-non-inlinable-function-bodies-without-types 2> %t/b-emit-module.hash
// RUN: cmp %t/b.hash %t/b-emit-module.hash
// BEGIN a.swift
func f() {}