clang  3.7.0
Classes | Enumerations | Functions
Tools.cpp File Reference
#include "Tools.h"
#include "InputInfo.h"
#include "ToolChains.h"
#include "clang/Basic/CharInfo.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/Job.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "clang/Driver/ToolChain.h"
#include "clang/Driver/Util.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Option/Arg.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Option/Option.h"
#include "llvm/Support/TargetParser.h"
#include "llvm/Support/Compression.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/Program.h"
#include "llvm/Support/raw_ostream.h"
Include dependency graph for Tools.cpp:

Go to the source code of this file.

Classes

struct  EHFlags
 

Enumerations

enum  OpenMPRuntimeKind
 

Functions

static void addAssemblerKPIC (const ArgList &Args, ArgStringList &CmdArgs)
 
static void CheckPreprocessingOptions (const Driver &D, const ArgList &Args)
 
static void CheckCodeGenerationOptions (const Driver &D, const ArgList &Args)
 
static void EscapeSpacesAndBackslashes (const char *Arg, SmallVectorImpl< char > &Res)
 
static void QuoteTarget (StringRef Target, SmallVectorImpl< char > &Res)
 
static void addDirectoryList (const ArgList &Args, ArgStringList &CmdArgs, const char *ArgName, const char *EnvVar)
 
static void AddLinkerInputs (const ToolChain &TC, const InputInfoList &Inputs, const ArgList &Args, ArgStringList &CmdArgs)
 
static bool isObjCAutoRefCount (const ArgList &Args)
 Determine whether Objective-C automated reference counting is enabled. More...
 
static bool isObjCRuntimeLinked (const ArgList &Args)
 Determine whether we are linking the ObjC runtime. More...
 
static bool forwardToGCC (const Option &O)
 
static bool isSignedCharDefault (const llvm::Triple &Triple)
 
static bool isNoCommonDefault (const llvm::Triple &Triple)
 
static int getARMSubArchVersionNumber (const llvm::Triple &Triple)
 
static bool isARMMProfile (const llvm::Triple &Triple)
 
static void getARMArchCPUFromArgs (const ArgList &Args, llvm::StringRef &Arch, llvm::StringRef &CPU, bool FromAs=false)
 
static void getARMHWDivFeatures (const Driver &D, const Arg *A, const ArgList &Args, StringRef HWDiv, std::vector< const char * > &Features)
 
static void getARMFPUFeatures (const Driver &D, const Arg *A, const ArgList &Args, StringRef FPU, std::vector< const char * > &Features)
 
static void checkARMArchName (const Driver &D, const Arg *A, const ArgList &Args, llvm::StringRef ArchName, const llvm::Triple &Triple)
 
static void checkARMCPUName (const Driver &D, const Arg *A, const ArgList &Args, llvm::StringRef CPUName, llvm::StringRef ArchName, const llvm::Triple &Triple)
 
static void getARMTargetFeatures (const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector< const char * > &Features, bool ForAS)
 
static std::string getAArch64TargetCPU (const ArgList &Args)
 
static StringRef getGnuCompatibleMipsABIName (StringRef ABI)
 
static StringRef getMipsFloatABI (const Driver &D, const ArgList &Args)
 
static void AddTargetFeature (const ArgList &Args, std::vector< const char * > &Features, OptSpecifier OnOpt, OptSpecifier OffOpt, StringRef FeatureName)
 
static void getMIPSTargetFeatures (const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector< const char * > &Features)
 
static std::string getPPCTargetCPU (const ArgList &Args)
 getPPCTargetCPU - Get the (LLVM) name of the PowerPC cpu we are targeting. More...
 
static void getPPCTargetFeatures (const ArgList &Args, std::vector< const char * > &Features)
 
static std::string getR600TargetGPU (const ArgList &Args)
 Get the (LLVM) name of the R600 gpu we are targeting. More...
 
static const char * getSystemZTargetCPU (const ArgList &Args)
 
static void getSystemZTargetFeatures (const ArgList &Args, std::vector< const char * > &Features)
 
static const char * getX86TargetCPU (const ArgList &Args, const llvm::Triple &Triple)
 
static std::string getCPUName (const ArgList &Args, const llvm::Triple &T, bool FromAs=false)
 
