clang 20.0.0git
|
#include "CommonArgs.h"
#include "Arch/AArch64.h"
#include "Arch/ARM.h"
#include "Arch/CSKY.h"
#include "Arch/LoongArch.h"
#include "Arch/M68k.h"
#include "Arch/Mips.h"
#include "Arch/PPC.h"
#include "Arch/RISCV.h"
#include "Arch/Sparc.h"
#include "Arch/SystemZ.h"
#include "Arch/VE.h"
#include "Arch/X86.h"
#include "HIPAMD.h"
#include "Hexagon.h"
#include "MSP430.h"
#include "Solaris.h"
#include "clang/Basic/CharInfo.h"
#include "clang/Basic/CodeGenOptions.h"
#include "clang/Basic/LangOptions.h"
#include "clang/Basic/ObjCRuntime.h"
#include "clang/Basic/Version.h"
#include "clang/Config/config.h"
#include "clang/Driver/Action.h"
#include "clang/Driver/Compilation.h"
#include "clang/Driver/Driver.h"
#include "clang/Driver/DriverDiagnostic.h"
#include "clang/Driver/InputInfo.h"
#include "clang/Driver/Job.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "clang/Driver/ToolChain.h"
#include "clang/Driver/Util.h"
#include "clang/Driver/XRayArgs.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#include "llvm/BinaryFormat/Magic.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/Option/Arg.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Option/Option.h"
#include "llvm/Support/CodeGen.h"
#include "llvm/Support/Compression.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/Program.h"
#include "llvm/Support/ScopedPrinter.h"
#include "llvm/Support/Threading.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/YAMLParser.h"
#include "llvm/TargetParser/Host.h"
#include "llvm/TargetParser/PPCTargetParser.h"
#include "llvm/TargetParser/TargetParser.h"
#include <optional>
Go to the source code of this file.
Enumerations | |
enum class | LibGccType { UnspecifiedLibGcc , StaticLibGcc , SharedLibGcc } |
Functions | |
static bool | useFramePointerForTargetByDefault (const llvm::opt::ArgList &Args, const llvm::Triple &Triple) |
static bool | useLeafFramePointerForTargetByDefault (const llvm::Triple &Triple) |
static bool | mustUseNonLeafFramePointerForTarget (const llvm::Triple &Triple) |
static bool | mustMaintainValidFrameChain (const llvm::opt::ArgList &Args, const llvm::Triple &Triple) |
static bool | framePointerImpliesLeafFramePointer (const llvm::opt::ArgList &Args, const llvm::Triple &Triple) |
clang::CodeGenOptions::FramePointerKind | getFramePointerKind (const llvm::opt::ArgList &Args, const llvm::Triple &Triple) |
static void | renderRpassOptions (const ArgList &Args, ArgStringList &CmdArgs, const StringRef PluginOptPrefix) |
static void | renderRemarksOptions (const ArgList &Args, ArgStringList &CmdArgs, const llvm::Triple &Triple, const InputInfo &Input, const InputInfo &Output, const StringRef PluginOptPrefix) |
static void | renderRemarksHotnessOptions (const ArgList &Args, ArgStringList &CmdArgs, const StringRef PluginOptPrefix) |
static bool | shouldIgnoreUnsupportedTargetFeature (const Arg &TargetFeatureArg, llvm::Triple T, StringRef Processor) |
static std::string | getAMDGPUTargetGPU (const llvm::Triple &T, const ArgList &Args) |
Get the (LLVM) name of the AMDGPU gpu we are targeting. | |
static std::string | getLanaiTargetCPU (const ArgList &Args) |
static StringRef | getWebAssemblyTargetCPU (const ArgList &Args) |
Get the (LLVM) name of the WebAssembly cpu we are targeting. | |
static void | getWebAssemblyTargetFeatures (const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector< StringRef > &Features) |
static void | addSanitizerRuntime (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, StringRef Sanitizer, bool IsShared, bool IsWhole) |
static bool | addSanitizerDynamicList (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, StringRef Sanitizer) |
static void | collectSanitizerRuntimes (const ToolChain &TC, const ArgList &Args, SmallVectorImpl< StringRef > &SharedRuntimes, SmallVectorImpl< StringRef > &StaticRuntimes, SmallVectorImpl< StringRef > &NonWholeStaticRuntimes, SmallVectorImpl< StringRef > &HelperStaticRuntimes, SmallVectorImpl< StringRef > &RequiredSymbols) |
static unsigned | ParseDebugDefaultVersion (const ToolChain &TC, const ArgList &Args) |
static LibGccType | getLibGccType (const ToolChain &TC, const Driver &D, const ArgList &Args) |
static void | AddUnwindLibrary (const ToolChain &TC, const Driver &D, ArgStringList &CmdArgs, const ArgList &Args) |
static void | AddLibgcc (const ToolChain &TC, const Driver &D, ArgStringList &CmdArgs, const ArgList &Args) |
static bool | SDLSearch (const Driver &D, const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, const SmallVectorImpl< std::string > &LibraryPaths, StringRef Lib, StringRef Arch, StringRef Target, bool isBitCodeSDL) |
SDLSearch: Search for Static Device Library The search for SDL bitcode files is consistent with how static host libraries are discovered. | |
static void | GetSDLFromOffloadArchive (Compilation &C, const Driver &D, const Tool &T, const JobAction &JA, const InputInfoList &Inputs, const llvm::opt::ArgList &DriverArgs, llvm::opt::ArgStringList &CC1Args, const SmallVectorImpl< std::string > &LibraryPaths, StringRef Lib, StringRef Arch, StringRef Target, bool isBitCodeSDL) |
Search if a user provided archive file lib<libname>.a exists in any of the library paths. | |
static llvm::opt::Arg * | getAMDGPUCodeObjectArgument (const Driver &D, const llvm::opt::ArgList &Args) |
|
strong |
Enumerator | |
---|---|
UnspecifiedLibGcc | |
StaticLibGcc | |
SharedLibGcc |
Definition at line 2124 of file CommonArgs.cpp.
|
static |
Definition at line 2209 of file CommonArgs.cpp.
References AddUnwindLibrary(), D, getLibGccType(), SharedLibGcc, StaticLibGcc, and UnspecifiedLibGcc.
|
static |
Definition at line 1328 of file CommonArgs.cpp.
References clang::driver::ToolChain::getCompilerRT(), clang::driver::ToolChain::getTriple(), and clang::driver::tools::solaris::isLinkerGnuLd().
|
static |
Definition at line 1311 of file CommonArgs.cpp.
References clang::driver::tools::addArchSpecificRPath(), clang::driver::ToolChain::FT_Shared, clang::driver::ToolChain::FT_Static, and clang::driver::ToolChain::getCompilerRTArgString().
|
static |
Definition at line 2151 of file CommonArgs.cpp.
References clang::driver::tools::addAsNeededOption(), D, getLibGccType(), clang::driver::ToolChain::getTriple(), clang::driver::ToolChain::GetUnwindLibType(), SharedLibGcc, StaticLibGcc, UnspecifiedLibGcc, clang::driver::ToolChain::UNW_CompilerRT, clang::driver::ToolChain::UNW_Libgcc, and clang::driver::ToolChain::UNW_None.
Referenced by AddLibgcc().
|
static |
Definition at line 1399 of file CommonArgs.cpp.
References clang::driver::ToolChain::getSanitizerArgs(), clang::driver::ToolChain::getTriple(), clang::driver::SanitizerArgs::linkCXXRuntimes(), clang::driver::SanitizerArgs::needsAsanRt(), clang::driver::SanitizerArgs::needsCfiDiagRt(), clang::driver::SanitizerArgs::needsCfiRt(), clang::driver::SanitizerArgs::needsDfsanRt(), clang::driver::SanitizerArgs::needsHwasanAliasesRt(), clang::driver::SanitizerArgs::needsHwasanRt(), clang::driver::SanitizerArgs::needsLsanRt(), clang::driver::SanitizerArgs::needsMemProfRt(), clang::driver::SanitizerArgs::needsMsanRt(), clang::driver::SanitizerArgs::needsNsanRt(), clang::driver::SanitizerArgs::needsSafeStackRt(), clang::driver::SanitizerArgs::needsScudoRt(), clang::driver::SanitizerArgs::needsSharedRt(), clang::driver::SanitizerArgs::needsStatsRt(), clang::driver::SanitizerArgs::needsTsanRt(), clang::driver::SanitizerArgs::needsUbsanRt(), and clang::driver::SanitizerArgs::requiresMinimalRuntime().
|
static |
|
static |
Definition at line 2658 of file CommonArgs.cpp.
Referenced by clang::driver::tools::checkAMDGPUCodeObjectVersion(), clang::driver::tools::getAMDGPUCodeObjectVersion(), and clang::driver::tools::haveAMDGPUCodeObjectVersionArgument().
|
static |
Get the (LLVM) name of the AMDGPU gpu we are targeting.
Definition at line 542 of file CommonArgs.cpp.
References clang::getProcessorFromTargetID(), and clang::T.
clang::CodeGenOptions::FramePointerKind getFramePointerKind | ( | const llvm::opt::ArgList & | Args, |
const llvm::Triple & | Triple | ||
) |
Definition at line 212 of file CommonArgs.cpp.
References clang::CodeGenOptions::All, framePointerImpliesLeafFramePointer(), mustMaintainValidFrameChain(), mustUseNonLeafFramePointerForTarget(), clang::CodeGenOptions::None, clang::CodeGenOptions::NonLeaf, clang::CodeGenOptions::Reserved, useFramePointerForTargetByDefault(), and useLeafFramePointerForTargetByDefault().
Referenced by clang::driver::tools::Clang::ConstructJob(), and clang::driver::tools::Flang::ConstructJob().
|
static |
Definition at line 562 of file CommonArgs.cpp.
|
static |
Definition at line 2126 of file CommonArgs.cpp.
References clang::driver::ToolChain::getTriple(), SharedLibGcc, StaticLibGcc, and UnspecifiedLibGcc.
Referenced by AddLibgcc(), and AddUnwindLibrary().
|
static |
Search if a user provided archive file lib<libname>.a exists in any of the library paths.
If so, add a new command to clang-offload-bundler to unbundle this archive and create a temporary device specific archive. Name of this SDL is passed to the llvm-link tool.
Definition at line 2445 of file CommonArgs.cpp.
References clang::driver::ResponseFileSupport::AtFileCurCP(), clang::C, D, clang::driver::Action::getOffloadingDeviceKind(), clang::driver::Action::GetOffloadKindName(), and clang::T.
Referenced by clang::driver::tools::AddStaticDeviceLibs().
|
static |
Get the (LLVM) name of the WebAssembly cpu we are targeting.
Definition at line 570 of file CommonArgs.cpp.
|
static |
Definition at line 693 of file CommonArgs.cpp.
References D, and clang::driver::tools::handleTargetFeaturesGroup().
|
static |
|
static |
Definition at line 165 of file CommonArgs.cpp.
Referenced by getFramePointerKind().
Definition at line 2060 of file CommonArgs.cpp.
References clang::driver::Driver::Diag(), and clang::driver::ToolChain::getDriver().
Referenced by clang::driver::tools::getDwarfVersion().
|
static |
Definition at line 311 of file CommonArgs.cpp.
|
static |
Definition at line 280 of file CommonArgs.cpp.
References clang::driver::InputInfo::getFilename(), and clang::driver::InputInfo::isFilename().
|
static |
Definition at line 265 of file CommonArgs.cpp.
|
static |
SDLSearch: Search for Static Device Library The search for SDL bitcode files is consistent with how static host libraries are discovered.
That is, the -l option triggers a search for files in a set of directories called the LINKPATH. The host library search procedure looks for a specific filename in the LINKPATH. The filename for a host library is lib<libname>.a or lib<libname>.so. For SDLs, there is an ordered-set of filenames that are searched. We call this ordered-set of filenames as SEARCH-ORDER. Since an SDL can either be device-type specific, architecture specific, or generic across all architectures, a naming convention and search order is used where the file name embeds the architecture name <arch-name> (nvptx or amdgcn) and the GPU device type <device-name> such as sm_30 and gfx906. <device-name> is absent in case of device-independent SDLs. To reduce congestion in host library directories, the search first looks for files in the “libdevice” subdirectory. SDLs that are bc files begin with the prefix “lib”.
Machine-code SDLs can also be managed as an archive (*.a file). The convention has been to use the prefix “lib”. To avoid confusion with host archive libraries, we use prefix "libbc-" for the bitcode SDL archives.
Definition at line 2367 of file CommonArgs.cpp.
References FullName.
Referenced by clang::driver::tools::AddStaticDeviceLibs().
|
static |
Definition at line 326 of file CommonArgs.cpp.
References clang::T.
|
static |
Definition at line 76 of file CommonArgs.cpp.
References clang::driver::tools::areOptimizationsEnabled().
Referenced by getFramePointerKind().
|
static |
Definition at line 157 of file CommonArgs.cpp.
Referenced by getFramePointerKind().