clang 17.0.0git
|
#include "clang/Driver/Driver.h"
#include "ToolChains/AIX.h"
#include "ToolChains/AMDGPU.h"
#include "ToolChains/AMDGPUOpenMP.h"
#include "ToolChains/AVR.h"
#include "ToolChains/Ananas.h"
#include "ToolChains/Arch/RISCV.h"
#include "ToolChains/BareMetal.h"
#include "ToolChains/CSKYToolChain.h"
#include "ToolChains/Clang.h"
#include "ToolChains/CloudABI.h"
#include "ToolChains/Contiki.h"
#include "ToolChains/CrossWindows.h"
#include "ToolChains/Cuda.h"
#include "ToolChains/Darwin.h"
#include "ToolChains/DragonFly.h"
#include "ToolChains/FreeBSD.h"
#include "ToolChains/Fuchsia.h"
#include "ToolChains/Gnu.h"
#include "ToolChains/HIPAMD.h"
#include "ToolChains/HIPSPV.h"
#include "ToolChains/HLSL.h"
#include "ToolChains/Haiku.h"
#include "ToolChains/Hexagon.h"
#include "ToolChains/Hurd.h"
#include "ToolChains/Lanai.h"
#include "ToolChains/Linux.h"
#include "ToolChains/MSP430.h"
#include "ToolChains/MSVC.h"
#include "ToolChains/MinGW.h"
#include "ToolChains/Minix.h"
#include "ToolChains/MipsLinux.h"
#include "ToolChains/Myriad.h"
#include "ToolChains/NaCl.h"
#include "ToolChains/NetBSD.h"
#include "ToolChains/OHOS.h"
#include "ToolChains/OpenBSD.h"
#include "ToolChains/PPCFreeBSD.h"
#include "ToolChains/PPCLinux.h"
#include "ToolChains/PS4CPU.h"
#include "ToolChains/RISCVToolchain.h"
#include "ToolChains/SPIRV.h"
#include "ToolChains/Solaris.h"
#include "ToolChains/TCE.h"
#include "ToolChains/VEToolchain.h"
#include "ToolChains/WebAssembly.h"
#include "ToolChains/XCore.h"
#include "ToolChains/ZOS.h"
#include "clang/Basic/TargetID.h"
#include "clang/Basic/Version.h"
#include "clang/Config/config.h"
#include "clang/Driver/Action.h"
#include "clang/Driver/Compilation.h"
#include "clang/Driver/DriverDiagnostic.h"
#include "clang/Driver/InputInfo.h"
#include "clang/Driver/Job.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/Phases.h"
#include "clang/Driver/SanitizerArgs.h"
#include "clang/Driver/Tool.h"
#include "clang/Driver/ToolChain.h"
#include "clang/Driver/Types.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/Config/llvm-config.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Option/Arg.h"
#include "llvm/Option/ArgList.h"
#include "llvm/Option/OptSpecifier.h"
#include "llvm/Option/OptTable.h"
#include "llvm/Option/Option.h"
#include "llvm/Support/CommandLine.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/ExitCodes.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/MD5.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/Program.h"
#include "llvm/Support/StringSaver.h"
#include "llvm/Support/VirtualFileSystem.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/TargetParser/Host.h"
#include <cstdlib>
#include <map>
#include <memory>
#include <optional>
#include <utility>
Go to the source code of this file.
Enumerations | |
enum | { TopLevelAction = 0 , HeadSibAction = 1 , OtherSibAction = 2 } |
Functions | |
static std::optional< llvm::Triple > | getOffloadTargetTriple (const Driver &D, const ArgList &Args) |
static std::optional< llvm::Triple > | getNVIDIAOffloadTargetTriple (const Driver &D, const ArgList &Args, const llvm::Triple &HostTriple) |
static std::optional< llvm::Triple > | getHIPOffloadTargetTriple (const Driver &D, const ArgList &Args) |
static Arg * | MakeInputArg (DerivedArgList &Args, const OptTable &Opts, StringRef Value, bool Claim=true) |
static llvm::Triple | computeTargetTriple (const Driver &D, StringRef TargetTriple, const ArgList &Args, StringRef DarwinArchName="") |
Compute target triple from args. | |
static driver::LTOKind | parseLTOMode (Driver &D, const llvm::opt::ArgList &Args, OptSpecifier OptEq, OptSpecifier OptNeg) |
static void | appendOneArg (InputArgList &Args, const Arg *Opt, const Arg *BaseArg) |
static void | printArgList (raw_ostream &OS, const llvm::opt::ArgList &Args) |
static void | PrintDiagnosticCategories (raw_ostream &OS) |
PrintDiagnosticCategories - Implement the –print-diagnostic-categories option. | |
static unsigned | PrintActions1 (const Compilation &C, Action *A, std::map< Action *, unsigned > &Ids, Twine Indent={}, int Kind=TopLevelAction) |
static bool | ContainsCompileOrAssembleAction (const Action *A) |
Check whether the given input tree contains any compilation or assembly actions. | |
static types::ID | CXXHeaderUnitType (ModuleHeaderMode HM) |
static StringRef | getCanonicalArchString (Compilation &C, const llvm::opt::DerivedArgList &Args, StringRef ArchStr, const llvm::Triple &Triple, bool SuppressError=false) |
Returns the canonical name for the offloading architecture when using a HIP or CUDA architecture. | |
static std::optional< std::pair< llvm::StringRef, llvm::StringRef > > | getConflictOffloadArchCombination (const llvm::DenseSet< StringRef > &Archs, Action::OffloadKind Kind) |
Checks if the set offloading architectures does not conflict. | |
static std::string | GetTriplePlusArchString (const ToolChain *TC, StringRef BoundArch, Action::OffloadKind OffloadKind) |
Return a string that uniquely identifies the result of a job. | |
static void | handleTimeTrace (Compilation &C, const ArgList &Args, const JobAction *JA, const char *BaseInput, const InputInfo &Result) |
static const char * | MakeCLOutputFilename (const ArgList &Args, StringRef ArgValue, StringRef BaseName, types::ID FileType) |
Create output filename based on ArgValue, which could either be a full filename, filename without extension, or a directory. | |
static bool | HasPreprocessOutput (const Action &JA) |
static const char * | GetModuleOutputPath (Compilation &C, const JobAction &JA, const char *BaseInput) |
static bool | ScanDirForExecutable (SmallString< 128 > &Dir, StringRef Name) |
Variables | |
static const char | BugReporMsg [] |
anonymous enum |
Enumerator | |
---|---|
TopLevelAction | |
HeadSibAction | |
OtherSibAction |
Definition at line 2251 of file Driver.cpp.
|
static |
Definition at line 980 of file Driver.cpp.
Referenced by clang::driver::Driver::BuildCompilation().
|
static |
Compute target triple from args.
This routine provides the logic to compute a target triple from various args passed to the driver and the default triple string.
Definition at line 529 of file Driver.cpp.
References clang::driver::Driver::Diag(), clang::driver::toolchains::MinGW::fixTripleArch(), clang::driver::tools::riscv::getRISCVArch(), clang::driver::tools::darwin::setTripleTypeForMachOArchName(), and clang::Target.
Referenced by clang::driver::Driver::BuildCompilation().
Check whether the given input tree contains any compilation or assembly actions.
Definition at line 2355 of file Driver.cpp.
References ContainsCompileOrAssembleAction(), and clang::driver::Action::inputs().
Referenced by clang::driver::Driver::BuildUniversalActions(), and ContainsCompileOrAssembleAction().
|
static |
Definition at line 2532 of file Driver.cpp.
References clang::driver::HeaderMode_Default, clang::driver::HeaderMode_None, clang::driver::HeaderMode_System, and clang::driver::HeaderMode_User.
Referenced by clang::driver::Driver::BuildInputs().
|
static |
Returns the canonical name for the offloading architecture when using a HIP or CUDA architecture.
Definition at line 4259 of file Driver.cpp.
References clang::C, clang::CudaArchToString(), clang::getCanonicalTargetID(), getHIPOffloadTargetTriple(), clang::getProcessorFromTargetID(), clang::IsAMDGpuArch(), clang::IsNVIDIAGpuArch(), clang::parseTargetID(), clang::StringToCudaArch(), and clang::UNKNOWN.
Referenced by clang::driver::Driver::getOffloadArchs().
|
static |
Checks if the set offloading architectures does not conflict.
Returns the incompatible pair if a conflict occurs.
Definition at line 4303 of file Driver.cpp.
References clang::getConflictTargetIDCombination(), and clang::driver::Action::OFK_HIP.
Referenced by clang::driver::Driver::getOffloadArchs().
|
static |
Definition at line 150 of file Driver.cpp.
References clang::driver::Driver::Diag(), and getOffloadTargetTriple().
Referenced by clang::driver::Driver::CreateOffloadingDeviceToolChains(), and getCanonicalArchString().
|
static |
Definition at line 5659 of file Driver.cpp.
References clang::C, clang::driver::Action::getType(), and clang::driver::types::getTypeTempSuffix().
Referenced by clang::driver::Driver::GetNamedOutputPath().
|
static |
Definition at line 132 of file Driver.cpp.
References clang::driver::Driver::Diag(), and getOffloadTargetTriple().
Referenced by clang::driver::Driver::CreateOffloadingDeviceToolChains().
|
static |
Definition at line 112 of file Driver.cpp.
References clang::driver::Driver::Diag().
Referenced by getHIPOffloadTargetTriple(), and getNVIDIAOffloadTargetTriple().
|
static |
Return a string that uniquely identifies the result of a job.
The bound arch is not necessarily represented in the toolchain's triple – for example, armv7 and armv7s both map to the same triple – so we need both in our map. Also, we need to add the offloading device kind, as the same tool chain can be used for host and device for some programming models, e.g. OpenMP.
Definition at line 5210 of file Driver.cpp.
References clang::driver::Action::GetOffloadKindName(), and clang::driver::ToolChain::getTriple().
Referenced by clang::driver::Driver::BuildJobsForAction().
|
static |
Definition at line 5242 of file Driver.cpp.
References clang::C, and clang::Result.
Definition at line 5598 of file Driver.cpp.
References clang::driver::Action::getInputs(), and HasPreprocessOutput().
Referenced by clang::driver::Driver::GetNamedOutputPath(), and HasPreprocessOutput().
|
static |
Create output filename based on ArgValue, which could either be a full filename, filename without extension, or a directory.
If ArgValue does not provide a filename, then use BaseName, and use the extension suitable for FileType.
Definition at line 5569 of file Driver.cpp.
References Filename, and clang::driver::types::getTypeTempSuffix().
Referenced by clang::driver::Driver::GetNamedOutputPath().
|
static |
Definition at line 411 of file Driver.cpp.
Referenced by clang::driver::Driver::BuildInputs().
|
static |
Definition at line 707 of file Driver.cpp.
References clang::driver::Driver::Diag(), clang::driver::LTOK_Full, clang::driver::LTOK_None, clang::driver::LTOK_Thin, and clang::driver::LTOK_Unknown.
|
static |
Definition at line 2260 of file Driver.cpp.
Referenced by clang::driver::Driver::PrintActions().
|
static |
Definition at line 1471 of file Driver.cpp.
Referenced by clang::driver::Driver::generateCompilationDiagnostics().
|
static |
PrintDiagnosticCategories - Implement the –print-diagnostic-categories option.
Definition at line 1966 of file Driver.cpp.
References clang::DiagnosticIDs::getCategoryNameFromID(), clang::DiagnosticIDs::getNumberOfCategories(), and max().
Referenced by clang::driver::Driver::HandleImmediateArgs().
|
static |
Definition at line 5977 of file Driver.cpp.
Referenced by clang::driver::Driver::GetProgramPath().
|
static |
Definition at line 1579 of file Driver.cpp.
Referenced by clang::driver::Driver::generateCompilationDiagnostics().