static void AddGoldPlugin (const ToolChain &ToolChain, const ArgList &Args, ArgStringList &CmdArgs)
 
static bool getRefinementStep (const StringRef &In, const Driver &D, const Arg &A, size_t &Position)
 
static void ParseMRecip (const Driver &D, const ArgList &Args, ArgStringList &OutStrings)
 The -mrecip flag requires processing of many optional parameters. More...
 
static void getX86TargetFeatures (const Driver &D, const llvm::Triple &Triple, const ArgList &Args, std::vector< const char * > &Features)
 
static bool DecodeAArch64Features (const Driver &D, StringRef text, std::vector< const char * > &Features)
 
static bool DecodeAArch64Mcpu (const Driver &D, StringRef Mcpu, StringRef &CPU, std::vector< const char * > &Features)
 
static bool getAArch64ArchFeaturesFromMarch (const Driver &D, StringRef March, const ArgList &Args, std::vector< const char * > &Features)
 
static bool getAArch64ArchFeaturesFromMcpu (const Driver &D, StringRef Mcpu, const ArgList &Args, std::vector< const char * > &Features)
 
static bool getAArch64MicroArchFeaturesFromMtune (const Driver &D, StringRef Mtune, const ArgList &Args, std::vector< const char * > &Features)
 
static bool getAArch64MicroArchFeaturesFromMcpu (const Driver &D, StringRef Mcpu, const ArgList &Args, std::vector< const char * > &Features)
 
static void getAArch64TargetFeatures (const Driver &D, const ArgList &Args, std::vector< const char * > &Features)
 
static void getTargetFeatures (const Driver &D, const llvm::Triple &Triple, const ArgList &Args, ArgStringList &CmdArgs, bool ForAS)
 
static bool shouldUseExceptionTablesForObjCExceptions (const ObjCRuntime &runtime, const llvm::Triple &Triple)
 
static void addExceptionArgs (const ArgList &Args, types::ID InputType, const ToolChain &TC, bool KernelOrKext, const ObjCRuntime &objcRuntime, ArgStringList &CmdArgs)
 
static bool ShouldDisableAutolink (const ArgList &Args, const ToolChain &TC)
 
static bool ShouldDisableDwarfDirectory (const ArgList &Args, const ToolChain &TC)
 
static bool ContainsCompileAction (const Action *A)
 Check whether the given input tree contains any compilation actions. More...
 
static bool UseRelaxAll (Compilation &C, const ArgList &Args)
 Check if -relax-all should be passed to the internal assembler. This is done by default when compiling non-assembler source with -O0. More...
 
static void CollectArgsForIntegratedAssembler (Compilation &C, const ArgList &Args, ArgStringList &CmdArgs, const Driver &D)
 
static StringRef getArchNameForCompilerRTLib (const ToolChain &TC)
 
static SmallString< 128 > getCompilerRTLibDir (const ToolChain &TC)
 
static void addClangRT (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs)
 
static void addProfileRT (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs)
 
static OpenMPRuntimeKind getOpenMPRuntime (const ToolChain &TC, const ArgList &Args)
 Compute the desired OpenMP runtime from the flag provided. More...
 
static void addSanitizerRuntime (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, StringRef Sanitizer, bool IsShared)
 
static bool addSanitizerDynamicList (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs, StringRef Sanitizer)
 
static void linkSanitizerRuntimeDeps (const ToolChain &TC, ArgStringList &CmdArgs)
 
static void collectSanitizerRuntimes (const ToolChain &TC, const ArgList &Args, SmallVectorImpl< StringRef > &SharedRuntimes, SmallVectorImpl< StringRef > &StaticRuntimes, SmallVectorImpl< StringRef > &HelperStaticRuntimes)
 
static bool addSanitizerRuntimes (const ToolChain &TC, const ArgList &Args, ArgStringList &CmdArgs)
 
static bool areOptimizationsEnabled (const ArgList &Args)
 
static bool shouldUseFramePointerForTarget (const ArgList &Args, const llvm::Triple &Triple)
 
static bool shouldUseFramePointer (const ArgList &Args, const llvm::Triple &Triple)
 
static bool shouldUseLeafFramePointer (const ArgList &Args, const llvm::Triple &Triple)
 
static void addDebugCompDirArg (const ArgList &Args, ArgStringList &CmdArgs)
 Add a CC1 option to specify the debug compilation directory. More...
 
