Revert "Add a mechanism to let cross-module-optimization add additional TBD symbols."

This reverts commit c55f040308.

It's not needed anymore because CMO does not introduce public symbols when a TBD file is emitted.
This commit is contained in:
Erik Eckstein
2022-04-21 10:38:26 +02:00
parent 0cdbd3ea7a
commit 45acb912a9
14 changed files with 48 additions and 121 deletions

View File

@@ -702,10 +702,15 @@ static bool writeTBDIfNeeded(CompilerInstance &Instance) {
return false;
}
if (Invocation.getSILOptions().CrossModuleOptimization) {
Instance.getDiags().diagnose(SourceLoc(),
diag::tbd_not_supported_with_cmo);
return false;
}
const std::string &TBDPath = Invocation.getTBDPathForWholeModule();
return writeTBD(Instance.getMainModule(), TBDPath, tbdOpts,
Instance.getPublicCMOSymbols());
return writeTBD(Instance.getMainModule(), TBDPath, tbdOpts);
}
static bool performCompileStepsPostSILGen(CompilerInstance &Instance,
@@ -1392,19 +1397,19 @@ static bool processCommandLineAndRunImmediately(CompilerInstance &Instance,
static bool validateTBDIfNeeded(const CompilerInvocation &Invocation,
ModuleOrSourceFile MSF,
const llvm::Module &IRModule,
TBDSymbolSetPtr publicCMOSymbols) {
auto mode = Invocation.getFrontendOptions().ValidateTBDAgainstIR;
if (mode == FrontendOptions::TBDValidationMode::All &&
Invocation.getSILOptions().CrossModuleOptimization)
mode = FrontendOptions::TBDValidationMode::MissingFromTBD;
const llvm::Module &IRModule) {
const auto mode = Invocation.getFrontendOptions().ValidateTBDAgainstIR;
const bool canPerformTBDValidation = [&]() {
// If the user has requested we skip validation, honor it.
if (mode == FrontendOptions::TBDValidationMode::None) {
return false;
}
// Cross-module optimization does not support TBD.
if (Invocation.getSILOptions().CrossModuleOptimization) {
return false;
}
// If we can't validate the given input file, bail early. This covers cases
// like passing raw SIL as a primary file.
const auto &IO = Invocation.getFrontendOptions().InputsAndOutputs;
@@ -1465,10 +1470,9 @@ static bool validateTBDIfNeeded(const CompilerInvocation &Invocation,
// noise from e.g. statically-linked libraries.
Opts.embedSymbolsFromModules.clear();
if (auto *SF = MSF.dyn_cast<SourceFile *>()) {
return validateTBD(SF, IRModule, Opts, publicCMOSymbols,
diagnoseExtraSymbolsInTBD);
return validateTBD(SF, IRModule, Opts, diagnoseExtraSymbolsInTBD);
} else {
return validateTBD(MSF.get<ModuleDecl *>(), IRModule, Opts, publicCMOSymbols,
return validateTBD(MSF.get<ModuleDecl *>(), IRModule, Opts,
diagnoseExtraSymbolsInTBD);
}
}
@@ -1681,8 +1685,6 @@ static bool performCompileStepsPostSILGen(CompilerInstance &Instance,
return processCommandLineAndRunImmediately(
Instance, std::move(SM), MSF, observer, ReturnValue);
TBDSymbolSetPtr publicCMOSymbols = SM->getPublicCMOSymbols();
StringRef OutputFilename = PSPs.OutputFilename;
std::vector<std::string> ParallelOutputFilenames =
opts.InputsAndOutputs.copyOutputFilenames();
@@ -1701,8 +1703,7 @@ static bool performCompileStepsPostSILGen(CompilerInstance &Instance,
if (!IRModule)
return Instance.getDiags().hadAnyError();
if (validateTBDIfNeeded(Invocation, MSF, *IRModule.getModule(),
publicCMOSymbols))
if (validateTBDIfNeeded(Invocation, MSF, *IRModule.getModule()))
return true;
return generateCode(Instance, OutputFilename, IRModule.getModule(),