10 #ifndef LLVM_CLANG_DRIVER_TOOLCHAIN_H
11 #define LLVM_CLANG_DRIVER_TOOLCHAIN_H
18 #include "llvm/ADT/SmallVector.h"
19 #include "llvm/ADT/Triple.h"
20 #include "llvm/Support/Path.h"
21 #include "llvm/Target/TargetOptions.h"
70 const llvm::Triple Triple;
71 const llvm::opt::ArgList &Args;
73 const llvm::opt::Arg *
const CachedRTTIArg;
84 mutable std::unique_ptr<Tool> Clang;
85 mutable std::unique_ptr<Tool> Assemble;
86 mutable std::unique_ptr<Tool> Link;
87 Tool *getClang()
const;
88 Tool *getAssemble()
const;
89 Tool *getLink()
const;
90 Tool *getClangAs()
const;
92 mutable std::unique_ptr<SanitizerArgs> SanitizerArguments;
99 const llvm::opt::ArgList &Args);
108 llvm::opt::ArgStringList &CC1Args,
111 llvm::opt::ArgStringList &CC1Args,
115 llvm::opt::ArgStringList &CC1Args,
118 llvm::opt::ArgStringList &CC1Args,
129 const llvm::Triple &
getTriple()
const {
return Triple; }
131 llvm::Triple::ArchType
getArch()
const {
return Triple.getArch(); }
134 StringRef
getOS()
const {
return Triple.getOSName(); }
141 return Triple.getTriple();
155 const llvm::opt::Arg *
getRTTIArg()
const {
return CachedRTTIArg; }
171 static std::pair<std::string, std::string>
181 virtual llvm::opt::DerivedArgList *
183 const char *BoundArch)
const {
259 virtual std::string
getCompilerRT(
const llvm::opt::ArgList &Args,
261 bool Shared =
false)
const;
265 bool Shared =
false)
const;
310 return llvm::DebuggerKind::GDB;
336 const llvm::opt::ArgList &Args,
358 llvm::opt::ArgStringList &CC1Args)
const;
362 llvm::opt::ArgStringList &CC1Args)
const;
380 llvm::opt::ArgStringList &CC1Args)
const;
385 llvm::opt::ArgStringList &CmdArgs)
const;
389 llvm::opt::ArgStringList &CmdArgs)
const;
394 llvm::opt::ArgStringList &CmdArgs)
const;
401 const llvm::opt::ArgList &Args, llvm::opt::ArgStringList &CmdArgs)
const;
405 llvm::opt::ArgStringList &CmdArgs)
const;
409 llvm::opt::ArgStringList &CC1Args)
const;
Defines the clang::SanitizerKind enum.
The virtual file system interface.
class LLVM_ALIGNAS(8) DependentTemplateSpecializationType const IdentifierInfo * Name
Represents a template specialization type whose template cannot be resolved, e.g. ...
Driver - Encapsulate logic for constructing compilation processes from a set of gcc-driver-like comma...
The basic abstraction for the target Objective-C runtime.