static const char * SplitDebugName (const ArgList &Args, const InputInfo &Input)
 
static void SplitDebugInfo (const ToolChain &TC, Compilation &C, const Tool &T, const JobAction &JA, const ArgList &Args, const InputInfo &Output, const char *OutFile)
 
static bool shouldEnableVectorizerAtOLevel (const ArgList &Args, bool isSlpVec)
 Vectorize at all optimization levels greater than 1 except for -Oz. For -Oz the loop vectorizer is disable, while the slp vectorizer is enabled. More...
 
static void addDashXForInput (const ArgList &Args, const InputInfo &Input, ArgStringList &CmdArgs)
 Add -x lang to CmdArgs for Input. More...
 
static VersionTuple getMSCompatibilityVersion (unsigned Version)
 
static void claimNoWarnArgs (const ArgList &Args)
 
static void appendUserToPath (SmallVectorImpl< char > &Result)
 
static void addPGOAndCoverageFlags (Compilation &C, const Driver &D, const InputInfo &Output, const ArgList &Args, ArgStringList &CmdArgs)
 
static bool maybeConsumeDash (const std::string &EH, size_t &I)
 
static EHFlags parseClangCLEHFlags (const Driver &D, const ArgList &Args)
 
static void constructHexagonLinkArgs (Compilation &C, const JobAction &JA, const toolchains::Hexagon_TC &ToolChain, const InputInfo &Output, const InputInfoList &Inputs, const ArgList &Args, ArgStringList &CmdArgs, const char *LinkingOutput)
 
static void AddLibgcc (const llvm::Triple &Triple, const Driver &D, ArgStringList &CmdArgs, const ArgList &Args)
 
static std::string getLinuxDynamicLinker (const ArgList &Args, const toolchains::Linux &ToolChain)
 
static void AddRunTimeLibs (const ToolChain &TC, const Driver &D, ArgStringList &CmdArgs, const ArgList &Args)
 
static const char * getLDMOption (const llvm::Triple &T, const ArgList &Args)
 
static std::string FindVisualStudioExecutable (const ToolChain &TC, const char *Exe, const char *ClangProgramPath)
 

Enumeration Type Documentation

Definition at line 2415 of file Tools.cpp.

Function Documentation

static void addAssemblerKPIC ( const ArgList &  Args,
ArgStringList &  CmdArgs 
)
static
static void addClangRT ( const ToolChain TC,
const ArgList &  Args,
ArgStringList &  CmdArgs 
)
static
static void addDashXForInput ( const ArgList &  Args,
const InputInfo Input,
ArgStringList &  CmdArgs 
)
static

Add -x lang to CmdArgs for Input.

Definition at line 2722 of file Tools.cpp.

References clang::driver::InputInfo::getType(), and clang::driver::types::getTypeName().

Referenced by clang::driver::tools::Clang::ConstructJob().

static void addDebugCompDirArg ( const ArgList &  Args,
ArgStringList &  CmdArgs 
)
static

Add a CC1 option to specify the debug compilation directory.

Definition at line 2641 of file Tools.cpp.

Referenced by clang::driver::tools::Clang::ConstructJob(), and clang::driver::tools::ClangAs::ConstructJob().

static void addDirectoryList ( const ArgList &  Args,
ArgStringList &  CmdArgs,
const char *  ArgName,
const char *  EnvVar 
)
static

Definition at line 139 of file Tools.cpp.

Referenced by AddLinkerInputs().

static void addExceptionArgs ( const ArgList &  Args,
types::ID  InputType,
const ToolChain TC,
bool  KernelOrKext,
const ObjCRuntime objcRuntime,
ArgStringList &  CmdArgs 
)
static

Adds exception related arguments to the driver command arguments. There's a master 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 2149 of file Tools.cpp.

References clang::driver::Driver::Diag(), clang::driver::ToolChain::getDriver(), clang::driver::ToolChain::getRTTIArg(), clang::driver::ToolChain::getRTTIMode(), clang::driver::ToolChain::getTriple(), clang::driver::types::isCXX(), clang::driver::types::isObjC(), clang::driver::ToolChain::RM_DisabledExplicitly, clang::driver::ToolChain::RM_DisabledImplicitly, clang::driver::ToolChain::RM_EnabledImplicitly, and shouldUseExceptionTablesForObjCExceptions().

