#include "[CommonArgs.h](CommonArgs%5F8h%5Fsource.html)"
#include "[Arch/AArch64.h](Driver%5F2ToolChains%5F2Arch%5F2AArch64%5F8h%5Fsource.html)"
#include "[Arch/ARM.h](Driver%5F2ToolChains%5F2Arch%5F2ARM%5F8h%5Fsource.html)"
#include "[Arch/CSKY.h](Driver%5F2ToolChains%5F2Arch%5F2CSKY%5F8h%5Fsource.html)"
#include "[Arch/LoongArch.h](Driver%5F2ToolChains%5F2Arch%5F2LoongArch%5F8h%5Fsource.html)"
#include "[Arch/M68k.h](Driver%5F2ToolChains%5F2Arch%5F2M68k%5F8h%5Fsource.html)"
#include "[Arch/Mips.h](Driver%5F2ToolChains%5F2Arch%5F2Mips%5F8h%5Fsource.html)"
#include "[Arch/PPC.h](Driver%5F2ToolChains%5F2Arch%5F2PPC%5F8h%5Fsource.html)"
#include "[Arch/RISCV.h](Driver%5F2ToolChains%5F2Arch%5F2RISCV%5F8h%5Fsource.html)"
#include "[Arch/Sparc.h](Driver%5F2ToolChains%5F2Arch%5F2Sparc%5F8h%5Fsource.html)"
#include "[Arch/SystemZ.h](Driver%5F2ToolChains%5F2Arch%5F2SystemZ%5F8h%5Fsource.html)"
#include "[Arch/VE.h](Driver%5F2ToolChains%5F2Arch%5F2VE%5F8h%5Fsource.html)"
#include "[Arch/X86.h](Driver%5F2ToolChains%5F2Arch%5F2X86%5F8h%5Fsource.html)"
#include "[BareMetal.h](BareMetal%5F8h%5Fsource.html)"
#include "[HIPAMD.h](HIPAMD%5F8h%5Fsource.html)"
#include "[Hexagon.h](Driver%5F2ToolChains%5F2Hexagon%5F8h%5Fsource.html)"
#include "[MSP430.h](Driver%5F2ToolChains%5F2MSP430%5F8h%5Fsource.html)"
#include "[Solaris.h](Solaris%5F8h%5Fsource.html)"
#include "[clang/Basic/CharInfo.h](CharInfo%5F8h%5Fsource.html)"
#include "[clang/Basic/CodeGenOptions.h](CodeGenOptions%5F8h%5Fsource.html)"
#include "[clang/Basic/LangOptions.h](LangOptions%5F8h%5Fsource.html)"
#include "[clang/Basic/ObjCRuntime.h](ObjCRuntime%5F8h%5Fsource.html)"
#include "[clang/Basic/Version.h](Version%5F8h%5Fsource.html)"
#include "clang/Config/config.h"
#include "[clang/Driver/Action.h](Action%5F8h%5Fsource.html)"
#include "[clang/Driver/Compilation.h](Compilation%5F8h%5Fsource.html)"
#include "[clang/Driver/Driver.h](Driver%5F8h%5Fsource.html)"
#include "[clang/Driver/DriverDiagnostic.h](DriverDiagnostic%5F8h%5Fsource.html)"
#include "[clang/Driver/InputInfo.h](InputInfo%5F8h%5Fsource.html)"
#include "[clang/Driver/Job.h](Job%5F8h%5Fsource.html)"
#include "[clang/Driver/Options.h](Options%5F8h%5Fsource.html)"
#include "[clang/Driver/SanitizerArgs.h](SanitizerArgs%5F8h%5Fsource.html)"
#include "[clang/Driver/ToolChain.h](ToolChain%5F8h%5Fsource.html)"
#include "[clang/Driver/Util.h](Util%5F8h%5Fsource.html)"
#include "[clang/Driver/XRayArgs.h](XRayArgs%5F8h%5Fsource.html)"
#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.
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.a exists in any of the library paths.
static llvm::opt::Arg *
getAMDGPUCodeObjectArgument (const Driver &D , const llvm::opt::ArgList &Args)
◆ LibGccType
Enumerator
UnspecifiedLibGcc
StaticLibGcc
SharedLibGcc
Definition at line 2184 of file CommonArgs.cpp .
◆ AddLibgcc()
static void AddLibgcc ( const ToolChain & TC , const Driver & D , ArgStringList & CmdArgs , const ArgList & Args )
static
◆ addSanitizerDynamicList()
static bool addSanitizerDynamicList ( const ToolChain & TC , const ArgList & Args , ArgStringList & CmdArgs , StringRef Sanitizer )
static
◆ addSanitizerRuntime()
static void addSanitizerRuntime ( const ToolChain & TC , const ArgList & Args , ArgStringList & CmdArgs , StringRef Sanitizer , bool IsShared , bool IsWhole )
static
◆ AddUnwindLibrary()
static void AddUnwindLibrary ( const ToolChain & TC , const Driver & D , ArgStringList & CmdArgs , const ArgList & Args )
static
Definition at line 2211 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() .
◆ collectSanitizerRuntimes()Definition at line 1460 of file CommonArgs.cpp .
References clang::driver::ToolChain::getSanitizerArgs() , clang::driver::ToolChain::getTriple() , clang::driver::SanitizerArgs::linkCXXRuntimes() , clang::driver::SanitizerArgs::linkRuntimes() , 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::needsRtsanRt() , clang::driver::SanitizerArgs::needsSafeStackRt() , clang::driver::SanitizerArgs::needsScudoRt() , clang::driver::SanitizerArgs::needsSharedRt() , clang::driver::SanitizerArgs::needsStatsRt() , clang::driver::SanitizerArgs::needsTsanRt() , clang::driver::SanitizerArgs::needsTysanRt() , clang::driver::SanitizerArgs::needsUbsanCXXRt() , clang::driver::SanitizerArgs::needsUbsanRt() , and clang::driver::SanitizerArgs::requiresMinimalRuntime() .
◆ framePointerImpliesLeafFramePointer()
static bool framePointerImpliesLeafFramePointer ( const llvm::opt::ArgList & Args , const llvm::Triple & Triple )
static
◆ getAMDGPUCodeObjectArgument()
static llvm::opt::Arg * getAMDGPUCodeObjectArgument ( const Driver & D , const llvm::opt::ArgList & Args )
static
◆ getAMDGPUTargetGPU()
static std::string getAMDGPUTargetGPU ( const llvm::Triple & T , const ArgList & Args )
static
◆ getFramePointerKind()◆ getLanaiTargetCPU()
static std::string getLanaiTargetCPU ( const ArgList & Args )
static
◆ getLibGccType()◆ GetSDLFromOffloadArchive()
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 )
static
◆ getWebAssemblyTargetCPU()
static StringRef getWebAssemblyTargetCPU ( const ArgList & Args )
static
Get the (LLVM) name of the WebAssembly cpu we are targeting.
Definition at line 591 of file CommonArgs.cpp .
◆ getWebAssemblyTargetFeatures()
static void getWebAssemblyTargetFeatures ( const Driver & D , const llvm::Triple & Triple , const ArgList & Args , std::vector< StringRef > & Features )
static
◆ mustMaintainValidFrameChain()
static bool mustMaintainValidFrameChain ( const llvm::opt::ArgList & Args , const llvm::Triple & Triple )
static
◆ mustUseNonLeafFramePointerForTarget()
static bool mustUseNonLeafFramePointerForTarget ( const llvm::Triple & Triple )
static
◆ ParseDebugDefaultVersion()
static unsigned ParseDebugDefaultVersion ( const ToolChain & TC , const ArgList & Args )
static
static void renderRemarksHotnessOptions ( const ArgList & Args , ArgStringList & CmdArgs , const StringRef PluginOptPrefix )
static
static void renderRemarksOptions ( const ArgList & Args , ArgStringList & CmdArgs , const llvm::Triple & Triple , const InputInfo & Input , const InputInfo & Output , const StringRef PluginOptPrefix )
static
◆ renderRpassOptions()
static void renderRpassOptions ( const ArgList & Args , ArgStringList & CmdArgs , const StringRef PluginOptPrefix )
static
◆ SDLSearch()
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 )
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.a or lib.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 (nvptx or amdgcn) and the GPU device type such as sm_30 and gfx906. 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 2427 of file CommonArgs.cpp .
References FullName .
Referenced by clang::driver::tools::AddStaticDeviceLibs() .
◆ shouldIgnoreUnsupportedTargetFeature()
static bool shouldIgnoreUnsupportedTargetFeature ( const Arg & TargetFeatureArg , llvm::Triple T , StringRef Processor )
static
◆ useFramePointerForTargetByDefault()
static bool useFramePointerForTargetByDefault ( const llvm::opt::ArgList & Args , const llvm::Triple & Triple )
static
◆ useLeafFramePointerForTargetByDefault()
static bool useLeafFramePointerForTargetByDefault ( const llvm::Triple & Triple )
static