clang
7.0.0
|
Action - Represent an abstract compilation step to perform. More...
#include "clang/Driver/Action.h"
Public Types | |
enum | ActionClass { InputClass = 0, BindArchClass, OffloadClass, PreprocessJobClass, PrecompileJobClass, AnalyzeJobClass, MigrateJobClass, CompileJobClass, BackendJobClass, AssembleJobClass, LinkJobClass, LipoJobClass, DsymutilJobClass, VerifyDebugInfoJobClass, VerifyPCHJobClass, OffloadBundlingJobClass, OffloadUnbundlingJobClass, JobClassFirst = PreprocessJobClass, JobClassLast = OffloadUnbundlingJobClass } |
enum | OffloadKind { OFK_None = 0x00, OFK_Host = 0x01, OFK_Cuda = 0x02, OFK_OpenMP = 0x04, OFK_HIP = 0x08 } |
using | size_type = ActionList::size_type |
using | input_iterator = ActionList::iterator |
using | input_const_iterator = ActionList::const_iterator |
using | input_range = llvm::iterator_range< input_iterator > |
using | input_const_range = llvm::iterator_range< input_const_iterator > |
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 |
void | setCannotBeCollapsedWithNextDependentAction () |
Mark this action as not legal to collapse. More... | |
bool | isCollapsingWithNextDependentActionLegal () const |
Return true if this function can be collapsed with others. More... | |
std::string | getOffloadingKindPrefix () const |
Return a string containing the offload kind of the action. 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) |
static std::string | GetOffloadingFileNamePrefix (OffloadKind Kind, StringRef NormalizedTriple, bool CreatePrefixForHost=false) |
Return a string that can be used as prefix in order to generate unique files for each offloading kind. More... | |
static StringRef | GetOffloadKindName (OffloadKind Kind) |
Return a string containing a offload kind name. More... | |
Protected Member Functions | |
Action (ActionClass Kind, types::ID Type) | |
Action (ActionClass Kind, Action *Input, types::ID Type) | |
Action (ActionClass Kind, Action *Input) | |
Action (ActionClass Kind, const ActionList &Inputs, types::ID Type) | |
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... | |
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().
using clang::driver::Action::input_const_iterator = ActionList::const_iterator |
using clang::driver::Action::input_const_range = llvm::iterator_range<input_const_iterator> |
using clang::driver::Action::input_iterator = ActionList::iterator |
using clang::driver::Action::input_range = llvm::iterator_range<input_iterator> |
using clang::driver::Action::size_type = ActionList::size_type |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
inlineprotected |
|
virtualdefault |
|
static |
Definition at line 21 of file Action.cpp.
|
inline |
|
inline |
Definition at line 142 of file Action.h.
Referenced by clang::driver::Driver::BuildJobsForAction(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::tools::ClangAs::ConstructJob(), clang::driver::tools::OffloadBundler::ConstructJob(), clang::driver::OffloadAction::doOnHostDependence(), clang::driver::OffloadAction::getHostDependence(), clang::driver::OffloadAction::getSingleDeviceDependence(), clang::driver::OffloadAction::hasSingleDeviceDependence(), clang::driver::OffloadAction::OffloadAction(), and PrintActions1().
|
inline |
|
inline |
Definition at line 139 of file Action.h.
Referenced by 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::OffloadBundlingJobAction::classof(), clang::driver::OffloadUnbundlingJobAction::classof(), clang::driver::tools::SHAVE::Compiler::ConstructJob(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::tools::ClangAs::ConstructJob(), clang::tooling::CompilationDatabase::getAllCompileCommands(), PrintActions1(), RelocationModelName(), clang::driver::toolchains::MyriadToolChain::SelectTool(), and clang::driver::ToolChain::SelectTool().
|
inline |
Definition at line 197 of file Action.h.
Referenced by clang::driver::tools::AMDGCN::Linker::ConstructJob(), clang::driver::tools::NVPTX::Assembler::ConstructJob(), clang::driver::tools::Clang::ConstructJob(), and propagateOffloadInfo().
|
inline |
Definition at line 196 of file Action.h.
Referenced by clang::driver::Driver::BuildJobsForAction(), clang::driver::tools::Clang::ConstructJob(), and propagateOffloadInfo().
|
static |
Return a string that can be used as prefix in order to generate unique files for each offloading kind.
By default, no prefix is used for non-device kinds, except if CreatePrefixForHost is set.
Definition at line 127 of file Action.cpp.
Referenced by clang::driver::Driver::BuildJobsForAction(), and clang::driver::tools::Clang::ConstructJob().
|
inline |
Definition at line 192 of file Action.h.
Referenced by clang::driver::Driver::BuildJobsForAction(), and propagateOffloadInfo().
std::string Action::getOffloadingKindPrefix | ( | ) | const |
Return a string containing the offload kind of the action.
Definition at line 88 of file Action.cpp.
Referenced by PrintActions1().
|
static |
Return a string containing a offload kind name.
Return a string with the offload kind name.
If that is not defined, we assume 'host'.
Definition at line 143 of file Action.cpp.
Referenced by GetTriplePlusArchString().
|
inline |
Definition at line 140 of file Action.h.
Referenced by clang::driver::Driver::BuildJobsForAction(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::tools::Clang::ConstructJob(), clang::driver::tools::ClangAs::ConstructJob(), clang::driver::Driver::ConstructPhaseAction(), clang::driver::Driver::GetNamedOutputPath(), and clang::driver::tools::gcc::Compiler::RenderExtraToolArgs().
|
inline |
Definition at line 147 of file Action.h.
Referenced by clang::driver::Driver::ShouldUseClangCompiler().
|
inline |
|
inline |
|
inline |
|
inline |
Definition at line 149 of file Action.h.
Referenced by ActionFailed(), ContainsCompileAction(), ContainsCompileOrAssembleAction(), and clang::tooling::CompilationDatabase::getAllCompileCommands().
|
inline |
|
inline |
Return true if this function can be collapsed with others.
Definition at line 162 of file Action.h.
Referenced by clang::driver::Driver::BuildJobs().
|
inline |
Definition at line 204 of file Action.h.
Referenced by clang::driver::tools::NVPTX::Assembler::ConstructJob(), clang::driver::tools::Clang::ConstructJob(), and forAllAssociatedToolChains().
|
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 201 of file Action.h.
Referenced by AddLibgcc(), clang::driver::tools::gnutools::Linker::ConstructJob(), clang::driver::tools::Clang::ConstructJob(), clang::driver::tools::NVPTX::OpenMPLinker::ConstructJob(), and forAllAssociatedToolChains().
|
inline |
Definition at line 207 of file Action.h.
Referenced by ActionFailed(), clang::driver::tools::NVPTX::Assembler::ConstructJob(), clang::driver::tools::Clang::ConstructJob(), and RelocationModelName().
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 48 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 66 of file Action.cpp.
Referenced by 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 80 of file Action.cpp.
References getOffloadingArch(), getOffloadingDeviceKind(), and getOffloadingHostActiveKinds().
|
inline |
|
inline |
Definition at line 145 of file Action.h.
Referenced by clang::driver::OffloadAction::OffloadAction(), and clang::driver::Driver::ShouldUseClangCompiler().
|
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 118 of file Action.h.
Referenced by clang::driver::OffloadAction::OffloadAction().
|
protected |
The Offloading architecture associated with this action.
Definition at line 124 of file Action.h.
Referenced by clang::driver::OffloadAction::OffloadAction().
|
protected |
Offloading kind of the device.
Definition at line 121 of file Action.h.
Referenced by clang::driver::OffloadAction::OffloadAction().