clang: clang::driver::Action Class Reference (original) (raw)

Action - Represent an abstract compilation step to perform. More...

#include "[clang/Driver/Action.h](Action%5F8h%5Fsource.html)"

Public Types
enum ActionClass { InputClass = 0 , BindArchClass, OffloadClass, PreprocessJobClass, PrecompileJobClass, ExtractAPIJobClass, AnalyzeJobClass, MigrateJobClass, CompileJobClass, BackendJobClass, AssembleJobClass, LinkJobClass, IfsMergeJobClass, LipoJobClass, DsymutilJobClass, VerifyDebugInfoJobClass, VerifyPCHJobClass, OffloadBundlingJobClass, OffloadUnbundlingJobClass, OffloadPackagerJobClass, LinkerWrapperJobClass, StaticLibJobClass, BinaryAnalyzeJobClass, JobClassFirst = PreprocessJobClass , JobClassLast = BinaryAnalyzeJobClass }
enum OffloadKind { OFK_None = 0x00 , OFK_Host = 0x01 , OFK_Cuda = 0x02 , OFK_OpenMP = 0x04 , OFK_HIP = 0x08 , OFK_SYCL = 0x10 }
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.
bool isCollapsingWithNextDependentActionLegal () const
Return true if this function can be collapsed with others.
std::string getOffloadingKindPrefix () const
Return a string containing the offload kind of the action.
void propagateDeviceOffloadInfo (OffloadKind OKind, const char *OArch, const ToolChain *OToolChain)
Set the device offload info of this action and propagate it to its dependences.
void propagateHostOffloadInfo (unsigned OKinds, const char *OArch)
Append the host offload info of this action and propagate it to its dependences.
void setHostOffloadInfo (unsigned OKinds, const char *OArch)
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.
unsigned getOffloadingHostActiveKinds () const
OffloadKind getOffloadingDeviceKind () const
const char * getOffloadingArch () const
const ToolChain * getOffloadingToolChain () const
bool isHostOffloading (unsigned int OKind) const
Check if this action have any offload kinds.
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.
static StringRef GetOffloadKindName (OffloadKind Kind)
Return a string containing a offload kind name.
Protected Member Functions
Protected Attributes
unsigned ActiveOffloadKindMask = 0u
Offload information.
OffloadKind OffloadingDeviceKind = OFK_None
Offloading kind of the device.
const char * OffloadingArch = nullptr
The Offloading architecture associated with this action.
const ToolChain * OffloadingToolChain = nullptr
The Offloading toolchain associated with this device action.

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().

Definition at line 47 of file Action.h.

input_const_iterator

input_const_range

input_iterator

input_range

size_type

ActionClass

Enumerator
InputClass
BindArchClass
OffloadClass
PreprocessJobClass
PrecompileJobClass
ExtractAPIJobClass
AnalyzeJobClass
MigrateJobClass
CompileJobClass
BackendJobClass
AssembleJobClass
LinkJobClass
IfsMergeJobClass
LipoJobClass
DsymutilJobClass
VerifyDebugInfoJobClass
VerifyPCHJobClass
OffloadBundlingJobClass
OffloadUnbundlingJobClass
OffloadPackagerJobClass
LinkerWrapperJobClass
StaticLibJobClass
BinaryAnalyzeJobClass
JobClassFirst
JobClassLast

Definition at line 55 of file Action.h.

OffloadKind

Enumerator
OFK_None
OFK_Host
OFK_Cuda
OFK_OpenMP
OFK_HIP
OFK_SYCL

Definition at line 87 of file Action.h.

Action() [1/4]

Action() [2/4]

Action() [3/4]

Action() [4/4]

Action::~Action ( ) virtualdefault

getClassName() [1/2]

const char * clang::driver::Action::getClassName ( ) const inline

getClassName() [2/2]

const char * Action::getClassName ( ActionClass AC) static

Definition at line 20 of file Action.cpp.

References AnalyzeJobClass, AssembleJobClass, BackendJobClass, BinaryAnalyzeJobClass, BindArchClass, CompileJobClass, DsymutilJobClass, ExtractAPIJobClass, IfsMergeJobClass, InputClass, LinkerWrapperJobClass, LinkJobClass, LipoJobClass, MigrateJobClass, OffloadBundlingJobClass, OffloadClass, OffloadPackagerJobClass, OffloadUnbundlingJobClass, PrecompileJobClass, PreprocessJobClass, StaticLibJobClass, VerifyDebugInfoJobClass, and VerifyPCHJobClass.

getInputs() [1/2]

ActionList & clang::driver::Action::getInputs ( ) inline

Definition at line 151 of file Action.h.

