clang 22.0.0git
clang::driver::Compilation Class Reference

Compilation - A set of tasks to perform for a single driver invocation. More...

#include "clang/Driver/Compilation.h"

Public Types

using const_offload_toolchains_iterator
 Iterator that visits device toolchains of a given kind.
using const_offload_toolchains_range

Public Member Functions

 Compilation (const Driver &D, const ToolChain &DefaultToolChain, llvm::opt::InputArgList *Args, llvm::opt::DerivedArgList *TranslatedArgs, bool ContainsError)
 ~Compilation ()
const DrivergetDriver () const
const ToolChaingetDefaultToolChain () const
unsigned isOffloadingHostKind (Action::OffloadKind Kind) const
unsigned getActiveOffloadKinds () const
template<Action::OffloadKind Kind>
const_offload_toolchains_range getOffloadToolChains () const
const_offload_toolchains_range getOffloadToolChains (Action::OffloadKind Kind) const
template<Action::OffloadKind Kind>
bool hasOffloadToolChain () const
 Return true if an offloading tool chain of a given kind exists.
template<Action::OffloadKind Kind>
const ToolChaingetSingleOffloadToolChain () const
 Return an offload toolchain of the provided kind.
void addOffloadDeviceToolChain (const ToolChain *DeviceToolChain, Action::OffloadKind OffloadKind)
const llvm::opt::InputArgList & getInputArgs () const
const llvm::opt::DerivedArgList & getArgs () const
llvm::opt::DerivedArgList & getArgs ()
ActionListgetActions ()
const ActionListgetActions () const
template<typename T, typename... Args>
TMakeAction (Args &&... Arg)
 Creates a new Action owned by this Compilation.
JobListgetJobs ()
const JobListgetJobs () const
void addCommand (std::unique_ptr< Command > C)
llvm::opt::ArgStringList & getTempFiles ()
const llvm::opt::ArgStringList & getTempFiles () const
const ArgStringMapgetResultFiles () const
const ArgStringMapgetFailureResultFiles () const
void setPostCallback (const std::function< void(const Command &, int)> &CB)
 Installs a handler that is executed when a compilation job is finished.
StringRef getSysRoot () const
 Returns the sysroot path.
const llvm::opt::DerivedArgList & getArgsForToolChain (const ToolChain *TC, StringRef BoundArch, Action::OffloadKind DeviceOffloadKind)
 getArgsForToolChain - Return the derived argument list for the tool chain TC (or the default tool chain, if TC is not specified).
const char * addTempFile (const char *Name)
 addTempFile - Add a file to remove on exit, and returns its argument.
const char * addResultFile (const char *Name, const JobAction *JA)
 addResultFile - Add a file to remove on failure, and returns its argument.
const char * addFailureResultFile (const char *Name, const JobAction *JA)
 addFailureResultFile - Add a file to remove if we crash, and returns its argument.
const char * getTimeTraceFile (const JobAction *JA) const
void addTimeTraceFile (const char *Name, const JobAction *JA)
bool CleanupFile (const char *File, bool IssueErrors=false) const
 CleanupFile - Delete a given file.
bool CleanupFileList (const llvm::opt::ArgStringList &Files, bool IssueErrors=false) const
 CleanupFileList - Remove the files in the given list.
bool CleanupFileMap (const ArgStringMap &Files, const JobAction *JA, bool IssueErrors=false) const
 CleanupFileMap - Remove the files in the given map.
int ExecuteCommand (const Command &C, const Command *&FailingCommand, bool LogOnly=false) const
 ExecuteCommand - Execute an actual command.
void ExecuteJobs (const JobList &Jobs, SmallVectorImpl< std::pair< int, const Command * > > &FailingCommands, bool LogOnly=false) const
 ExecuteJob - Execute a single job.
void initCompilationForDiagnostics ()
 initCompilationForDiagnostics - Remove stale state and suppress output so compilation can be reexecuted to generate additional diagnostic information (e.g., preprocessed source(s)).
bool isForDiagnostics () const
 Return true if we're compiling for diagnostics.
bool containsError () const
 Return whether an error during the parsing of the input args.
