class ToolChain

Declaration

class ToolChain { /* full declaration omitted */ };

Description

ToolChain - Access to tools for a single platform.

Declared at: clang/include/clang/Driver/ToolChain.h:91

Member Variables

private const clang::driver::Driver& D
private llvm::Triple Triple
private const llvm::opt::ArgList& Args
private const llvm::opt::Arg* const CachedRTTIArg
private const clang::driver::ToolChain::RTTIMode CachedRTTIMode
private clang::driver::ToolChain::path_list LibraryPaths
The list of toolchain specific path prefixes to search for libraries.
private clang::driver::ToolChain::path_list FilePaths
The list of toolchain specific path prefixes to search for files.
private clang::driver::ToolChain::path_list ProgramPaths
The list of toolchain specific path prefixes to search for programs.
private std::unique_ptr<Tool> Clang
private std::unique_ptr<Tool> Flang
private std::unique_ptr<Tool> Assemble
private std::unique_ptr<Tool> StaticLibTool
private std::unique_ptr<Tool> IfsMerge
private std::unique_ptr<Tool> OffloadBundler
private std::unique_ptr<Tool> OffloadWrapper
private std::unique_ptr<Tool> OffloadPackager
private std::unique_ptr<Tool> LinkerWrapper
private bool SanitizerArgsChecked = false
private std::unique_ptr<XRayArgs> XRayArguments
private llvm::Triple EffectiveTriple
The effective clang triple for the current Job.
private llvm::Optional<CXXStdlibType> cxxStdlibType
private llvm::Optional<RuntimeLibType> runtimeLibType
private llvm::Optional<UnwindLibType> unwindLibType
protected clang::driver::MultilibSet Multilibs
protected clang::driver::Multilib SelectedMultilib

Method Overview

Methods

virtual void AddCCKextLibArgs(
    const llvm::opt::ArgList& Args,
    llvm::opt::ArgStringList& CmdArgs) const

Description

AddCCKextLibArgs - Add the system specific linker arguments to use for kernel extensions (Darwin-specific).

Declared at: clang/include/clang/Driver/ToolChain.h:674

Parameters

const llvm::opt::ArgList& Args
llvm::opt::ArgStringList& CmdArgs

virtual void AddCXXStdlibLibArgs(
    const llvm::opt::ArgList& Args,
    llvm::opt::ArgStringList& CmdArgs) const

Description

AddCXXStdlibLibArgs - Add the system specific linker arguments to use for the given C++ standard library type.

Declared at: clang/include/clang/Driver/ToolChain.h:665

Parameters

const llvm::opt::ArgList& Args
llvm::opt::ArgStringList& CmdArgs

virtual void AddClangCXXStdlibIncludeArgs(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args) const

Description

AddClangCXXStdlibIncludeArgs - Add the clang -cc1 level arguments to set the include paths to use for the given C++ standard library type.

Declared at: clang/include/clang/Driver/ToolChain.h:651

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args

void AddClangCXXStdlibIsystemArgs(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args) const

Description

AddClangCXXStdlibIsystemArgs - Add the clang -cc1 level arguments to set the specified include paths for the C++ standard library.

Declared at: clang/include/clang/Driver/ToolChain.h:656

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args

virtual void AddClangSystemIncludeArgs(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args) const

Description

Add the clang cc1 arguments for system include paths. This routine is responsible for adding the necessary cc1 arguments to include headers from standard system header directories.

Declared at: clang/include/clang/Driver/ToolChain.h:621

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args

virtual void AddCudaIncludeArgs(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args) const

Description

Add arguments to use system-specific CUDA includes.

Declared at: clang/include/clang/Driver/ToolChain.h:697

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args

void AddFilePathLibArgs(
    const llvm::opt::ArgList& Args,
    llvm::opt::ArgStringList& CmdArgs) const

Description

AddFilePathLibArgs - Add each thing in getFilePaths() as a "-L" option.

Declared at: clang/include/clang/Driver/ToolChain.h:669

Parameters

const llvm::opt::ArgList& Args
llvm::opt::ArgStringList& CmdArgs

virtual void AddHIPIncludeArgs(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args) const

Description

Add arguments to use system-specific HIP includes.

Declared at: clang/include/clang/Driver/ToolChain.h:701

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args

virtual void AddHIPRuntimeLibArgs(
    const llvm::opt::ArgList& Args,
    llvm::opt::ArgStringList& CmdArgs) const

Description

Add the system specific linker arguments to use for the given HIP runtime library type.

Declared at: clang/include/clang/Driver/ToolChain.h:718

Parameters

const llvm::opt::ArgList& Args
llvm::opt::ArgStringList& CmdArgs

virtual void AddIAMCUIncludeArgs(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args) const

Description