Referenced by clang::driver::tools::Clang::ConstructJob().

static void AddGoldPlugin ( const ToolChain ToolChain,
const ArgList &  Args,
ArgStringList &  CmdArgs 
)
static
static void AddLibgcc ( const llvm::Triple &  Triple,
const Driver D,
ArgStringList &  CmdArgs,
const ArgList &  Args 
)
static

Definition at line 7918 of file Tools.cpp.

References clang::driver::Driver::CCCIsCXX().

Referenced by AddRunTimeLibs().

static void AddLinkerInputs ( const ToolChain TC,
const InputInfoList Inputs,
const ArgList &  Args,
ArgStringList &  CmdArgs 
)
static
static void addPGOAndCoverageFlags ( Compilation C,
const Driver D,
const InputInfo Output,
const ArgList &  Args,
ArgStringList &  CmdArgs 
)
static
static void addProfileRT ( const ToolChain TC,
const ArgList &  Args,
ArgStringList &  CmdArgs 
)
static
static void AddRunTimeLibs ( const ToolChain TC,
const Driver D,
ArgStringList &  CmdArgs,
const ArgList &  Args 
)
static
static bool addSanitizerDynamicList ( const ToolChain TC,
const ArgList &  Args,
ArgStringList &  CmdArgs,
StringRef  Sanitizer 
)
static

Definition at line 2477 of file Tools.cpp.

References clang::driver::tools::getCompilerRT().

Referenced by addSanitizerRuntimes().

static void addSanitizerRuntime ( const ToolChain TC,
const ArgList &  Args,
ArgStringList &  CmdArgs,
StringRef  Sanitizer,
bool  IsShared 
)
static

Definition at line 2463 of file Tools.cpp.

References clang::driver::tools::getCompilerRT().

Referenced by addSanitizerRuntimes().

static bool addSanitizerRuntimes ( const ToolChain TC,
const ArgList &  Args,
ArgStringList &  CmdArgs 
)
static
static void AddTargetFeature ( const ArgList &  Args,
std::vector< const char * > &  Features,
OptSpecifier  OnOpt,
OptSpecifier  OffOpt,
StringRef  FeatureName 
)
static

Definition at line 1129 of file Tools.cpp.

Referenced by getMIPSTargetFeatures(), and getPPCTargetFeatures().

static void appendUserToPath ( SmallVectorImpl< char > &  Result)
static

Definition at line 2759 of file Tools.cpp.

References clang::isAlphanumeric(), and P.

Referenced by clang::driver::tools::Clang::ConstructJob().

static bool areOptimizationsEnabled ( const ArgList &  Args)
static

Definition at line 2574 of file Tools.cpp.

Referenced by shouldUseFramePointerForTarget().

static void checkARMArchName ( const Driver D,
const Arg *  A,
const ArgList &  Args,
llvm::StringRef  ArchName,
const llvm::Triple &  Triple 
)
static
static void checkARMCPUName ( const Driver D,
const Arg *  A,
const ArgList &  Args,
llvm::StringRef  CPUName,
llvm::StringRef  ArchName,
const llvm::Triple &  Triple 
)
static
static void CheckCodeGenerationOptions ( const Driver D,
const ArgList &  Args 
)
static

CheckCodeGenerationOptions - Perform some validation of code generation arguments that is shared with gcc.

Definition at line 84 of file Tools.cpp.

References clang::driver::Driver::Diag().

Referenced by clang::driver::tools::Clang::ConstructJob().

static void CheckPreprocessingOptions ( const Driver D,
const ArgList &  Args 
)
static

CheckPreprocessingOptions - Perform some validation of preprocessing arguments that is shared with gcc.

Definition at line 71 of file Tools.cpp.

References clang::driver::Driver::CCCIsCPP(), clang::driver::Driver::Diag(), and clang::driver::Driver::IsCLMode().

static void claimNoWarnArgs ( const ArgList &  Args)
static
static void CollectArgsForIntegratedAssembler ( Compilation C,
const ArgList &  Args,
ArgStringList &  CmdArgs,
const Driver D 
)
static
static void collectSanitizerRuntimes ( const ToolChain TC,
const ArgList &  Args,
SmallVectorImpl< StringRef > &  SharedRuntimes,
SmallVectorImpl< StringRef > &  StaticRuntimes,
SmallVectorImpl< StringRef > &  HelperStaticRuntimes 
)
static
static void constructHexagonLinkArgs ( Compilation C,
const JobAction JA,
const toolchains::Hexagon_TC ToolChain,
const InputInfo Output,
const InputInfoList Inputs,
const ArgList &  Args,
ArgStringList &  CmdArgs,
const char *  LinkingOutput 
)
static
static bool ContainsCompileAction ( const Action A)
static

Check whether the given input tree contains any compilation actions.

Definition at line 2242 of file Tools.cpp.

Referenced by UseRelaxAll().

static bool DecodeAArch64Features ( const Driver D,
StringRef  text,
std::vector< const char * > &  Features 
)
static

Definition at line 1916 of file Tools.cpp.

References clang::driver::Driver::Diag().

Referenced by DecodeAArch64Mcpu(), and getAArch64ArchFeaturesFromMarch().

static bool DecodeAArch64Mcpu ( const Driver D,
StringRef  Mcpu,
StringRef &  CPU,
std::vector< const char * > &  Features 
)
static
static void EscapeSpacesAndBackslashes ( const char *  Arg,
SmallVectorImpl< char > &  Res 
)
static
static std::string FindVisualStudioExecutable ( const ToolChain TC,
const char *  Exe,
const char *  ClangProgramPath 
)
static
static bool forwardToGCC ( const Option &  O)
static
static bool getAArch64ArchFeaturesFromMarch ( const Driver D,
StringRef  March,
const ArgList &  Args,
std::vector< const char * > &  Features 
)
static

Definition at line 1966 of file Tools.cpp.

References DecodeAArch64Features().

Referenced by getAArch64TargetFeatures().

static bool getAArch64ArchFeaturesFromMcpu ( const Driver D,
StringRef  Mcpu,
const ArgList &  Args,
std::vector< const char * > &  Features 
)
static

Definition at line 1987 of file Tools.cpp.

References DecodeAArch64Mcpu().

Referenced by getAArch64TargetFeatures().

static bool getAArch64MicroArchFeaturesFromMcpu ( const Driver D,
StringRef  Mcpu,
const ArgList &  Args,
std::vector< const char * > &  Features 
)
static

Definition at line 2013 of file Tools.cpp.

References DecodeAArch64Mcpu(), and getAArch64MicroArchFeaturesFromMtune().

Referenced by getAArch64TargetFeatures().

static bool getAArch64MicroArchFeaturesFromMtune ( const Driver D,
StringRef  Mtune,
const ArgList &  Args,
std::vector< const char * > &  Features 
)
static

Definition at line 1999 of file Tools.cpp.

Referenced by getAArch64MicroArchFeaturesFromMcpu(), and getAArch64TargetFeatures().

static std::string getAArch64TargetCPU ( const ArgList &  Args)
static

getAArch64TargetCPU - Get the (LLVM) name of the AArch64 cpu we are targeting.

Definition at line 934 of file Tools.cpp.

Referenced by getAArch64TargetFeatures(), and getCPUName().

static void getAArch64TargetFeatures ( const Driver D,
const ArgList &  Args,
std::vector< const char * > &  Features 
)
static
static StringRef getArchNameForCompilerRTLib ( const ToolChain TC)
static
static void getARMArchCPUFromArgs ( const ArgList &  Args,
llvm::StringRef &  Arch,
llvm::StringRef &  CPU,
bool  FromAs = false 
)
static

Definition at line 521 of file Tools.cpp.

Referenced by clang::driver::tools::netbsd::Assembler::ConstructJob(), and getCPUName().

static void getARMFPUFeatures ( const Driver D,
const Arg *  A,
const ArgList &  Args,
StringRef  FPU,
std::vector< const char * > &  Features 
)
static

Definition at line 562 of file Tools.cpp.

References clang::driver::Driver::Diag().

Referenced by getARMTargetFeatures().

static void getARMHWDivFeatures ( const Driver D,
const Arg *  A,
const ArgList &  Args,
StringRef  HWDiv,
std::vector< const char * > &  Features 
)
static

Definition at line 542 of file Tools.cpp.

References clang::driver::Driver::Diag().

Referenced by getARMTargetFeatures().

static int getARMSubArchVersionNumber ( const llvm::Triple &  Triple)
static

Definition at line 508 of file Tools.cpp.

static void getARMTargetFeatures ( const Driver D,
const llvm::Triple &  Triple,
const ArgList &  Args,
std::vector< const char * > &  Features,
bool  ForAS 
)
static
static SmallString<128> getCompilerRTLibDir ( const ToolChain TC)
static
static std::string getCPUName ( const ArgList &  Args,
const llvm::Triple &  T,
bool  FromAs = false 
)
static
static StringRef getGnuCompatibleMipsABIName ( StringRef  ABI)
static
static const char* getLDMOption ( const llvm::Triple &  T,
const ArgList &  Args 
)
static
static std::string getLinuxDynamicLinker ( const ArgList &  Args,
const toolchains::Linux ToolChain 
)
static
static StringRef getMipsFloatABI ( const Driver D,
const ArgList &  Args 
)
static
static void getMIPSTargetFeatures ( const Driver D,
const llvm::Triple &  Triple,
const ArgList &  Args,
std::vector< const char * > &  Features 
)
static
static VersionTuple getMSCompatibilityVersion ( unsigned  Version)
static

Definition at line 2736 of file Tools.cpp.

Referenced by clang::driver::tools::visualstudio::getMSVCVersion().

static OpenMPRuntimeKind getOpenMPRuntime ( const ToolChain TC,
const ArgList &  Args 
)
static
static std::string getPPCTargetCPU ( const ArgList &  Args)
static

getPPCTargetCPU - Get the (LLVM) name of the PowerPC cpu we are targeting.

Definition at line 1271 of file Tools.cpp.

Referenced by getCPUName().

static void getPPCTargetFeatures ( const ArgList &  Args,
std::vector< const char * > &  Features 
)
static

Definition at line 1334 of file Tools.cpp.

References AddTargetFeature().

Referenced by getTargetFeatures().

static std::string getR600TargetGPU ( const ArgList &  Args)
static

Get the (LLVM) name of the R600 gpu we are targeting.

Definition at line 1411 of file Tools.cpp.

Referenced by getCPUName().

static bool getRefinementStep ( const StringRef &  In,
const Driver D,
const Arg &  A,
size_t Position 
)
static

This is a helper function for validating the optional refinement step parameter in reciprocal argument strings. Return false if there is an error parsing the refinement step. Otherwise, return true and set the Position of the refinement step in the input string.

Definition at line 1656 of file Tools.cpp.

References clang::driver::Driver::Diag().

Referenced by ParseMRecip().

static const char* getSystemZTargetCPU ( const ArgList &  Args)
static
static void getSystemZTargetFeatures ( const ArgList &  Args,
std::vector< const char * > &  Features 
)
static

Definition at line 1456 of file Tools.cpp.

Referenced by getTargetFeatures().

static void getTargetFeatures ( const Driver D,
const llvm::Triple &  Triple,
const ArgList &  Args,
ArgStringList &  CmdArgs,
bool  ForAS 
)
static
static const char* getX86TargetCPU ( const ArgList &  Args,
const llvm::Triple &  Triple 
)
static

Definition at line 1474 of file Tools.cpp.

Referenced by getCPUName().

static void getX86TargetFeatures ( const Driver D,
const llvm::Triple &  Triple,
const ArgList &  Args,
std::vector< const char * > &  Features 
)
static

Definition at line 1783 of file Tools.cpp.

References clang::driver::Driver::Diag().

Referenced by getTargetFeatures().

static bool isARMMProfile ( const llvm::Triple &  Triple)
static

Definition at line 514 of file Tools.cpp.

static bool isNoCommonDefault ( const llvm::Triple &  Triple)
static

Definition at line 495 of file Tools.cpp.

Referenced by clang::driver::tools::Clang::ConstructJob().

static bool isObjCAutoRefCount ( const ArgList &  Args)
static

Determine whether Objective-C automated reference counting is enabled.

Definition at line 241 of file Tools.cpp.

Referenced by clang::driver::tools::Clang::ConstructJob(), and isObjCRuntimeLinked().

static bool isObjCRuntimeLinked ( const ArgList &  Args)
static

Determine whether we are linking the ObjC runtime.

Definition at line 246 of file Tools.cpp.

References isObjCAutoRefCount().

