clang  6.0.0svn
Functions
Driver.cpp File Reference
#include "clang/Driver/Driver.h"
#include "InputInfo.h"
#include "ToolChains/AMDGPU.h"
#include "ToolChains/AVR.h"
#include "ToolChains/Ananas.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/BareMetal.h"
#include "ToolChains/Haiku.h"
#include "ToolChains/Hexagon.h"
#include "ToolChains/Lanai.h"
#include "ToolChains/Linux.h"
#include "ToolChains/MinGW.h"
#include "ToolChains/Minix.h"
#include "ToolChains/MipsLinux.h"
#include "ToolChains/MSVC.h"
#include "ToolChains/Myriad.h"
#include "ToolChains/NaCl.h"
#include "ToolChains/NetBSD.h"
#include "ToolChains/OpenBSD.h"
#include "ToolChains/PS4CPU.h"
#include "ToolChains/Solaris.h"
#include "ToolChains/TCE.h"
#include "ToolChains/WebAssembly.h"
#include "ToolChains/XCore.h"
#include "clang/Basic/Version.h"
#include "clang/Basic/VirtualFileSystem.h"
#include "clang/Config/config.h"
#include "clang/Driver/Action.h"
#include "clang/Driver/Compilation.h"
#include "clang/Driver/DriverDiagnostic.h"
#include "clang/Driver/Job.h"
#include "clang/Driver/Options.h"
#include "clang/Driver/SanitizerArgs.h"
#include "clang/Driver/Tool.h"
#include "clang/Driver/ToolChain.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallSet.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSet.h"
#include "llvm/ADT/StringSwitch.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/ErrorHandling.h"
#include "llvm/Support/FileSystem.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Process.h"
#include "llvm/Support/Program.h"
#include "llvm/Support/TargetRegistry.h"
#include "llvm/Support/raw_ostream.h"
#include <map>
#include <memory>
#include <utility>

Go to the source code of this file.

Functions

static Arg * MakeInputArg (DerivedArgList &Args, OptTable &Opts, StringRef Value)
 
static llvm::Triple computeTargetTriple (const Driver &D, StringRef DefaultTargetTriple, const ArgList &Args, StringRef DarwinArchName="")
 Compute target triple from args. More...
 
static void printArgList (raw_ostream &OS, const llvm::opt::ArgList &Args)
 
static void PrintDiagnosticCategories (raw_ostream &OS)
 PrintDiagnosticCategories - Implement the –print-diagnostic-categories option. More...
 
static unsigned PrintActions1 (const Compilation &C, Action *A, std::map< Action *, unsigned > &Ids)
 
static bool ContainsCompileOrAssembleAction (const Action *A)
 Check whether the given input tree contains any compilation or assembly actions. More...
 
static bool DiagnoseInputExistence (const Driver &D, const DerivedArgList &Args, StringRef Value, types::ID Ty)
 Check that the file referenced by Value exists. More...
 
static std::string GetTriplePlusArchString (const ToolChain *TC, StringRef BoundArch, Action::OffloadKind OffloadKind)
 Return a string that uniquely identifies the result of a job. More...
 
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. More...
 
static bool ScanDirForExecutable (SmallString< 128 > &Dir, ArrayRef< std::string > Names)
 

Function Documentation

◆ computeTargetTriple()

static llvm::Triple computeTargetTriple ( const Driver D,
StringRef  DefaultTargetTriple,
const ArgList &  Args,
StringRef  DarwinArchName = "" 
)
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 360 of file Driver.cpp.

References clang::driver::Driver::Diag(), clang::driver::LTOK_Full, clang::driver::LTOK_None, clang::driver::LTOK_Thin, clang::driver::LTOK_Unknown, normalize(), and clang::driver::tools::darwin::setTripleTypeForMachOArchName().

Referenced by clang::driver::Driver::BuildCompilation().

◆ ContainsCompileOrAssembleAction()

static bool ContainsCompileOrAssembleAction ( const Action A)
static

Check whether the given input tree contains any compilation or assembly actions.

Definition at line 1432 of file Driver.cpp.

Referenced by clang::driver::Driver::BuildUniversalActions().

◆ DiagnoseInputExistence()

static bool DiagnoseInputExistence ( const Driver D,
const DerivedArgList &  Args,
StringRef  Value,
types::ID  Ty 
)
static

Check that the file referenced by Value exists.

If it doesn't, issue a diagnostic and return false.

Definition at line 1533 of file Driver.cpp.

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

Referenced by clang::driver::Driver::BuildInputs().

◆ GetTriplePlusArchString()

static std::string GetTriplePlusArchString ( const ToolChain TC,
StringRef  BoundArch,
Action::OffloadKind  OffloadKind 
)
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 3196 of file Driver.cpp.

References clang::driver::Action::GetOffloadKindName(), and clang::driver::ToolChain::getTriple().

Referenced by clang::driver::Driver::BuildJobsForAction().

◆ MakeCLOutputFilename()

static const char* MakeCLOutputFilename ( const ArgList &  Args,
StringRef  ArgValue,
StringRef  BaseName,
types::ID  FileType 
)
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 3489 of file Driver.cpp.

References Filename, and clang::driver::types::getTypeTempSuffix().

Referenced by clang::driver::Driver::GetNamedOutputPath().

◆ MakeInputArg()

static Arg* MakeInputArg ( DerivedArgList &  Args,
OptTable &  Opts,
StringRef  Value 
)
static

Definition at line 258 of file Driver.cpp.

Referenced by clang::driver::Driver::BuildInputs().

◆ PrintActions1()

static unsigned PrintActions1 ( const Compilation C,
Action A,
std::map< Action *, unsigned > &  Ids 
)
static

◆ printArgList()

static void printArgList ( raw_ostream &  OS,
const llvm::opt::ArgList &  Args 
)
static

Definition at line 749 of file Driver.cpp.

Referenced by clang::driver::Driver::generateCompilationDiagnostics().

◆ PrintDiagnosticCategories()

static void PrintDiagnosticCategories ( raw_ostream &  OS)
static

PrintDiagnosticCategories - Implement the –print-diagnostic-categories option.

Definition at line 1151 of file Driver.cpp.

References clang::DiagnosticIDs::getCategoryNameFromID(), clang::DiagnosticIDs::getNumberOfCategories(), and max().

Referenced by clang::driver::Driver::HandleImmediateArgs().

◆ ScanDirForExecutable()

static bool ScanDirForExecutable ( SmallString< 128 > &  Dir,
ArrayRef< std::string >  Names 
)
static

Definition at line 3730 of file Driver.cpp.

References clang::driver::Driver::Name.

Referenced by clang::driver::Driver::GetProgramPath().