clang 22.0.0git
ToolChain.cpp File Reference
#include "clang/Driver/ToolChain.h"
#include "ToolChains/Arch/AArch64.h"
#include "ToolChains/Arch/ARM.h"
#include "ToolChains/Arch/RISCV.h"
#include "ToolChains/Clang.h"
#include "ToolChains/Flang.h"
#include "ToolChains/InterfaceStubs.h"
#include "clang/Basic/ObjCRuntime.h"
#include "clang/Basic/Sanitizers.h"
#include "clang/Config/config.h"
#include "clang/Driver/Action.h"
#include "clang/Driver/CommonArgs.h"
#include "clang/Driver/Driver.h"
#include "clang/Driver/InputInfo.h"
#include "clang/Driver/Job.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "clang/Driver/XRayArgs.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/MC/MCTargetOptions.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Option/Arg.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Option/OptTable.h"
#include "llvm/Option/Option.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/FileUtilities.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/VersionTuple.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/TargetParser/AArch64TargetParser.h"
#include "llvm/TargetParser/RISCVISAInfo.h"
#include "llvm/TargetParser/TargetParser.h"
#include "llvm/TargetParser/Triple.h"
#include <cassert>
#include <cstddef>
#include <cstring>
#include <string>
#include "llvm/TargetParser/ARMTargetParser.def"

Go to the source code of this file.

Macros

#define ARM_FPU(NAME, KIND, VERSION, NEON_SUPPORT, RESTRICTION)

Functions

static llvm::opt::Arg * GetRTTIArgument (const ArgList &Args)
static ToolChain::RTTIMode CalculateRTTIMode (const ArgList &Args, const llvm::Triple &Triple, const Arg *CachedRTTIArg)
static ToolChain::ExceptionsMode CalculateExceptionsMode (const ArgList &Args)
static void processMultilibCustomFlags (Multilib::flags_list &List, const llvm::opt::ArgList &Args)
static void getAArch64MultilibFlags (const Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args, Multilib::flags_list &Result)
static void getARMMultilibFlags (const Driver &D, const llvm::Triple &Triple, llvm::Reloc::Model RelocationModel, const llvm::opt::ArgList &Args, Multilib::flags_list &Result)
static void getRISCVMultilibFlags (const Driver &D, const llvm::Triple &Triple, const llvm::opt::ArgList &Args, Multilib::flags_list &Result)
static const DriverSuffix * FindDriverSuffix (StringRef ProgName, size_t &Pos)
static std::string normalizeProgramName (llvm::StringRef Argv0)
 Normalize the program name from argv[0] by stripping the file extension if present and lower-casing the string on Windows.
static const DriverSuffix * parseDriverSuffix (StringRef ProgName, size_t &Pos)
static StringRef getArchNameForCompilerRTLib (const ToolChain &TC, const ArgList &Args)
static VersionTuple separateMSVCFullVersion (unsigned Version)

Macro Definition Documentation

◆ ARM_FPU

#define ARM_FPU ( NAME,
KIND,
VERSION,
NEON_SUPPORT,
RESTRICTION )
Value:
case llvm::ARM::KIND: \
Result.push_back("-mfpu=" NAME); \
break;

Function Documentation

◆ CalculateExceptionsMode()

ToolChain::ExceptionsMode CalculateExceptionsMode ( const ArgList & Args)
static

◆ CalculateRTTIMode()

ToolChain::RTTIMode CalculateRTTIMode ( const ArgList & Args,
const llvm::Triple & Triple,
const Arg * CachedRTTIArg )
static

◆ FindDriverSuffix()

const DriverSuffix * FindDriverSuffix ( StringRef ProgName,
size_t & Pos )
static

Definition at line 424 of file ToolChain.cpp.

Referenced by parseDriverSuffix().

◆ getAArch64MultilibFlags()

void getAArch64MultilibFlags ( const Driver & D,
const llvm::Triple & Triple,
const llvm::opt::ArgList & Args,
Multilib::flags_list & Result )
static

◆ getArchNameForCompilerRTLib()

StringRef getArchNameForCompilerRTLib ( const ToolChain & TC,
const ArgList & Args )
static

◆ getARMMultilibFlags()

void getARMMultilibFlags ( const Driver & D,
const llvm::Triple & Triple,
llvm::Reloc::Model RelocationModel,
const llvm::opt::ArgList & Args,
Multilib::flags_list & Result )
static

◆ getRISCVMultilibFlags()

void getRISCVMultilibFlags ( const Driver & D,
const llvm::Triple & Triple,
const llvm::opt::ArgList & Args,
Multilib::flags_list & Result )
static

◆ GetRTTIArgument()

llvm::opt::Arg * GetRTTIArgument ( const ArgList & Args)
static

Definition at line 60 of file ToolChain.cpp.

Referenced by clang::driver::ToolChain::ToolChain().

◆ normalizeProgramName()

std::string normalizeProgramName ( llvm::StringRef Argv0)
static

Normalize the program name from argv[0] by stripping the file extension if present and lower-casing the string on Windows.

Definition at line 460 of file ToolChain.cpp.

Referenced by clang::driver::ToolChain::getTargetAndModeFromProgramName().

◆ parseDriverSuffix()

const DriverSuffix * parseDriverSuffix ( StringRef ProgName,
size_t & Pos )
static

◆ processMultilibCustomFlags()

void processMultilibCustomFlags ( Multilib::flags_list & List,
const llvm::opt::ArgList & Args )
static

Definition at line 161 of file ToolChain.cpp.

Referenced by getAArch64MultilibFlags(), and getARMMultilibFlags().

◆ separateMSVCFullVersion()

VersionTuple separateMSVCFullVersion ( unsigned Version)
static

Definition at line 1660 of file ToolChain.cpp.

Referenced by clang::driver::ToolChain::computeMSVCVersion().