clang
3.9.0
|
Action - Represent an abstract compilation step to perform. More...
#include <Action.h>
Public Types | |
enum | ActionClass { InputClass = 0, BindArchClass, OffloadClass, PreprocessJobClass, PrecompileJobClass, AnalyzeJobClass, MigrateJobClass, CompileJobClass, BackendJobClass, AssembleJobClass, LinkJobClass, LipoJobClass, DsymutilJobClass, VerifyDebugInfoJobClass, VerifyPCHJobClass, JobClassFirst = PreprocessJobClass, JobClassLast = VerifyPCHJobClass } |
enum | OffloadKind { OFK_None = 0x00, OFK_Host = 0x01, OFK_Cuda = 0x02 } |
typedef ActionList::size_type | size_type |
typedef ActionList::iterator | input_iterator |
typedef ActionList::const_iterator | input_const_iterator |
typedef llvm::iterator_range < input_iterator > | input_range |
typedef llvm::iterator_range < input_const_iterator > | input_const_range |
Public Member Functions | |
virtual | ~Action () |
const char * | getClassName () const |
ActionClass | getKind () const |
types::ID | getType () const |
ActionList & | getInputs () |
const ActionList & | getInputs () const |
size_type | size () const |
input_iterator | input_begin () |
input_iterator | input_end () |
input_range | inputs () |
input_const_iterator | input_begin () const |
input_const_iterator | input_end () const |
input_const_range | inputs () const |
std::string | getOffloadingKindPrefix () const |
Return a string containing the offload kind of the action. More... | |
std::string | getOffloadingFileNamePrefix (llvm::StringRef NormalizedTriple) const |
Return a string that can be used as prefix in order to generate unique files for each offloading kind. More... | |
void | propagateDeviceOffloadInfo (OffloadKind OKind, const char *OArch) |
Set the device offload info of this action and propagate it to its dependences. More... | |
void | propagateHostOffloadInfo (unsigned OKinds, const char *OArch) |
Append the host offload info of this action and propagate it to its dependences. More... | |
void | propagateOffloadInfo (const Action *A) |
Set the offload info of this action to be the same as the provided action, and propagate it to its dependences. More... | |
unsigned | getOffloadingHostActiveKinds () const |
OffloadKind | getOffloadingDeviceKind () const |
const char * | getOffloadingArch () const |
bool | isHostOffloading (OffloadKind OKind) const |
Check if this action have any offload kinds. More... | |
bool | isDeviceOffloading (OffloadKind OKind) const |
bool | isOffloading (OffloadKind OKind) const |
Static Public Member Functions | |
static const char * | getClassName (ActionClass AC) |
Protected Member Functions | |
Action (ActionClass Kind, types::ID Type) | |
Action (ActionClass Kind, Action *Input, types::ID Type) | |
Type (Type) | |
Inputs (Inputs) | |
Protected Attributes | |
unsigned | ActiveOffloadKindMask = 0u |
Offload information. More... | |
OffloadKind | OffloadingDeviceKind = OFK_None |
Offloading kind of the device. More... | |
const char * | OffloadingArch = nullptr |
The Offloading architecture associated with this action. More... | |
Type | |
Action - Represent an abstract compilation step to perform.
An action represents an edge in the compilation graph; typically it is a job to transform an input using some tool.
The current driver is hard wired to expect actions which produce a single primary output, at least in terms of controlling the compilation. Actions can produce auxiliary files, but can only produce a single output to feed into subsequent actions.
Actions are usually owned by a Compilation, which creates new actions via MakeAction().
typedef ActionList::const_iterator clang::driver::Action::input_const_iterator |
typedef llvm::iterator_range<input_const_iterator> clang::driver::Action::input_const_range |
typedef ActionList::iterator clang::driver::Action::input_iterator |
typedef llvm::iterator_range<input_iterator> clang::driver::Action::input_range |
typedef ActionList::size_type clang::driver::Action::size_type |
|
inlineprotected |
|
inlineprotected |
|
virtual |
Definition at line 19 of file Action.cpp.
|
static |
Definition at line 21 of file Action.cpp.
|
inline |
|
inline |
Definition at line 125 of file Action.h.
Referenced by buildCudaActions(), clang::driver::tools::ClangAs::ConstructJob(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::OffloadAction::doOnEachDeviceDependence(), clang::driver::OffloadAction::doOnHostDependence(), clang::driver::OffloadAction::getHostDependence(), clang::driver::OffloadAction::getSingleDeviceDependence(), clang::driver::OffloadAction::hasSingleDeviceDependence(), clang::driver::OffloadAction::OffloadAction(), PrintActions1(), and selectToolForJob().
|
inline |
|
inline |
Definition at line 122 of file Action.h.
Referenced by buildCudaActions(), clang::driver::InputAction::classof(), clang::driver::BindArchAction::classof(), clang::driver::OffloadAction::classof(), clang::driver::JobAction::classof(), clang::driver::PreprocessJobAction::classof(), clang::driver::PrecompileJobAction::classof(), clang::driver::AnalyzeJobAction::classof(), clang::driver::MigrateJobAction::classof(), clang::driver::CompileJobAction::classof(), clang::driver::BackendJobAction::classof(), clang::driver::AssembleJobAction::classof(), clang::driver::LinkJobAction::classof(), clang::driver::LipoJobAction::classof(), clang::driver::DsymutilJobAction::classof(), clang::driver::VerifyJobAction::classof(), clang::driver::VerifyDebugInfoJobAction::classof(), clang::driver::VerifyPCHJobAction::classof(), clang::driver::tools::ClangAs::ConstructJob(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::tools::SHAVE::Compiler::ConstructJob(), getClassName(), PrintActions1(), clang::driver::ToolChain::SelectTool(), and clang::driver::toolchains::MyriadToolChain::SelectTool().
|
inline |
Definition at line 160 of file Action.h.
References OffloadingArch.
Referenced by clang::driver::tools::NVPTX::Assembler::ConstructJob(), PrintActions1(), and propagateOffloadInfo().
|
inline |
Definition at line 159 of file Action.h.
References OffloadingDeviceKind.
Referenced by propagateOffloadInfo().
std::string Action::getOffloadingFileNamePrefix | ( | llvm::StringRef | NormalizedTriple | ) | const |
Return a string that can be used as prefix in order to generate unique files for each offloading kind.
Definition at line 107 of file Action.cpp.
Referenced by clang::driver::Driver::GetNamedOutputPath().
|
inline |
Definition at line 156 of file Action.h.
References ActiveOffloadKindMask.
Referenced by propagateOffloadInfo().
std::string Action::getOffloadingKindPrefix | ( | ) | const |
Return a string containing the offload kind of the action.
Definition at line 81 of file Action.cpp.
Referenced by PrintActions1().
|
inline |
Definition at line 123 of file Action.h.
Referenced by clang::driver::Driver::BuildActions(), buildCudaActions(), clang::driver::tools::Clang::ConstructJob(), clang::driver::tools::ClangAs::ConstructJob(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::Driver::ConstructPhaseAction(), clang::driver::Driver::GetNamedOutputPath(), PrintActions1(), and clang::driver::tools::gcc::Compiler::RenderExtraToolArgs().
|
inline |
Definition at line 130 of file Action.h.
Referenced by inputs(), and clang::driver::Driver::ShouldUseClangCompiler().
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 132 of file Action.h.
References input_begin(), and input_end().
Referenced by ContainsCompileAction(), and ContainsCompileOrAssembleAction().
|
inline |
Definition at line 135 of file Action.h.
References input_begin(), and input_end().
|
inline |
Definition at line 167 of file Action.h.
References OffloadingDeviceKind.
Referenced by addExtraOffloadCXXStdlibIncludeArgs(), addExtraOffloadSpecificIncludeArgs(), clang::driver::tools::Clang::ConstructJob(), and isOffloading().
|
inline |
Check if this action have any offload kinds.
Note that host offload kinds are only set if the action is a dependence to a host offload action.
Definition at line 164 of file Action.h.
References ActiveOffloadKindMask.
Referenced by addExtraOffloadCXXStdlibIncludeArgs(), addExtraOffloadSpecificIncludeArgs(), and isOffloading().
|
inline |
Definition at line 170 of file Action.h.
References isDeviceOffloading(), and isHostOffloading().
Referenced by clang::driver::tools::Clang::ConstructJob().
void Action::propagateDeviceOffloadInfo | ( | OffloadKind | OKind, |
const char * | OArch | ||
) |
Set the device offload info of this action and propagate it to its dependences.
Definition at line 44 of file Action.cpp.
void Action::propagateHostOffloadInfo | ( | unsigned | OKinds, |
const char * | OArch | ||
) |
Append the host offload info of this action and propagate it to its dependences.
Definition at line 59 of file Action.cpp.
Referenced by clang::driver::Driver::BuildActions(), and clang::driver::OffloadAction::OffloadAction().
void Action::propagateOffloadInfo | ( | const Action * | A | ) |
Set the offload info of this action to be the same as the provided action, and propagate it to its dependences.
Definition at line 73 of file Action.cpp.
References getOffloadingArch(), getOffloadingDeviceKind(), and getOffloadingHostActiveKinds().
|
inline |
Definition at line 128 of file Action.h.
Referenced by clang::driver::OffloadAction::doOnEachDeviceDependence(), clang::driver::OffloadAction::OffloadAction(), and clang::driver::Driver::ShouldUseClangCompiler().
|
protected |
|
protected |
Offload information.
The host offloading kind - a combination of kinds encoded in a mask. Multiple programming models may be supported simultaneously by the same host.
Definition at line 103 of file Action.h.
Referenced by getOffloadingHostActiveKinds(), isHostOffloading(), and clang::driver::OffloadAction::OffloadAction().
|
protected |
The Offloading architecture associated with this action.
Definition at line 107 of file Action.h.
Referenced by getOffloadingArch(), and clang::driver::OffloadAction::OffloadAction().
|
protected |
Offloading kind of the device.
Definition at line 105 of file Action.h.
Referenced by getOffloadingDeviceKind(), isDeviceOffloading(), and clang::driver::OffloadAction::OffloadAction().
|
protected |