void setContainsError ()
 Force driver to fail before toolchain is created.
void Redirect (ArrayRef< std::optional< StringRef > > Redirects)
 Redirect - Redirect output of this compilation.

Detailed Description

Compilation - A set of tasks to perform for a single driver invocation.

Definition at line 45 of file Compilation.h.

Member Typedef Documentation

◆ const_offload_toolchains_iterator

Initial value:
const std::multimap<Action::OffloadKind,
ToolChain - Access to tools for a single platform.
Definition ToolChain.h:92

Iterator that visits device toolchains of a given kind.

Definition at line 146 of file Compilation.h.

◆ const_offload_toolchains_range

Initial value:
const std::multimap< Action::OffloadKind, const ToolChain * >::const_iterator const_offload_toolchains_iterator
Iterator that visits device toolchains of a given kind.

Definition at line 149 of file Compilation.h.

Constructor & Destructor Documentation

◆ Compilation()

Compilation::Compilation ( const Driver & D,
const ToolChain & DefaultToolChain,
llvm::opt::InputArgList * Args,
llvm::opt::DerivedArgList * TranslatedArgs,
bool ContainsError )

Definition at line 32 of file Compilation.cpp.

References clang::driver::Action::OFK_Host.

◆ ~Compilation()

Compilation::~Compilation ( )

Definition at line 42 of file Compilation.cpp.

References CleanupFileList().

Member Function Documentation

◆ addCommand()

void clang::driver::Compilation::addCommand ( std::unique_ptr< Command > C)
inline

Definition at line 214 of file Compilation.h.

References clang::C.

◆ addFailureResultFile()

const char * clang::driver::Compilation::addFailureResultFile ( const char * Name,
const JobAction * JA )
inline

addFailureResultFile - Add a file to remove if we crash, and returns its argument.

Definition at line 264 of file Compilation.h.

◆ addOffloadDeviceToolChain()

void clang::driver::Compilation::addOffloadDeviceToolChain ( const ToolChain * DeviceToolChain,
Action::OffloadKind OffloadKind )
inline

◆ addResultFile()

const char * clang::driver::Compilation::addResultFile ( const char * Name,
const JobAction * JA )
inline

addResultFile - Add a file to remove on failure, and returns its argument.

Definition at line 257 of file Compilation.h.

◆ addTempFile()

const char * clang::driver::Compilation::addTempFile ( const char * Name)
inline

addTempFile - Add a file to remove on exit, and returns its argument.

Definition at line 250 of file Compilation.h.

◆ addTimeTraceFile()

void clang::driver::Compilation::addTimeTraceFile ( const char * Name,
const JobAction * JA )
inline

Definition at line 272 of file Compilation.h.

◆ CleanupFile()

bool Compilation::CleanupFile ( const char * File,
bool IssueErrors = false ) const

CleanupFile - Delete a given file.

Parameters
IssueErrors- Report failures as errors.
Returns
Whether the file was removed successfully.

Definition at line 108 of file Compilation.cpp.

References clang::driver::Driver::Diag(), clang::File, and getDriver().

Referenced by CleanupFileList(), and CleanupFileMap().

◆ CleanupFileList()

bool Compilation::CleanupFileList ( const llvm::opt::ArgStringList & Files,
bool IssueErrors = false ) const

CleanupFileList - Remove the files in the given list.

Parameters
IssueErrors- Report failures as errors.
Returns
Whether all files were removed successfully.

Definition at line 138 of file Compilation.cpp.

References CleanupFile(), clang::File, and clang::Success.

Referenced by initCompilationForDiagnostics(), and ~Compilation().

◆ CleanupFileMap()

bool Compilation::CleanupFileMap ( const ArgStringMap & Files,
const JobAction * JA,
bool IssueErrors = false ) const

CleanupFileMap - Remove the files in the given map.

Parameters
JA- If specified, only delete the files associated with this JobAction. Otherwise, delete all files in the map.
IssueErrors- Report failures as errors.
Returns
Whether all files were removed successfully.

Definition at line 146 of file Compilation.cpp.

References CleanupFile(), clang::File, and clang::Success.

◆ containsError()

