mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
Add a mechanism to let cross-module-optimization add additional TBD symbols.
PublicCMOSymbols stores symbols which are made public by cross-module-optimizations. Those symbols are primarily stored in SILModule and eventually used by TBD generation and validation.
This commit is contained in:
@@ -42,7 +42,7 @@ static std::vector<StringRef> sortSymbols(llvm::StringSet<> &symbols) {
|
||||
}
|
||||
|
||||
bool swift::writeTBD(ModuleDecl *M, StringRef OutputFilename,
|
||||
const TBDGenOptions &Opts) {
|
||||
const TBDGenOptions &Opts, TBDSymbolSetPtr publicCMOSymbols) {
|
||||
std::error_code EC;
|
||||
llvm::raw_fd_ostream OS(OutputFilename, EC, llvm::sys::fs::OF_None);
|
||||
if (EC) {
|
||||
@@ -51,7 +51,7 @@ bool swift::writeTBD(ModuleDecl *M, StringRef OutputFilename,
|
||||
return true;
|
||||
}
|
||||
|
||||
writeTBDFile(M, OS, Opts);
|
||||
writeTBDFile(M, OS, Opts, publicCMOSymbols);
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -126,8 +126,10 @@ static bool validateSymbols(DiagnosticEngine &diags,
|
||||
bool swift::validateTBD(ModuleDecl *M,
|
||||
const llvm::Module &IRModule,
|
||||
const TBDGenOptions &opts,
|
||||
TBDSymbolSetPtr publicCMOSymbols,
|
||||
bool diagnoseExtraSymbolsInTBD) {
|
||||
auto symbols = getPublicSymbols(TBDGenDescriptor::forModule(M, opts));
|
||||
auto symbols = getPublicSymbols(TBDGenDescriptor::forModule(M, opts,
|
||||
publicCMOSymbols));
|
||||
return validateSymbols(M->getASTContext().Diags, symbols, IRModule,
|
||||
diagnoseExtraSymbolsInTBD);
|
||||
}
|
||||
@@ -135,8 +137,10 @@ bool swift::validateTBD(ModuleDecl *M,
|
||||
bool swift::validateTBD(FileUnit *file,
|
||||
const llvm::Module &IRModule,
|
||||
const TBDGenOptions &opts,
|
||||
TBDSymbolSetPtr publicCMOSymbols,
|
||||
bool diagnoseExtraSymbolsInTBD) {
|
||||
auto symbols = getPublicSymbols(TBDGenDescriptor::forFile(file, opts));
|
||||
auto symbols = getPublicSymbols(TBDGenDescriptor::forFile(file, opts,
|
||||
publicCMOSymbols));
|
||||
return validateSymbols(file->getParentModule()->getASTContext().Diags,
|
||||
symbols, IRModule, diagnoseExtraSymbolsInTBD);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user