Add arguments to use MCU GCC toolchain includes.

Declared at: clang/include/clang/Driver/ToolChain.h:705

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args

virtual void CheckObjCARC() const

Description

Complain if this tool chain doesn't support Objective-C ARC.

Declared at: clang/include/clang/Driver/ToolChain.h:522

virtual std::string ComputeEffectiveClangTriple(
    const llvm::opt::ArgList& Args,
    types::ID InputType = types::TY_INVALID) const

Description

ComputeEffectiveClangTriple - Return the Clang triple to use for this target, which may take into account the command line arguments. For example, on Darwin the -mmacosx-version-min= command line argument (which sets the deployment target) determines the version in the triple passed to Clang.

Declared at: clang/include/clang/Driver/ToolChain.h:595

Parameters

const llvm::opt::ArgList& Args
types::ID InputType = types::TY_INVALID

virtual std::string ComputeLLVMTriple(
    const llvm::opt::ArgList& Args,
    types::ID InputType = types::TY_INVALID) const

Description

ComputeLLVMTriple - Return the LLVM target triple to use, after taking command line arguments into account.

Declared at: clang/include/clang/Driver/ToolChain.h:587

Parameters

const llvm::opt::ArgList& Args
types::ID InputType = types::TY_INVALID

virtual clang::driver::ToolChain::CXXStdlibType
GetCXXStdlibType(
    const llvm::opt::ArgList& Args) const

Declared at: clang/include/clang/Driver/ToolChain.h:639

Parameters

const llvm::opt::ArgList& Args

virtual clang::driver::ToolChain::CXXStdlibType
GetDefaultCXXStdlibType() const

Declared at: clang/include/clang/Driver/ToolChain.h:455

virtual unsigned int GetDefaultDwarfVersion()
    const

Declared at: clang/include/clang/Driver/ToolChain.h:538

virtual clang::driver::ToolChain::RuntimeLibType
GetDefaultRuntimeLibType() const

Description

GetDefaultRuntimeLibType - Get the default runtime library variant to use.

Declared at: clang/include/clang/Driver/ToolChain.h:451

virtual LangOptions::StackProtectorMode
GetDefaultStackProtectorLevel(
    bool KernelOrKext) const

Description

GetDefaultStackProtectorLevel - Get the default stack protector level for this tool chain.

Declared at: clang/include/clang/Driver/ToolChain.h:437

Parameters

bool KernelOrKext

virtual bool GetDefaultStandaloneDebug() const

Declared at: clang/include/clang/Driver/ToolChain.h:549

virtual LangOptions::TrivialAutoVarInitKind
GetDefaultTrivialAutoVarInit() const

Description

Get the default trivial automatic variable initialization.

Declared at: clang/include/clang/Driver/ToolChain.h:443

virtual clang::driver::ToolChain::UnwindLibType
GetDefaultUnwindLibType() const

Declared at: clang/include/clang/Driver/ToolChain.h:459

virtual llvm::ExceptionHandling GetExceptionModel(
    const llvm::opt::ArgList& Args) const

Description

GetExceptionModel - Return the tool chain exception model.

Declared at: clang/include/clang/Driver/ToolChain.h:567

Parameters

const llvm::opt::ArgList& Args

std::string GetFilePath(const char* Name) const

Declared at: clang/include/clang/Driver/ToolChain.h:349

Parameters

const char* Name

virtual std::string GetGlobalDebugPathRemapping()
    const

Description

Add an additional -fdebug-prefix-map entry.

Declared at: clang/include/clang/Driver/ToolChain.h:534

std::string GetLinkerPath(
    bool* LinkerIsLLD = nullptr) const

Description

Returns the linker path, respecting the -fuse-ld= argument to determine the linker suffix or name. If LinkerIsLLD is non-nullptr, it is set to true if the returned linker is LLD. If it's set, it can be assumed that the linker is LLD built at the same revision as clang, and clang can make assumptions about LLD's supported flags, error output, etc.

Declared at: clang/include/clang/Driver/ToolChain.h:358

Parameters

bool* LinkerIsLLD = nullptr

std::string GetProgramPath(const char* Name) const

Declared at: clang/include/clang/Driver/ToolChain.h:350

Parameters

const char* Name

virtual clang::driver::ToolChain::RuntimeLibType
GetRuntimeLibType(
    const llvm::opt::ArgList& Args) const

Declared at: clang/include/clang/Driver/ToolChain.h:635

Parameters

const llvm::opt::ArgList& Args

std::string GetStaticLibToolPath() const

Description

Returns the linker path for emitting a static library.

Declared at: clang/include/clang/Driver/ToolChain.h:361

virtual clang::driver::ToolChain::UnwindLibType
GetUnwindLibType(
    const llvm::opt::ArgList& Args) const