bool clang::driver::Compilation::containsError ( ) const
inline

Return whether an error during the parsing of the input args.

Definition at line 330 of file Compilation.h.

◆ ExecuteCommand()

int Compilation::ExecuteCommand ( const Command & C,
const Command *& FailingCommand,
bool LogOnly = false ) const

ExecuteCommand - Execute an actual command.

Parameters
FailingCommand- For non-zero results, this will be set to the Command which failed, if any.
LogOnly- When true, only tries to log the command, not actually execute it.
Returns
The result code of the subprocess.

Definition at line 160 of file Compilation.cpp.

References clang::C, clang::driver::Driver::Diag(), clang::Error, getArgs(), and getDriver().

Referenced by ExecuteJobs().

◆ ExecuteJobs()

void Compilation::ExecuteJobs ( const JobList & Jobs,
SmallVectorImpl< std::pair< int, const Command * > > & FailingCommands,
bool LogOnly = false ) const

ExecuteJob - Execute a single job.

Parameters
FailingCommands- For non-zero results, this will be a vector of failing commands and their associated result code.
LogOnly- When true, only tries to log the command, not actually execute it.

Definition at line 235 of file Compilation.cpp.

References ActionFailed(), and ExecuteCommand().

◆ getActions() [1/2]

ActionList & clang::driver::Compilation::getActions ( )
inline

Definition at line 199 of file Compilation.h.

Referenced by ignoreExtraCC1Commands().

◆ getActions() [2/2]

const ActionList & clang::driver::Compilation::getActions ( ) const
inline

Definition at line 200 of file Compilation.h.

◆ getActiveOffloadKinds()

unsigned clang::driver::Compilation::getActiveOffloadKinds ( ) const
inline

Definition at line 143 of file Compilation.h.

◆ getArgs() [1/2]

llvm::opt::DerivedArgList & clang::driver::Compilation::getArgs ( )
inline

Definition at line 197 of file Compilation.h.

◆ getArgs() [2/2]

const llvm::opt::DerivedArgList & clang::driver::Compilation::getArgs ( ) const
inline

Definition at line 195 of file Compilation.h.

Referenced by ExecuteCommand().

◆ getArgsForToolChain()

const DerivedArgList & Compilation::getArgsForToolChain ( const ToolChain * TC,
StringRef BoundArch,
Action::OffloadKind DeviceOffloadKind )

getArgsForToolChain - Return the derived argument list for the tool chain TC (or the default tool chain, if TC is not specified).

If a device offloading kind is specified, a translation specific for that kind is performed, if any.

Parameters
BoundArch- The bound architecture name, or 0.
DeviceOffloadKind- The offload device kind that should be used in the translation, if any.

Definition at line 58 of file Compilation.cpp.

References getSingleOffloadToolChain(), clang::driver::ToolChain::getTriple(), clang::driver::Action::OFK_OpenMP, clang::driver::ToolChain::TranslateArgs(), clang::driver::ToolChain::TranslateOpenMPTargetArgs(), and clang::driver::ToolChain::TranslateXarchArgs().

◆ getDefaultToolChain()

const ToolChain & clang::driver::Compilation::getDefaultToolChain ( ) const
inline

Definition at line 137 of file Compilation.h.

◆ getDriver()

const Driver & clang::driver::Compilation::getDriver ( ) const
inline

Definition at line 135 of file Compilation.h.

Referenced by CleanupFile(), ExecuteCommand(), and getSysRoot().

◆ getFailureResultFiles()

const ArgStringMap & clang::driver::Compilation::getFailureResultFiles ( ) const
inline

Definition at line 221 of file Compilation.h.

◆ getInputArgs()

const llvm::opt::InputArgList & clang::driver::Compilation::getInputArgs ( ) const
inline

Definition at line 193 of file Compilation.h.

◆ getJobs() [1/2]

JobList & clang::driver::Compilation::getJobs ( )
inline

Definition at line 211 of file Compilation.h.

Referenced by clang::tooling::getCC1Arguments(), and ignoreExtraCC1Commands().

◆ getJobs() [2/2]

const JobList & clang::driver::Compilation::getJobs ( ) const
inline

Definition at line 212 of file Compilation.h.

◆ getOffloadToolChains() [1/2]

template<Action::OffloadKind Kind>
const_offload_toolchains_range clang::driver::Compilation::getOffloadToolChains ( ) const
inline

Definition at line 154 of file Compilation.h.

Referenced by getSingleOffloadToolChain().

◆ getOffloadToolChains() [2/2]

const_offload_toolchains_range clang::driver::Compilation::getOffloadToolChains ( Action::OffloadKind Kind) const
inline

Definition at line 159 of file Compilation.h.

◆ getResultFiles()

const ArgStringMap & clang::driver::Compilation::getResultFiles ( ) const
inline

Definition at line 219 of file Compilation.h.

◆ getSingleOffloadToolChain()

template<Action::OffloadKind Kind>
const ToolChain * clang::driver::Compilation::getSingleOffloadToolChain ( ) const
inline

Return an offload toolchain of the provided kind.

Only one is expected to exist.

Definition at line 172 of file Compilation.h.

References getOffloadToolChains().

Referenced by getArgsForToolChain().

◆ getSysRoot()

StringRef Compilation::getSysRoot ( ) const

Returns the sysroot path.

Definition at line 298 of file Compilation.cpp.

References getDriver(), and clang::driver::Driver::SysRoot.

◆ getTempFiles() [1/2]

llvm::opt::ArgStringList & clang::driver::Compilation::getTempFiles ( )
inline

Definition at line 216 of file Compilation.h.

◆ getTempFiles() [2/2]

const llvm::opt::ArgStringList & clang::driver::Compilation::getTempFiles ( ) const
inline

Definition at line 217 of file Compilation.h.

◆ getTimeTraceFile()

const char * clang::driver::Compilation::getTimeTraceFile ( const JobAction * JA) const
inline

Definition at line 269 of file Compilation.h.

◆ hasOffloadToolChain()

template<Action::OffloadKind Kind>
bool clang::driver::Compilation::hasOffloadToolChain ( ) const
inline

Return true if an offloading tool chain of a given kind exists.

Definition at line 164 of file Compilation.h.

◆ initCompilationForDiagnostics()

void Compilation::initCompilationForDiagnostics ( )

initCompilationForDiagnostics - Remove stale state and suppress output so compilation can be reexecuted to generate additional diagnostic information (e.g., preprocessed source(s)).

Definition at line 255 of file Compilation.cpp.

References CleanupFileList().

◆ isForDiagnostics()

bool clang::driver::Compilation::isForDiagnostics ( ) const
inline

Return true if we're compiling for diagnostics.

Definition at line 327 of file Compilation.h.

◆ isOffloadingHostKind()

unsigned clang::driver::Compilation::isOffloadingHostKind ( Action::OffloadKind Kind) const
inline

Definition at line 139 of file Compilation.h.

◆ MakeAction()

template<typename T, typename... Args>
T * clang::driver::Compilation::MakeAction ( Args &&... Arg)
inline

Creates a new Action owned by this Compilation.

The new Action is not added to the list returned by getActions().

Definition at line 205 of file Compilation.h.

References clang::T.

◆ Redirect()

void Compilation::Redirect ( ArrayRef< std::optional< StringRef > > Redirects)

Redirect - Redirect output of this compilation.

Can only be done once.

Parameters
Redirects- array of optional paths. The array should have a size of three. The inferior process's stdin(0), stdout(1), and stderr(2) will be redirected to the corresponding paths, if provided (not std::nullopt).

Definition at line 302 of file Compilation.cpp.

◆ setContainsError()

void clang::driver::Compilation::setContainsError ( )
inline

Force driver to fail before toolchain is created.

This is necessary when error happens in action builder.

Definition at line 334 of file Compilation.h.

◆ setPostCallback()

void clang::driver::Compilation::setPostCallback ( const std::function< void(const Command &, int)> & CB)
inline

Installs a handler that is executed when a compilation job is finished.

The arguments of the callback specify the compilation job as an instance of class Command and the exit status of the child process executed that job.

Definition at line 229 of file Compilation.h.

References std::function.


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