diff options
author | Cyndy Ishida <cyndy_ishida@apple.com> | 2024-02-21 09:39:31 -0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-02-21 09:39:31 -0800 |
commit | 0a518db99e0cffcdbb4cae73e27da87edbb25170 (patch) | |
tree | c6761d9b6c6f67cfcecf0fbf96aa3cbaf2a025d2 /clang/lib/Frontend/CompilerInvocation.cpp | |
parent | cc13f3ba45015254075434f0f94a2ea6ff4bc1b4 (diff) | |
download | llvm-0a518db99e0cffcdbb4cae73e27da87edbb25170.zip llvm-0a518db99e0cffcdbb4cae73e27da87edbb25170.tar.gz llvm-0a518db99e0cffcdbb4cae73e27da87edbb25170.tar.bz2 |
[InstallAPI] Set InstallAPI as a standalone tool instead of CC1 action (#82293)
Installapi has important distinctions when compared to the clang driver,
so much that, it doesn't make much sense to try to integrate into it.
This patch partially reverts the CC1 action & driver support to replace
with its own driver as a clang tool.
For distribution, we could use `LLVM_TOOL_LLVM_DRIVER_BUILD` mechanism
for integrating the functionality into clang such that the toolchain
size is less impacted.
Diffstat (limited to 'clang/lib/Frontend/CompilerInvocation.cpp')
-rw-r--r-- | clang/lib/Frontend/CompilerInvocation.cpp | 41 |
1 files changed, 1 insertions, 40 deletions
diff --git a/clang/lib/Frontend/CompilerInvocation.cpp b/clang/lib/Frontend/CompilerInvocation.cpp index bcb3124..8d7b75b 100644 --- a/clang/lib/Frontend/CompilerInvocation.cpp +++ b/clang/lib/Frontend/CompilerInvocation.cpp @@ -149,8 +149,7 @@ CompilerInvocationBase::CompilerInvocationBase() FSOpts(std::make_shared<FileSystemOptions>()), FrontendOpts(std::make_shared<FrontendOptions>()), DependencyOutputOpts(std::make_shared<DependencyOutputOptions>()), - PreprocessorOutputOpts(std::make_shared<PreprocessorOutputOptions>()), - InstallAPIOpts(std::make_shared<InstallAPIOptions>()) {} + PreprocessorOutputOpts(std::make_shared<PreprocessorOutputOptions>()) {} CompilerInvocationBase & CompilerInvocationBase::deep_copy_assign(const CompilerInvocationBase &X) { @@ -168,7 +167,6 @@ CompilerInvocationBase::deep_copy_assign(const CompilerInvocationBase &X) { FrontendOpts = make_shared_copy(X.getFrontendOpts()); DependencyOutputOpts = make_shared_copy(X.getDependencyOutputOpts()); PreprocessorOutputOpts = make_shared_copy(X.getPreprocessorOutputOpts()); - InstallAPIOpts = make_shared_copy(X.getInstallAPIOpts()); } return *this; } @@ -189,7 +187,6 @@ CompilerInvocationBase::shallow_copy_assign(const CompilerInvocationBase &X) { FrontendOpts = X.FrontendOpts; DependencyOutputOpts = X.DependencyOutputOpts; PreprocessorOutputOpts = X.PreprocessorOutputOpts; - InstallAPIOpts = X.InstallAPIOpts; } return *this; } @@ -2161,34 +2158,6 @@ bool CompilerInvocation::ParseCodeGenArgs(CodeGenOptions &Opts, ArgList &Args, return Diags.getNumErrors() == NumErrorsBefore; } -static bool ParseInstallAPIArgs(InstallAPIOptions &Opts, ArgList &Args, - DiagnosticsEngine &Diags, - frontend::ActionKind Action) { - unsigned NumErrorsBefore = Diags.getNumErrors(); - - InstallAPIOptions &InstallAPIOpts = Opts; -#define INSTALLAPI_OPTION_WITH_MARSHALLING(...) \ - PARSE_OPTION_WITH_MARSHALLING(Args, Diags, __VA_ARGS__) -#include "clang/Driver/Options.inc" -#undef INSTALLAPI_OPTION_WITH_MARSHALLING - if (Arg *A = Args.getLastArg(options::OPT_current__version)) - Opts.CurrentVersion.parse64(A->getValue()); - - return Diags.getNumErrors() == NumErrorsBefore; -} - -static void GenerateInstallAPIArgs(const InstallAPIOptions &Opts, - ArgumentConsumer Consumer) { - const InstallAPIOptions &InstallAPIOpts = Opts; -#define INSTALLAPI_OPTION_WITH_MARSHALLING(...) \ - GENERATE_OPTION_WITH_MARSHALLING(Consumer, __VA_ARGS__) -#include "clang/Driver/Options.inc" -#undef INSTALLAPI_OPTION_WITH_MARSHALLING - if (!Opts.CurrentVersion.empty()) - GenerateArg(Consumer, OPT_current__version, - std::string(Opts.CurrentVersion)); -} - static void GenerateDependencyOutputArgs(const DependencyOutputOptions &Opts, ArgumentConsumer Consumer) { const DependencyOutputOptions &DependencyOutputOpts = Opts; @@ -2588,7 +2557,6 @@ static const auto &getFrontendActionTable() { {frontend::GeneratePCH, OPT_emit_pch}, {frontend::GenerateInterfaceStubs, OPT_emit_interface_stubs}, {frontend::InitOnly, OPT_init_only}, - {frontend::InstallAPI, OPT_installapi}, {frontend::ParseSyntaxOnly, OPT_fsyntax_only}, {frontend::ModuleFileInfo, OPT_module_file_info}, {frontend::VerifyPCH, OPT_verify_pch}, @@ -4312,7 +4280,6 @@ static bool isStrictlyPreprocessorAction(frontend::ActionKind Action) { case frontend::GenerateHeaderUnit: case frontend::GeneratePCH: case frontend::GenerateInterfaceStubs: - case frontend::InstallAPI: case frontend::ParseSyntaxOnly: case frontend::ModuleFileInfo: case frontend::VerifyPCH: @@ -4687,11 +4654,6 @@ bool CompilerInvocation::CreateFromArgsImpl( Res.getDependencyOutputOpts().Targets.empty()) Diags.Report(diag::err_fe_dependency_file_requires_MT); - if (Args.hasArg(OPT_installapi)) { - ParseInstallAPIArgs(Res.getInstallAPIOpts(), Args, Diags, - Res.getFrontendOpts().ProgramAction); - } - // If sanitizer is enabled, disable OPT_ffine_grained_bitfield_accesses. if (Res.getCodeGenOpts().FineGrainedBitfieldAccesses && !Res.getLangOpts().Sanitize.empty()) { @@ -4882,7 +4844,6 @@ void CompilerInvocationBase::generateCC1CommandLine( GeneratePreprocessorOutputArgs(getPreprocessorOutputOpts(), Consumer, getFrontendOpts().ProgramAction); GenerateDependencyOutputArgs(getDependencyOutputOpts(), Consumer); - GenerateInstallAPIArgs(getInstallAPIOpts(), Consumer); } std::vector<std::string> CompilerInvocationBase::getCC1CommandLine() const { |