Referenced by clang::driver::ExtractAPIJobAction::addHeaderInput(), clang::driver::Driver::BuildJobs(), clang::driver::Driver::BuildOffloadingActions(), clang::driver::tools::Clang::ConstructJob(), clang::driver::tools::OffloadBundler::ConstructJob(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::OffloadAction::doOnEachDeviceDependence(), clang::driver::OffloadAction::doOnHostDependence(), clang::driver::OffloadAction::getHostDependence(), clang::driver::OffloadAction::getSingleDeviceDependence(), HasPreprocessOutput(), clang::driver::OffloadAction::hasSingleDeviceDependence(), and clang::driver::OffloadAction::OffloadAction().

getInputs() [2/2]

const ActionList & clang::driver::Action::getInputs ( ) const inline

getKind()

ActionClass clang::driver::Action::getKind ( ) const inline

Definition at line 148 of file Action.h.

Referenced by clang::driver::Driver::BuildInputs(), clang::driver::Driver::BuildJobs(), 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::ExtractAPIJobAction::classof(), clang::driver::AnalyzeJobAction::classof(), clang::driver::MigrateJobAction::classof(), clang::driver::CompileJobAction::classof(), clang::driver::BackendJobAction::classof(), clang::driver::AssembleJobAction::classof(), clang::driver::IfsMergeJobAction::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::OffloadPackagerJobAction::classof(), clang::driver::LinkerWrapperJobAction::classof(), clang::driver::StaticLibJobAction::classof(), clang::driver::BinaryAnalyzeJobAction::classof(), clang::driver::tools::Clang::ConstructJob(), clang::driver::tools::darwin::Assembler::ConstructJob(), getClassName(), clang::driver::ToolChain::SelectTool(), and clang::driver::toolchains::SPIRVToolChain::SelectTool().

getOffloadingArch()

const char * clang::driver::Action::getOffloadingArch ( ) const inline

getOffloadingDeviceKind()

OffloadKind clang::driver::Action::getOffloadingDeviceKind ( ) const inline

GetOffloadingFileNamePrefix()

std::string Action::GetOffloadingFileNamePrefix ( OffloadKind Kind, StringRef NormalizedTriple, bool CreatePrefixForHost = false ) static

getOffloadingHostActiveKinds()

unsigned clang::driver::Action::getOffloadingHostActiveKinds ( ) const inline

getOffloadingKindPrefix()

std::string Action::getOffloadingKindPrefix ( ) const

getOffloadingToolChain()

const ToolChain * clang::driver::Action::getOffloadingToolChain ( ) const inline

GetOffloadKindName()

StringRef Action::GetOffloadKindName ( OffloadKind Kind) 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 160 of file Action.cpp.

References OFK_Cuda, OFK_HIP, OFK_Host, OFK_None, OFK_OpenMP, and OFK_SYCL.

Referenced by clang::driver::tools::OffloadBundler::ConstructJob(), clang::driver::tools::OffloadPackager::ConstructJob(), clang::driver::tools::OffloadBundler::ConstructJobMultipleOutputs(), GetOffloadingFileNamePrefix(), GetSDLFromOffloadArchive(), and GetTriplePlusArchString().

getType()

types::ID clang::driver::Action::getType ( ) const inline

Definition at line 149 of file Action.h.

Referenced by clang::driver::Driver::BuildJobs(), clang::driver::Driver::BuildOffloadingActions(), clang::driver::tools::Clang::ConstructJob(), clang::driver::tools::ClangAs::ConstructJob(), clang::driver::tools::darwin::Assembler::ConstructJob(), clang::driver::tools::Flang::ConstructJob(), clang::driver::tools::AMDGCN::Linker::ConstructJob(), clang::driver::tools::HIPSPV::Linker::ConstructJob(), clang::driver::Driver::ConstructPhaseAction(), GetModuleOutputPath(), clang::driver::Driver::GetNamedOutputPath(), and clang::driver::tools::gcc::Compiler::RenderExtraToolArgs().

input_begin() [1/2]

input_begin() [2/2]

input_end() [1/2]

input_end() [2/2]

inputs() [1/2]

inputs() [2/2]

isCollapsingWithNextDependentActionLegal()

bool clang::driver::Action::isCollapsingWithNextDependentActionLegal ( ) const inline

Return true if this function can be collapsed with others.

Definition at line 171 of file Action.h.

isDeviceOffloading()

bool clang::driver::Action::isDeviceOffloading ( OffloadKind OKind) const inline

isHostOffloading()

bool clang::driver::Action::isHostOffloading ( unsigned int OKind) const inline

isOffloading()

propagateDeviceOffloadInfo()

void Action::propagateDeviceOffloadInfo ( OffloadKind OKind,
const char * OArch,
const ToolChain * OToolChain
)

propagateHostOffloadInfo()

void Action::propagateHostOffloadInfo ( unsigned OKinds,
const char * OArch
)

propagateOffloadInfo()

void Action::propagateOffloadInfo ( const Action * A )

setCannotBeCollapsedWithNextDependentAction()

void clang::driver::Action::setCannotBeCollapsedWithNextDependentAction ( ) inline

setHostOffloadInfo()

void clang::driver::Action::setHostOffloadInfo ( unsigned OKinds, const char * OArch ) inline

size()

size_type clang::driver::Action::size ( ) const inline

ActiveOffloadKindMask

unsigned clang::driver::Action::ActiveOffloadKindMask = 0u protected

OffloadingArch

const char* clang::driver::Action::OffloadingArch = nullptr protected

OffloadingDeviceKind

OffloadingToolChain

const ToolChain* clang::driver::Action::OffloadingToolChain = nullptr protected

The documentation for this class was generated from the following files: