|
clang 23.0.0git
|
#include "Clang.h"#include "Arch/AArch64.h"#include "Arch/ARM.h"#include "Arch/LoongArch.h"#include "Arch/Mips.h"#include "Arch/PPC.h"#include "Arch/RISCV.h"#include "Arch/Sparc.h"#include "Arch/SystemZ.h"#include "Hexagon.h"#include "PS4CPU.h"#include "ToolChains/Cuda.h"#include "clang/Basic/CLWarnings.h"#include "clang/Basic/CodeGenOptions.h"#include "clang/Basic/HeaderInclude.h"#include "clang/Basic/LangOptions.h"#include "clang/Basic/MakeSupport.h"#include "clang/Basic/ObjCRuntime.h"#include "clang/Basic/Version.h"#include "clang/Config/config.h"#include "clang/Driver/Action.h"#include "clang/Driver/CommonArgs.h"#include "clang/Driver/Distro.h"#include "clang/Driver/InputInfo.h"#include "clang/Driver/SanitizerArgs.h"#include "clang/Driver/Types.h"#include "clang/Driver/XRayArgs.h"#include "clang/Options/OptionUtils.h"#include "clang/Options/Options.h"#include "llvm/ADT/ScopeExit.h"#include "llvm/ADT/SmallSet.h"#include "llvm/ADT/StringExtras.h"#include "llvm/BinaryFormat/Magic.h"#include "llvm/Config/llvm-config.h"#include "llvm/Frontend/Debug/Options.h"#include "llvm/Object/ObjectFile.h"#include "llvm/Option/ArgList.h"#include "llvm/ProfileData/InstrProfReader.h"#include "llvm/Support/CodeGen.h"#include "llvm/Support/Compiler.h"#include "llvm/Support/Compression.h"#include "llvm/Support/Error.h"#include "llvm/Support/FileSystem.h"#include "llvm/Support/MathExtras.h"#include "llvm/Support/Path.h"#include "llvm/Support/Process.h"#include "llvm/Support/YAMLParser.h"#include "llvm/TargetParser/AArch64TargetParser.h"#include "llvm/TargetParser/ARMTargetParserCommon.h"#include "llvm/TargetParser/Host.h"#include "llvm/TargetParser/LoongArchTargetParser.h"#include "llvm/TargetParser/PPCTargetParser.h"#include "llvm/TargetParser/RISCVISAInfo.h"#include "llvm/TargetParser/RISCVTargetParser.h"#include <cctype>Go to the source code of this file.
Functions | |
| static void | CheckPreprocessingOptions (const Driver &D, const ArgList &Args) |
| static void | CheckCodeGenerationOptions (const Driver &D, const ArgList &Args) |
| static void | forAllAssociatedToolChains (Compilation &C, const JobAction &JA, const ToolChain &RegularToolChain, llvm::function_ref< void(const ToolChain &)> Work) |
| Apply Work on the current tool chain RegularToolChain and any other offloading tool chain that is associated with the current action JA. | |
| static bool | shouldUseExceptionTablesForObjCExceptions (const ObjCRuntime &runtime, const llvm::Triple &Triple) |
| static bool | addExceptionArgs (const ArgList &Args, types::ID InputType, const ToolChain &TC, bool KernelOrKext, const ObjCRuntime &objcRuntime, ArgStringList &CmdArgs) |
| Adds exception related arguments to the driver command arguments. | |
| static bool | ShouldEnableAutolink (const ArgList &Args, const ToolChain &TC, const JobAction &JA) |
| static const char * | addDebugCompDirArg (const ArgList &Args, ArgStringList &CmdArgs, const llvm::vfs::FileSystem &VFS) |
| Add a CC1 option to specify the debug compilation directory. | |
| static void | addDebugObjectName (const ArgList &Args, ArgStringList &CmdArgs, const char *DebugCompilationDir, const char *OutputFileName) |
| static void | addDebugPrefixMapArg (const Driver &D, const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) |
| Add a CC1 and CC1AS option to specify the debug file path prefix map. | |
| static void | addMacroPrefixMapArg (const Driver &D, const ArgList &Args, ArgStringList &CmdArgs) |
| Add a CC1 and CC1AS option to specify the macro file path prefix map. | |
| static void | addCoveragePrefixMapArg (const Driver &D, const ArgList &Args, ArgStringList &CmdArgs) |
| Add a CC1 and CC1AS option to specify the coverage file path prefix map. | |
| static void | addDashXForInput (const ArgList &Args, const InputInfo &Input, ArgStringList &CmdArgs) |
Add -x lang to CmdArgs for Input. | |
| static void | addPGOAndCoverageFlags (const ToolChain &TC, Compilation &C, const JobAction &JA, const InputInfo &Output, const ArgList &Args, SanitizerArgs &SanArgs, ArgStringList &CmdArgs) |
| static void | RenderDebugEnablingArgs (const ArgList &Args, ArgStringList &CmdArgs, llvm::codegenoptions::DebugInfoKind DebugInfoKind, unsigned DwarfVersion, llvm::DebuggerKind DebuggerTuning) |
| static void | RenderDebugInfoCompressionArgs (const ArgList &Args, ArgStringList &CmdArgs, const Driver &D, const ToolChain &TC) |
| static void | handleAMDGPUCodeObjectVersionOptions (const Driver &D, const ArgList &Args, ArgStringList &CmdArgs, bool IsCC1As=false) |
| static bool | maybeHasClangPchSignature (const Driver &D, StringRef Path) |
| static bool | gchProbe (const Driver &D, StringRef Path) |
| static bool | isSignedCharDefault (const llvm::Triple &Triple) |
| static bool | hasMultipleInvocations (const llvm::Triple &Triple, const ArgList &Args) |
| static bool | checkRemarksOptions (const Driver &D, const ArgList &Args, const llvm::Triple &Triple) |
| static void | renderRemarksOptions (const ArgList &Args, ArgStringList &CmdArgs, const llvm::Triple &Triple, const InputInfo &Input, const InputInfo &Output, const JobAction &JA) |
| void | AddAAPCSVolatileBitfieldArgs (const ArgList &Args, ArgStringList &CmdArgs) |
| static void | CollectARMPACBTIOptions (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, bool isAArch64) |
| static bool | CheckARMImplicitITArg (StringRef Value) |
| static void | AddARMImplicitITArgs (const ArgList &Args, ArgStringList &CmdArgs, StringRef Value) |
| static void | CollectArgsForIntegratedAssembler (Compilation &C, const ArgList &Args, ArgStringList &CmdArgs, const Driver &D) |
| static void | RenderFloatingPointOptions (const ToolChain &TC, const Driver &D, bool OFastEnabled, const ArgList &Args, ArgStringList &CmdArgs, const JobAction &JA) |
| static void | RenderAnalyzerOptions (const ArgList &Args, ArgStringList &CmdArgs, const llvm::Triple &Triple, const InputInfo &Input) |
| static bool | isValidSymbolName (StringRef S) |
| static void | RenderSSPOptions (const Driver &D, const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, bool KernelOrKext) |
| static void | RenderSCPOptions (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) |
| static void | RenderTrivialAutoVarInitOptions (const Driver &D, const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) |
| static void | RenderOpenCLOptions (const ArgList &Args, ArgStringList &CmdArgs, types::ID InputType) |
| static void | RenderHLSLOptions (const ArgList &Args, ArgStringList &CmdArgs, types::ID InputType) |
| static void | RenderOpenACCOptions (const Driver &D, const ArgList &Args, ArgStringList &CmdArgs, types::ID InputType) |
| static void | RenderBuiltinOptions (const ToolChain &TC, const llvm::Triple &T, const ArgList &Args, ArgStringList &CmdArgs) |
| static bool | RenderModulesOptions (Compilation &C, const Driver &D, const ArgList &Args, const InputInfo &Input, const InputInfo &Output, bool HaveStd20, ArgStringList &CmdArgs) |
| static void | RenderCharacterOptions (const ArgList &Args, const llvm::Triple &T, ArgStringList &CmdArgs) |
| static void | RenderObjCOptions (const ToolChain &TC, const Driver &D, const llvm::Triple &T, const ArgList &Args, ObjCRuntime &Runtime, bool InferCovariantReturns, const InputInfo &Input, ArgStringList &CmdArgs) |
| static void | RenderDiagnosticsOptions (const Driver &D, const ArgList &Args, ArgStringList &CmdArgs) |
| static void | renderDwarfFormat (const Driver &D, const llvm::Triple &T, const ArgList &Args, ArgStringList &CmdArgs, unsigned DwarfVersion) |
| static bool | getDebugSimpleTemplateNames (const ToolChain &TC, const Driver &D, const ArgList &Args) |
| static void | renderDebugOptions (const ToolChain &TC, const Driver &D, const llvm::Triple &T, const ArgList &Args, types::ID InputType, ArgStringList &CmdArgs, const InputInfo &Output, llvm::codegenoptions::DebugInfoKind &DebugInfoKind, DwarfFissionKind &DwarfFission) |
| static void | ProcessVSRuntimeLibrary (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs) |
| static bool | maybeConsumeDash (const std::string &EH, size_t &I) |
| static EHFlags | parseClangCLEHFlags (const Driver &D, const ArgList &Args, bool isWindowsMSVC) |
| /EH controls whether to run destructor cleanups when exceptions are thrown. | |
| void AddAAPCSVolatileBitfieldArgs | ( | const ArgList & | Args, |
| ArgStringList & | CmdArgs ) |
|
static |
Definition at line 2391 of file Clang.cpp.
Referenced by CollectArgsForIntegratedAssembler().
|
static |
Add a CC1 and CC1AS option to specify the coverage file path prefix map.
Definition at line 320 of file Clang.cpp.
References clang::driver::Driver::Diag().
|
static |
Add -x lang to CmdArgs for Input.
Definition at line 335 of file Clang.cpp.
References clang::driver::InputInfo::getType(), and clang::driver::types::getTypeName().
Referenced by clang::driver::tools::Clang::ConstructJob(), and clang::driver::tools::Flang::ConstructJob().
|
static |
Add a CC1 option to specify the debug compilation directory.
Definition at line 230 of file Clang.cpp.
Referenced by clang::driver::tools::ClangAs::ConstructJob(), and renderDebugOptions().
|
static |
Definition at line 250 of file Clang.cpp.
Referenced by clang::driver::tools::ClangAs::ConstructJob(), and renderDebugOptions().
|
static |
Add a CC1 and CC1AS option to specify the debug file path prefix map.
Definition at line 284 of file Clang.cpp.
References clang::driver::Driver::Diag(), and clang::driver::ToolChain::GetGlobalDebugPathRemapping().
Referenced by clang::driver::tools::ClangAs::ConstructJob(), and renderDebugOptions().
|
static |
Adds exception related arguments to the driver command arguments.
There's a main flag, -fexceptions and also language specific flags to enable/disable C++ and Objective-C exceptions. This makes it possible to for example disable C++ exceptions but enable Objective-C exceptions.
Definition at line 137 of file Clang.cpp.
References clang::driver::ToolChain::getTriple(), clang::driver::types::isCXX(), clang::driver::types::isObjC(), and shouldUseExceptionTablesForObjCExceptions().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Add a CC1 and CC1AS option to specify the macro file path prefix map.
Definition at line 305 of file Clang.cpp.
References clang::driver::Driver::Diag().
|
static |
Definition at line 365 of file Clang.cpp.
References clang::C, clang::driver::Driver::Diag(), clang::DiagnosticsEngine::Error, clang::driver::InputInfo::getBaseInput(), clang::driver::ToolChain::getCompilerRTBasename(), clang::DiagnosticsEngine::getCustomDiagID(), clang::driver::Driver::getDiags(), clang::driver::ToolChain::getDriver(), clang::driver::tools::getLastCSProfileGenerateArg(), clang::driver::tools::getLastProfileSampleUseArg(), clang::driver::tools::getLastProfileUseArg(), clang::driver::ToolChain::getTriple(), clang::driver::Driver::getVFS(), and clang::driver::ToolChain::needsGCovInstrumentation().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 2386 of file Clang.cpp.
Referenced by CollectArgsForIntegratedAssembler().
|
static |
Definition at line 85 of file Clang.cpp.
References clang::driver::Driver::Diag().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 70 of file Clang.cpp.
References clang::driver::Driver::CCCIsCPP(), clang::driver::Driver::Diag(), and clang::driver::Driver::IsCLMode().
|
static |
Definition at line 1243 of file Clang.cpp.
References clang::driver::Driver::Diag(), and hasMultipleInvocations().
Referenced by clang::driver::tools::Clang::ConstructJob(), and clang::driver::tools::darwin::Linker::ConstructJob().
|
static |
Definition at line 2397 of file Clang.cpp.
References AddARMImplicitITArgs(), clang::C, CheckARMImplicitITArg(), clang::Default, clang::driver::Driver::Diag(), clang::driver::tools::DwarfVersionNum(), clang::Equal, Feature, clang::driver::Driver::getTargetTriple(), clang::driver::Driver::PrintVersion(), RenderDebugEnablingArgs(), and clang::Set.
Referenced by clang::driver::tools::Clang::ConstructJob(), and clang::driver::tools::ClangAs::ConstructJob().
|
static |
Definition at line 1378 of file Clang.cpp.
References clang::driver::Driver::Diag(), clang::driver::ToolChain::getDriver(), clang::driver::ToolChain::getEffectiveTriple(), and clang::Scope::Scope().
|
static |
Apply Work on the current tool chain RegularToolChain and any other offloading tool chain that is associated with the current action JA.
Definition at line 97 of file Clang.cpp.
References clang::C, clang::driver::Action::isDeviceOffloading(), clang::driver::Action::isHostOffloading(), clang::driver::Action::OFK_Cuda, clang::driver::Action::OFK_HIP, clang::driver::Action::OFK_Host, clang::driver::Action::OFK_OpenMP, and clang::driver::Action::OFK_SYCL.
Referenced by clang::driver::tools::LinkerWrapper::ConstructJob().
Definition at line 802 of file Clang.cpp.
References clang::driver::Driver::Diag(), clang::driver::Driver::getVFS(), and maybeHasClangPchSignature().
|
static |
Definition at line 4371 of file Clang.cpp.
References clang::driver::tools::checkDebugInfoOption(), and clang::driver::ToolChain::getDefaultDebugSimpleTemplateNames().
Referenced by renderDebugOptions().
|
static |
Definition at line 762 of file Clang.cpp.
References clang::driver::tools::getAMDGPUCodeObjectVersion(), and clang::driver::tools::haveAMDGPUCodeObjectVersionArgument().
Referenced by clang::driver::tools::Clang::ConstructJob(), and clang::driver::tools::ClangAs::ConstructJob().
|
static |
Definition at line 1232 of file Clang.cpp.
Referenced by checkRemarksOptions(), and checkRemarksOptions().
|
static |
Definition at line 1194 of file Clang.cpp.
Referenced by RenderCharacterOptions().
|
static |
Definition at line 8348 of file Clang.cpp.
Referenced by parseClangCLEHFlags().
Definition at line 785 of file Clang.cpp.
References clang::driver::Driver::getVFS().
Referenced by gchProbe().
/EH controls whether to run destructor cleanups when exceptions are thrown.
There are three modifiers:
Definition at line 8369 of file Clang.cpp.
References clang::driver::Driver::Diag(), and maybeConsumeDash().
|
static |
Definition at line 4791 of file Clang.cpp.
References clang::driver::ToolChain::getTriple().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 3364 of file Clang.cpp.
References clang::driver::InputInfo::getType(), and clang::driver::types::isCXX().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 3795 of file Clang.cpp.
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 4107 of file Clang.cpp.
References isSignedCharDefault().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 704 of file Clang.cpp.
References clang::driver::tools::addDebugInfoKind().
Referenced by CollectArgsForIntegratedAssembler(), clang::driver::tools::ClangAs::ConstructJob(), and renderDebugOptions().
|
static |
Definition at line 730 of file Clang.cpp.
References clang::driver::tools::checkDebugInfoOption(), and clang::driver::Driver::Diag().
Referenced by clang::driver::tools::ClangAs::ConstructJob(), and renderDebugOptions().
|
static |
Definition at line 4388 of file Clang.cpp.
References addDebugCompDirArg(), addDebugObjectName(), addDebugPrefixMapArg(), clang::driver::ToolChain::adjustDebugInfoKind(), clang::driver::tools::checkDebugInfoOption(), clang::driver::tools::debugLevelToInfoKind(), clang::driver::Driver::Diag(), clang::driver::tools::getDebugFissionKind(), getDebugSimpleTemplateNames(), clang::driver::ToolChain::getDefaultDebugFormat(), clang::driver::ToolChain::getDefaultDebuggerTuning(), clang::driver::ToolChain::GetDefaultStandaloneDebug(), clang::driver::tools::getDwarfNArg(), clang::driver::tools::getDwarfVersion(), clang::driver::InputInfo::getFilename(), clang::driver::tools::getLastProfileSampleUseArg(), clang::driver::ToolChain::getMaxDwarfVersion(), clang::driver::ToolChain::getTriple(), clang::driver::ToolChain::getTripleString(), clang::driver::Driver::getVFS(), clang::driver::Driver::IsCLMode(), clang::driver::InputInfo::isFilename(), clang::driver::tools::None, RenderDebugEnablingArgs(), RenderDebugInfoCompressionArgs(), renderDwarfFormat(), clang::driver::ToolChain::useIntegratedAs(), and clang::driver::willEmitRemarks().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 4249 of file Clang.cpp.
References clang::driver::Driver::Diag(), and clang::driver::tools::handleColorDiagnosticsArgs().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 4348 of file Clang.cpp.
References clang::driver::Driver::Diag().
Referenced by clang::driver::tools::ClangAs::ConstructJob(), and renderDebugOptions().
|
static |
Definition at line 2768 of file Clang.cpp.
References Arch, clang::driver::tools::complexRangeKindToStr(), clang::LangOptionsBase::CX_Basic, clang::LangOptionsBase::CX_Full, clang::LangOptionsBase::CX_Improved, clang::LangOptionsBase::CX_None, clang::LangOptionsBase::CX_Promoted, clang::driver::Driver::Diag(), clang::driver::ToolChain::getArch(), clang::driver::ToolChain::getDefaultDenormalModeForType(), clang::driver::Driver::getDiags(), clang::driver::Action::isDeviceOffloading(), clang::driver::ToolChain::IsMathErrnoDefault(), clang::driver::Action::isOffloading(), clang::driver::Action::OFK_Cuda, clang::driver::Action::OFK_HIP, clang::parseMRecipOption(), clang::driver::tools::renderComplexRangeOption(), and clang::driver::tools::setComplexRange().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 3756 of file Clang.cpp.
References clang::driver::types::isHLSL().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 3853 of file Clang.cpp.
References clang::C, clang::driver::Driver::Diag(), clang::driver::InputInfo::getBaseInput(), clang::driver::tools::getCXX20NamedModuleOutputPath(), clang::driver::Driver::getDefaultModuleCachePath(), clang::driver::InputInfo::getFilename(), clang::driver::InputInfo::getType(), clang::driver::types::isCXX(), and clang::driver::Driver::ResourceDir.
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 4143 of file Clang.cpp.
References clang::ObjCRuntime::allowsWeak(), Arch, clang::driver::ToolChain::CheckObjCARC(), clang::driver::ToolChain::CST_Libcxx, clang::driver::Driver::Diag(), clang::ObjCRuntime::FragileMacOSX, clang::driver::ToolChain::getArch(), clang::ObjCRuntime::getAsString(), clang::driver::ToolChain::GetCXXStdlibType(), clang::ObjCRuntime::getKind(), clang::driver::InputInfo::getType(), clang::driver::types::isCXX(), clang::ObjCRuntime::isLegacyDispatchDefaultForArch(), clang::ObjCRuntime::isNeXTFamily(), clang::ObjCRuntime::isNonFragile(), clang::driver::types::isObjC(), clang::driver::tools::isObjCAutoRefCount(), and clang::driver::ToolChain::UseObjCMixedDispatch().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 3787 of file Clang.cpp.
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 3712 of file Clang.cpp.
References clang::driver::types::isOpenCL(), and clang::driver::types::isSrcFile().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 1259 of file Clang.cpp.
References clang::driver::InputInfo::getBaseInput(), clang::driver::InputInfo::getFilename(), clang::driver::Action::getOffloadingArch(), clang::driver::Action::getOffloadingDeviceKind(), clang::driver::Action::GetOffloadingFileNamePrefix(), clang::driver::Action::isDeviceOffloading(), clang::driver::InputInfo::isFilename(), clang::driver::Action::OFK_Host, and clang::driver::Action::OFK_None.
Referenced by clang::driver::tools::Clang::ConstructJob(), clang::driver::tools::darwin::Linker::ConstructJob(), and clang::driver::tools::Flang::ConstructJob().
|
static |
Definition at line 3624 of file Clang.cpp.
References clang::driver::ToolChain::getEffectiveTriple().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 3443 of file Clang.cpp.
References clang::driver::Driver::Diag(), clang::driver::ToolChain::GetDefaultStackProtectorLevel(), clang::driver::ToolChain::getEffectiveTriple(), clang::driver::tools::arm::isHardTPSupported(), isValidSymbolName(), clang::LangOptionsBase::SSPOff, clang::LangOptionsBase::SSPOn, clang::LangOptionsBase::SSPReq, and clang::LangOptionsBase::SSPStrong.
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 3641 of file Clang.cpp.
References clang::driver::Driver::Diag(), clang::driver::ToolChain::GetDefaultTrivialAutoVarInit(), clang::LangOptionsBase::Pattern, clang::LangOptionsBase::Uninitialized, and clang::LangOptionsBase::Zero.
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 213 of file Clang.cpp.
References clang::Default, clang::driver::ToolChain::getTriple(), clang::driver::Action::isDeviceOffloading(), clang::driver::Action::OFK_Cuda, clang::driver::Action::OFK_HIP, and clang::driver::ToolChain::useIntegratedAs().
Referenced by clang::driver::tools::Clang::ConstructJob().
|
static |
Definition at line 117 of file Clang.cpp.
References clang::ObjCRuntime::isNonFragile().
Referenced by addExceptionArgs().