Declared at: clang/include/clang/Driver/ToolChain.h:643

Parameters

const llvm::opt::ArgList& Args

virtual bool HasNativeLLVMSupport() const

Description

HasNativeLTOLinker - Check whether the linker and related tools have native LLVM support.

Declared at: clang/include/clang/Driver/ToolChain.h:378

virtual bool IsAArch64OutlineAtomicsDefault(
    const llvm::opt::ArgList& Args) const

Description

Test whether this toolchain supports outline atomics by default.

Declared at: clang/include/clang/Driver/ToolChain.h:502

Parameters

const llvm::opt::ArgList& Args

virtual bool IsBlocksDefault() const

Description

IsBlocksDefault - Does this tool chain enable -fblocks by default.

Declared at: clang/include/clang/Driver/ToolChain.h:385

virtual bool
IsEncodeExtendedBlockSignatureDefault() const

Description

IsEncodeExtendedBlockSignatureDefault - Does this tool chain enable -fencode-extended-block-signature by default.

Declared at: clang/include/clang/Driver/ToolChain.h:418

virtual bool IsIntegratedAssemblerDefault() const

Description

IsIntegratedAssemblerDefault - Does this tool chain enable -integrated-as by default.

Declared at: clang/include/clang/Driver/ToolChain.h:389

virtual bool IsIntegratedBackendDefault() const

Description

IsIntegratedBackendDefault - Does this tool chain enable -fintegrated-objemitter by default.

Declared at: clang/include/clang/Driver/ToolChain.h:393

virtual bool IsIntegratedBackendSupported() const

Description

IsIntegratedBackendSupported - Does this tool chain support -fintegrated-objemitter.

Declared at: clang/include/clang/Driver/ToolChain.h:397

virtual bool IsMathErrnoDefault() const

Description

IsMathErrnoDefault - Does this tool chain use -fmath-errno by default.

Declared at: clang/include/clang/Driver/ToolChain.h:414

virtual bool IsNonIntegratedBackendSupported()
    const

Description

IsNonIntegratedBackendSupported - Does this tool chain support -fno-integrated-objemitter.

Declared at: clang/include/clang/Driver/ToolChain.h:401

virtual bool IsObjCNonFragileABIDefault() const

Description

IsObjCNonFragileABIDefault - Does this tool chain set -fobjc-nonfragile-abi by default.

Declared at: clang/include/clang/Driver/ToolChain.h:422

virtual bool IsUnwindTablesDefault(
    const llvm::opt::ArgList& Args) const

Description

IsUnwindTablesDefault - Does this tool chain use -funwind-tables by default.

Declared at: clang/include/clang/Driver/ToolChain.h:498

Parameters

const llvm::opt::ArgList& Args

virtual types::ID LookupTypeForExtension(
    llvm::StringRef Ext) const

Description

LookupTypeForExtension - Return the default language type to use for the given extension.

Declared at: clang/include/clang/Driver/ToolChain.h:382

Parameters

llvm::StringRef Ext

virtual clang::driver::Tool* SelectTool(
    const clang::driver::JobAction& JA) const

Description

Choose a tool to use to handle the action \p JA. This can be overridden when a particular ToolChain needs to use a compiler other than Clang.

Declared at: clang/include/clang/Driver/ToolChain.h:345

Parameters

const clang::driver::JobAction& JA

bool ShouldLinkCXXStdlib(
    const llvm::opt::ArgList& Args) const

Description

Returns if the C++ standard library should be linked in. Note that e.g. -lm should still be linked even if this returns false.

Declared at: clang/include/clang/Driver/ToolChain.h:661

Parameters

const llvm::opt::ArgList& Args

virtual bool SupportsEmbeddedBitcode() const

Description

SupportsEmbeddedBitcode - Does this tool chain support embedded bitcode.

Declared at: clang/include/clang/Driver/ToolChain.h:570

virtual bool SupportsProfiling() const

Description

SupportsProfiling - Does this tool chain support -pg.

Declared at: clang/include/clang/Driver/ToolChain.h:519

ToolChain(const clang::driver::Driver& D,
          const llvm::Triple& T,
          const llvm::opt::ArgList& Args)

Declared at: clang/include/clang/Driver/ToolChain.h:188

Parameters

const clang::driver::Driver& D
const llvm::Triple& T
const llvm::opt::ArgList& Args

virtual llvm::opt::DerivedArgList* TranslateArgs(
    const llvm::opt::DerivedArgList& Args,
    llvm::StringRef BoundArch,
    Action::OffloadKind DeviceOffloadKind) const

Description

TranslateArgs - Create a new derived argument list for any argument translations this ToolChain may wish to perform, or 0 if no tool chain specific translations are needed. If \p DeviceOffloadKind is specified the translation specific for that offload kind is performed.