Referenced by clang::driver::tools::darwin::Linker::ConstructJob().

static bool isSignedCharDefault ( const llvm::Triple &  Triple)
static

Definition at line 466 of file Tools.cpp.

Referenced by clang::driver::tools::Clang::ConstructJob().

static void linkSanitizerRuntimeDeps ( const ToolChain TC,
ArgStringList &  CmdArgs 
)
static
static bool maybeConsumeDash ( const std::string &  EH,
size_t I 
)
static

Definition at line 5147 of file Tools.cpp.

Referenced by parseClangCLEHFlags().

static EHFlags parseClangCLEHFlags ( const Driver D,
const ArgList &  Args 
)
static

/EH controls whether to run destructor cleanups when exceptions are thrown. There are three modifiers:

  • s: Cleanup after "synchronous" exceptions, aka C++ exceptions.
  • a: Cleanup after "asynchronous" exceptions, aka structured exceptions. The 'a' modifier is unimplemented and fundamentally hard in LLVM IR.
  • c: Assume that extern "C" functions are implicitly noexcept. This modifier is an optimization, so we ignore it for now. The default is /EHs-c-, meaning cleanups are disabled.

Definition at line 5168 of file Tools.cpp.

References EHFlags::Asynch, clang::driver::Driver::Diag(), maybeConsumeDash(), EHFlags::NoExceptC, and EHFlags::Synch.

static void ParseMRecip ( const Driver D,
const ArgList &  Args,
ArgStringList &  OutStrings 
)
static

The -mrecip flag requires processing of many optional parameters.

Definition at line 1684 of file Tools.cpp.

References clang::driver::Driver::Diag(), and getRefinementStep().

Referenced by clang::driver::tools::Clang::ConstructJob().

static void QuoteTarget ( StringRef  Target,
SmallVectorImpl< char > &  Res 
)
static

Definition at line 113 of file Tools.cpp.

static bool ShouldDisableAutolink ( const ArgList &  Args,
const ToolChain TC 
)
static
static bool ShouldDisableDwarfDirectory ( const ArgList &  Args,
const ToolChain TC 
)
static
static bool shouldEnableVectorizerAtOLevel ( const ArgList &  Args,
bool  isSlpVec 
)
static

Vectorize at all optimization levels greater than 1 except for -Oz. For -Oz the loop vectorizer is disable, while the slp vectorizer is enabled.

Definition at line 2691 of file Tools.cpp.

References S.

Referenced by clang::driver::tools::Clang::ConstructJob().

static bool shouldUseExceptionTablesForObjCExceptions ( const ObjCRuntime runtime,
const llvm::Triple &  Triple 
)
static

Definition at line 2129 of file Tools.cpp.

References clang::ObjCRuntime::isNonFragile().

Referenced by addExceptionArgs().

static bool shouldUseFramePointer ( const ArgList &  Args,
const llvm::Triple &  Triple 
)
static

Definition at line 2619 of file Tools.cpp.

References shouldUseFramePointerForTarget().

Referenced by clang::driver::tools::Clang::ConstructJob().

static bool shouldUseFramePointerForTarget ( const ArgList &  Args,
const llvm::Triple &  Triple 
)
static

Definition at line 2582 of file Tools.cpp.

References areOptimizationsEnabled().

Referenced by shouldUseFramePointer(), and shouldUseLeafFramePointer().

static bool shouldUseLeafFramePointer ( const ArgList &  Args,
const llvm::Triple &  Triple 
)
static

Definition at line 2628 of file Tools.cpp.

References shouldUseFramePointerForTarget().

Referenced by clang::driver::tools::Clang::ConstructJob().

static void SplitDebugInfo ( const ToolChain TC,
Compilation C,
const Tool T,
const JobAction JA,
const ArgList &  Args,
const InputInfo Output,
const char *  OutFile 
)
static
static const char* SplitDebugName ( const ArgList &  Args,
const InputInfo Input 
)
static
static bool UseRelaxAll ( Compilation C,
const ArgList &  Args 
)
static

Check if -relax-all should be passed to the internal assembler. This is done by default when compiling non-assembler source with -O0.

Definition at line 2255 of file Tools.cpp.

References ContainsCompileAction(), and clang::driver::Compilation::getActions().

Referenced by CollectArgsForIntegratedAssembler().