Declared at: clang/include/clang/Driver/ToolChain.h:313

Parameters

const llvm::opt::DerivedArgList& Args
llvm::StringRef BoundArch
- The bound architecture name, or 0.
Action::OffloadKind DeviceOffloadKind
- The device offload kind used for the translation.

virtual llvm::opt::DerivedArgList*
TranslateOpenMPTargetArgs(
    const llvm::opt::DerivedArgList& Args,
    bool SameTripleAsHost,
    SmallVectorImpl<llvm::opt::Arg*>&
        AllocatedArgs) const

Description

TranslateOpenMPTargetArgs - Create a new derived argument list for that contains the OpenMP target specific flags passed via -Xopenmp-target -opt=val OR -Xopenmp-target= <triple > -opt=val

Declared at: clang/include/clang/Driver/ToolChain.h:321

Parameters

const llvm::opt::DerivedArgList& Args
bool SameTripleAsHost
SmallVectorImpl<llvm::opt::Arg*>& AllocatedArgs

virtual void TranslateXarchArgs(
    const llvm::opt::DerivedArgList& Args,
    llvm::opt::Arg*& A,
    llvm::opt::DerivedArgList* DAL,
    SmallVectorImpl<llvm::opt::Arg*>*
        AllocatedArgs = nullptr) const

Description

Append the argument following \p A to \p DAL assuming \p A is an Xarch argument. If \p AllocatedArgs is null pointer, synthesized arguments are added to \p DAL, otherwise they are appended to \p AllocatedArgs.

Declared at: clang/include/clang/Driver/ToolChain.h:328

Parameters

const llvm::opt::DerivedArgList& Args
llvm::opt::Arg*& A
llvm::opt::DerivedArgList* DAL
SmallVectorImpl<llvm::opt::Arg*>* AllocatedArgs = nullptr

virtual llvm::opt::DerivedArgList*
TranslateXarchArgs(
    const llvm::opt::DerivedArgList& Args,
    llvm::StringRef BoundArch,
    Action::OffloadKind DeviceOffloadKind,
    SmallVectorImpl<llvm::opt::Arg*>*
        AllocatedArgs) const

Description

Translate -Xarch_ arguments. If there are no such arguments, return a null pointer, otherwise return a DerivedArgList containing the translated arguments.

Declared at: clang/include/clang/Driver/ToolChain.h:337

Parameters

const llvm::opt::DerivedArgList& Args
llvm::StringRef BoundArch
Action::OffloadKind DeviceOffloadKind
SmallVectorImpl<llvm::opt::Arg*>* AllocatedArgs

virtual bool UseDwarfDebugFlags() const

Description

UseDwarfDebugFlags - Embed the compile options to clang into the Dwarf compile unit information.

Declared at: clang/include/clang/Driver/ToolChain.h:531

virtual bool UseObjCMixedDispatch() const

Description

UseObjCMixedDispatchDefault - When using non-legacy dispatch, should the mixed dispatch method be used?

Declared at: clang/include/clang/Driver/ToolChain.h:426

virtual void addClangTargetOptions(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args,
    Action::OffloadKind DeviceOffloadKind) const

Description

Add options that need to be passed to cc1 for this target.

Declared at: clang/include/clang/Driver/ToolChain.h:625

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args
Action::OffloadKind DeviceOffloadKind

virtual void addClangWarningOptions(
    llvm::opt::ArgStringList& CC1Args) const

Description

Add warning options that need to be passed to cc1 for this target.

Declared at: clang/include/clang/Driver/ToolChain.h:630

Parameters

llvm::opt::ArgStringList& CC1Args

static void addExternCSystemInclude(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args,
    const llvm::Twine& Path)

Declared at: clang/include/clang/Driver/ToolChain.h:208

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args
const llvm::Twine& Path

static void addExternCSystemIncludeIfExists(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args,
    const llvm::Twine& Path)

Declared at: clang/include/clang/Driver/ToolChain.h:212

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args
const llvm::Twine& Path

bool addFastMathRuntimeIfAvailable(
    const llvm::opt::ArgList& Args,
    llvm::opt::ArgStringList& CmdArgs) const

Description

AddFastMathRuntimeIfAvailable - If a runtime library exists that sets global flags for unsafe floating point math, add it and return true. This checks for presence of the -Ofast, -ffast-math or -funsafe-math flags.

Declared at: clang/include/clang/Driver/ToolChain.h:688

Parameters

const llvm::opt::ArgList& Args
llvm::opt::ArgStringList& CmdArgs

virtual void addProfileRTLibs(
    const llvm::opt::ArgList& Args,
    llvm::opt::ArgStringList& CmdArgs) const

Description

addProfileRTLibs - When -fprofile-instr-profile is specified, try to pass a suitable profile runtime library to the linker.

Declared at: clang/include/clang/Driver/ToolChain.h:693

Parameters

const llvm::opt::ArgList& Args
llvm::opt::ArgStringList& CmdArgs

static void addSystemInclude(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args,
    const llvm::Twine& Path)

Description

@ {

Declared at: clang/include/clang/Driver/ToolChain.h:205

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args
const llvm::Twine& Path

static void addSystemIncludes(
    const llvm::opt::ArgList& DriverArgs,
    llvm::opt::ArgStringList& CC1Args,
    ArrayRef<llvm::StringRef> Paths)

Declared at: clang/include/clang/Driver/ToolChain.h:215

Parameters

const llvm::opt::ArgList& DriverArgs
llvm::opt::ArgStringList& CC1Args
ArrayRef<llvm::StringRef> Paths

virtual void adjustDebugInfoKind(
    codegenoptions::DebugInfoKind& DebugInfoKind,
    const llvm::opt::ArgList& Args) const

Description

Adjust debug information kind considering all passed options.

Declared at: clang/include/clang/Driver/ToolChain.h:562

Parameters

codegenoptions::DebugInfoKind& DebugInfoKind
const llvm::opt::ArgList& Args

virtual clang::driver::Tool* buildAssembler()
    const

Declared at: clang/include/clang/Driver/ToolChain.h:193

virtual std::string buildCompilerRTBasename(
    const llvm::opt::ArgList& Args,
    llvm::StringRef Component,
    clang::driver::ToolChain::FileType Type,
    bool AddArch) const

Declared at: clang/include/clang/Driver/ToolChain.h:198

Parameters

const llvm::opt::ArgList& Args
llvm::StringRef Component
clang::driver::ToolChain::FileType Type
bool AddArch

virtual clang::driver::Tool* buildLinker() const

Declared at: clang/include/clang/Driver/ToolChain.h:194

virtual clang::driver::Tool* buildStaticLibTool()
    const

Declared at: clang/include/clang/Driver/ToolChain.h:195

virtual bool canSplitThinLTOUnit() const

Description

Returns true when it's possible to split LTO unit to use whole program devirtualization and CFI santiizers.

Declared at: clang/include/clang/Driver/ToolChain.h:731

virtual llvm::VersionTuple computeMSVCVersion(
    const clang::driver::Driver* D,
    const llvm::opt::ArgList& Args) const

Description

On Windows, returns the MSVC compatibility version.

Declared at: clang/include/clang/Driver/ToolChain.h:709

Parameters

const clang::driver::Driver* D
const llvm::opt::ArgList& Args

virtual std::string computeSysRoot() const

Description

Return the sysroot, possibly searching for a default sysroot using target-specific logic.

Declared at: clang/include/clang/Driver/ToolChain.h:614

static std::string concat(
    llvm::StringRef Path,
    const llvm::Twine& A,
    const llvm::Twine& B = "",
    const llvm::Twine& C = "",
    const llvm::Twine& D = "")

Declared at: clang/include/clang/Driver/ToolChain.h:219

Parameters

llvm::StringRef Path
const llvm::Twine& A
const llvm::Twine& B = ""
const llvm::Twine& C = ""
const llvm::Twine& D = ""

bool defaultToIEEELongDouble() const

Description

Check whether use IEEE binary128 as long double format by default.

Declared at: clang/include/clang/Driver/ToolChain.h:432

virtual std::string detectLibcxxVersion(
    llvm::StringRef IncludePath) const

Declared at: clang/include/clang/Driver/ToolChain.h:646

Parameters

llvm::StringRef IncludePath

llvm::Triple::ArchType getArch() const

Declared at: clang/include/clang/Driver/ToolChain.h:244

llvm::StringRef getArchName() const

Declared at: clang/include/clang/Driver/ToolChain.h:245

std::string getArchSpecificLibPath() const

Declared at: clang/include/clang/Driver/ToolChain.h:485

clang::driver::Tool* getAssemble() const

Declared at: clang/include/clang/Driver/ToolChain.h:159

virtual const llvm::Triple* getAuxTriple() const

Description

Get the toolchain's aux triple, if it has one. Exactly what the aux triple represents depends on the toolchain, but for example when compiling CUDA code for the GPU, the triple might be NVPTX, while the aux triple is the host (CPU) toolchain, e.g. x86-linux-gnu.

Declared at: clang/include/clang/Driver/ToolChain.h:237

clang::driver::Tool* getClang() const

Declared at: clang/include/clang/Driver/ToolChain.h:157

clang::driver::Tool* getClangAs() const

Declared at: clang/include/clang/Driver/ToolChain.h:163

virtual std::string getCompilerRT(
    const llvm::opt::ArgList& Args,
    llvm::StringRef Component,
    clang::driver::ToolChain::FileType Type =
        ToolChain::FT_Static) const

Declared at: clang/include/clang/Driver/ToolChain.h:465

Parameters

const llvm::opt::ArgList& Args
llvm::StringRef Component
clang::driver::ToolChain::FileType Type = ToolChain::FT_Static

const char* getCompilerRTArgString(
    const llvm::opt::ArgList& Args,
    llvm::StringRef Component,
    clang::driver::ToolChain::FileType Type =
        ToolChain::FT_Static) const

Declared at: clang/include/clang/Driver/ToolChain.h:470

Parameters

const llvm::opt::ArgList& Args
llvm::StringRef Component
clang::driver::ToolChain::FileType Type = ToolChain::FT_Static

std::string getCompilerRTBasename(
    const llvm::opt::ArgList& Args,
    llvm::StringRef Component,
    clang::driver::ToolChain::FileType Type =
        ToolChain::FT_Static) const

Declared at: clang/include/clang/Driver/ToolChain.h:473

Parameters

const llvm::opt::ArgList& Args
llvm::StringRef Component
clang::driver::ToolChain::FileType Type = ToolChain::FT_Static

virtual std::string getCompilerRTPath() const

Declared at: clang/include/clang/Driver/ToolChain.h:463

virtual codegenoptions::DebugInfoFormat
getDefaultDebugFormat() const

Description

Get the default debug info format. Typically, this is DWARF.

Declared at: clang/include/clang/Driver/ToolChain.h:525

virtual llvm::DebuggerKind
getDefaultDebuggerTuning() const

Declared at: clang/include/clang/Driver/ToolChain.h:552

virtual llvm::DenormalMode
getDefaultDenormalModeForType(
    const llvm::opt::ArgList& DriverArgs,
    const clang::driver::JobAction& JA,
    const llvm::fltSemantics* FPType =
        nullptr) const

Description

Returns the output denormal handling type in the default floating point environment for the given \p FPType if given. Otherwise, the default assumed mode for any floating point type.

Declared at: clang/include/clang/Driver/ToolChain.h:736

Parameters

const llvm::opt::ArgList& DriverArgs
const clang::driver::JobAction& JA
const llvm::fltSemantics* FPType = nullptr

virtual const char* getDefaultLinker() const

Description

GetDefaultLinker - Get the default linker to use.

Declared at: clang/include/clang/Driver/ToolChain.h:448

virtual clang::ObjCRuntime getDefaultObjCRuntime(
    bool isNonFragile) const

Description

getDefaultObjCRuntime - Return the default Objective-C runtime for this platform. FIXME: this really belongs on some sort of DeploymentTarget abstraction

Declared at: clang/include/clang/Driver/ToolChain.h:603

Parameters

bool isNonFragile

virtual clang::SanitizerMask
getDefaultSanitizers() const

Description

Return sanitizers which are enabled by default.

Declared at: clang/include/clang/Driver/ToolChain.h:725

llvm::StringRef getDefaultUniversalArchName()
    const

Description

Provide the default architecture name (as expected by -arch) for this toolchain.

Declared at: clang/include/clang/Driver/ToolChain.h:251

const clang::driver::Driver& getDriver() const

Declared at: clang/include/clang/Driver/ToolChain.h:228

const llvm::Triple& getEffectiveTriple() const

Description

Get the toolchain's effective clang triple.

Declared at: clang/include/clang/Driver/ToolChain.h:258

clang::driver::ToolChain::path_list&
getFilePaths()

Declared at: clang/include/clang/Driver/ToolChain.h:266

const clang::driver::ToolChain::path_list&
getFilePaths() const

Declared at: clang/include/clang/Driver/ToolChain.h:267

clang::driver::Tool* getFlang() const

Declared at: clang/include/clang/Driver/ToolChain.h:158

virtual llvm::SmallVector<BitCodeLibraryInfo, 12>
getHIPDeviceLibs(
    const llvm::opt::ArgList& Args) const

Description

Get paths of HIP device libraries.

Declared at: clang/include/clang/Driver/ToolChain.h:714

Parameters

const llvm::opt::ArgList& Args

clang::driver::Tool* getIfsMerge() const

Declared at: clang/include/clang/Driver/ToolChain.h:162

virtual std::string getInputFilename(
    const clang::driver::InputInfo& Input) const

Description

Some toolchains need to modify the file name, for example to replace the extension for object files with .cubin for OpenMP offloading to Nvidia GPUs.

Declared at: clang/include/clang/Driver/ToolChain.h:242

Parameters

const clang::driver::InputInfo& Input

const clang::driver::ToolChain::path_list&
getLibraryPaths() const

Declared at: clang/include/clang/Driver/ToolChain.h:264

clang::driver::ToolChain::path_list&
getLibraryPaths()

Declared at: clang/include/clang/Driver/ToolChain.h:263

clang::driver::Tool* getLink() const

Declared at: clang/include/clang/Driver/ToolChain.h:160

clang::driver::Tool* getLinkerWrapper() const

Declared at: clang/include/clang/Driver/ToolChain.h:167

virtual unsigned int getMaxDwarfVersion() const

Declared at: clang/include/clang/Driver/ToolChain.h:543

virtual std::string getMultiarchTriple(
    const clang::driver::Driver& D,
    const llvm::Triple& TargetTriple,
    llvm::StringRef SysRoot) const

Declared at: clang/include/clang/Driver/ToolChain.h:578

Parameters

const clang::driver::Driver& D
const llvm::Triple& TargetTriple
llvm::StringRef SysRoot

const clang::driver::Multilib& getMultilib() const

Declared at: clang/include/clang/Driver/ToolChain.h:274

const clang::driver::MultilibSet& getMultilibs()
    const

Declared at: clang/include/clang/Driver/ToolChain.h:272

llvm::StringRef getOS() const

Declared at: clang/include/clang/Driver/ToolChain.h:247

virtual llvm::StringRef getOSLibName() const

Declared at: clang/include/clang/Driver/ToolChain.h:488

clang::driver::Tool* getOffloadBundler() const

Declared at: clang/include/clang/Driver/ToolChain.h:164

clang::driver::Tool* getOffloadPackager() const

Declared at: clang/include/clang/Driver/ToolChain.h:166

clang::driver::Tool* getOffloadWrapper() const

Declared at: clang/include/clang/Driver/ToolChain.h:165

static llvm::Triple getOpenMPTriple(
    llvm::StringRef TripleStr)

Declared at: clang/include/clang/Driver/ToolChain.h:748

Parameters

llvm::StringRef TripleStr

llvm::StringRef getPlatform() const

Declared at: clang/include/clang/Driver/ToolChain.h:246

const clang::driver::ToolChain::path_list&
getProgramPaths() const

Declared at: clang/include/clang/Driver/ToolChain.h:270

clang::driver::ToolChain::path_list&
getProgramPaths()

Declared at: clang/include/clang/Driver/ToolChain.h:269

const llvm::opt::Arg* getRTTIArg() const

Declared at: clang/include/clang/Driver/ToolChain.h:281

clang::driver::ToolChain::RTTIMode getRTTIMode()
    const

Declared at: clang/include/clang/Driver/ToolChain.h:284

clang::driver::ToolChain::path_list
getRuntimePaths() const

Declared at: clang/include/clang/Driver/ToolChain.h:478

clang::driver::SanitizerArgs getSanitizerArgs(
    const llvm::opt::ArgList& JobArgs) const

Declared at: clang/include/clang/Driver/ToolChain.h:276

Parameters

const llvm::opt::ArgList& JobArgs

clang::driver::Tool* getStaticLibTool() const

Declared at: clang/include/clang/Driver/ToolChain.h:161

clang::driver::ToolChain::path_list
getStdlibPaths() const

Declared at: clang/include/clang/Driver/ToolChain.h:481

virtual clang::SanitizerMask
getSupportedSanitizers() const

Description

Return sanitizers which are available in this toolchain.

Declared at: clang/include/clang/Driver/ToolChain.h:722

static clang::driver::ParsedClangName
getTargetAndModeFromProgramName(
    llvm::StringRef ProgName)

Description

Return any implicit target and/or mode flag for an invocation of the compiler driver as `ProgName`. For example, when called with i686-linux-android-g++, the first element of the return value will be set to `"i686-linux-android"` and the second will be set to "--driver-mode=g++"`. It is OK if the target name is not registered. In this case the return value contains false in the field TargetIsValid.

Declared at: clang/include/clang/Driver/ToolChain.h:300

Parameters

llvm::StringRef ProgName
The name the Clang driver was invoked with (from, e.g., argv[0]).

Returns

A structure of type ParsedClangName that contains the executable name parts.

virtual Optional<llvm::Triple>
getTargetVariantTriple() const

Declared at: clang/include/clang/Driver/ToolChain.h:742

virtual std::string getThreadModel() const

Description

getThreadModel() - Which thread model does this target use?

Declared at: clang/include/clang/Driver/ToolChain.h:573

virtual clang::driver::Tool* getTool(
    Action::ActionClass AC) const

Declared at: clang/include/clang/Driver/ToolChain.h:196

Parameters

Action::ActionClass AC

const llvm::Triple& getTriple() const

Declared at: clang/include/clang/Driver/ToolChain.h:230

std::string getTripleString() const

Declared at: clang/include/clang/Driver/ToolChain.h:253

llvm::vfs::FileSystem& getVFS() const

Declared at: clang/include/clang/Driver/ToolChain.h:229

const clang::driver::XRayArgs& getXRayArgs() const

Declared at: clang/include/clang/Driver/ToolChain.h:278

virtual bool hasBlocksRuntime() const

Description

hasBlocksRuntime - Given that the user is compiling with -fblocks, does this tool chain guarantee the existence of a blocks runtime? FIXME: this really belongs on some sort of DeploymentTarget abstraction

Declared at: clang/include/clang/Driver/ToolChain.h:610

virtual bool isCrossCompiling() const

Description

Returns true if the toolchain is targeting a non-native architecture.

Declared at: clang/include/clang/Driver/ToolChain.h:374

virtual bool isFastMathRuntimeAvailable(
    const llvm::opt::ArgList& Args,
    std::string& Path) const

Description

If a runtime library exists that sets global flags for unsafe floating point math, return true. This checks for presence of the -Ofast, -ffast-math or -funsafe-math flags.

Declared at: clang/include/clang/Driver/ToolChain.h:681

Parameters

const llvm::opt::ArgList& Args
std::string& Path

virtual bool isPICDefault() const

Description

Test whether this toolchain defaults to PIC.

Declared at: clang/include/clang/Driver/ToolChain.h:507

virtual bool isPICDefaultForced() const

Description

Tests whether this toolchain forces its default for PIC, PIE or non-PIC. If this returns true, any PIC related flags should be ignored and instead the results of \c isPICDefault() and \c isPIEDefault(const llvm::opt::ArgList &Args ) are used exclusively.

Declared at: clang/include/clang/Driver/ToolChain.h:516

virtual bool isPIEDefault(
    const llvm::opt::ArgList& Args) const

Description

Test whether this toolchain defaults to PIE.

Declared at: clang/include/clang/Driver/ToolChain.h:510

Parameters

const llvm::opt::ArgList& Args

virtual bool isThreadModelSupported(
    const llvm::StringRef Model) const

Description

isThreadModelSupported() - Does this target support a thread model?

Declared at: clang/include/clang/Driver/ToolChain.h:576

Parameters

const llvm::StringRef Model

static bool needsGCovInstrumentation(
    const llvm::opt::ArgList& Args)

Description

Returns true if gcov instrumentation (-fprofile-arcs or --coverage) is on.

Declared at: clang/include/clang/Driver/ToolChain.h:494

Parameters

const llvm::opt::ArgList& Args

static bool needsProfileRT(
    const llvm::opt::ArgList& Args)

Description

needsProfileRT - returns true if instrumentation profile is on.

Declared at: clang/include/clang/Driver/ToolChain.h:491

Parameters

const llvm::opt::ArgList& Args

virtual bool parseInlineAsmUsingAsmParser() const

Description

Check if the toolchain should use AsmParser to parse inlineAsm when integrated assembler is not default.

Declared at: clang/include/clang/Driver/ToolChain.h:411

virtual void printVerboseInfo(
    llvm::raw_ostream& OS) const

Description

Dispatch to the specific toolchain for verbose printing. This is used when handling the verbose option to print detailed, toolchain-specific information useful for understanding the behavior of the driver on a specific platform.

Declared at: clang/include/clang/Driver/ToolChain.h:368

Parameters

llvm::raw_ostream& OS

void setEffectiveTriple(llvm::Triple ET) const

Description

Set the toolchain's effective clang triple.

Declared at: clang/include/clang/Driver/ToolChain.h:176

Parameters

llvm::Triple ET

void setTripleEnvironment(
    llvm::Triple::EnvironmentType Env)

Declared at: clang/include/clang/Driver/ToolChain.h:191

Parameters

llvm::Triple::EnvironmentType Env

virtual bool supportsDebugInfoOption(
    const llvm::opt::Arg*) const

Description

Does this toolchain supports given debug info option or not.

Declared at: clang/include/clang/Driver/ToolChain.h:557

Parameters

const llvm::opt::Arg*

virtual bool useIntegratedAs() const

Description

Check if the toolchain should use the integrated assembler.

Declared at: clang/include/clang/Driver/ToolChain.h:404

virtual bool useIntegratedBackend() const

Description

Check if the toolchain should use the integrated backend.

Declared at: clang/include/clang/Driver/ToolChain.h:407

virtual bool useRelaxRelocations() const

Description

Check whether to enable x86 relax relocations by default.

Declared at: clang/include/clang/Driver/ToolChain.h:429

virtual ~ToolChain()

Description

@ }

Declared at: clang/include/clang/Driver/ToolChain.h:224