clang 23.0.0git
clang::CowCompilerInvocation Class Reference

Same as CompilerInvocation, but with copy-on-write optimization. More...

#include "clang/Frontend/CompilerInvocation.h"

Inheritance diagram for clang::CowCompilerInvocation:
[legend]

Classes

struct  VisitConstResult
 The result of const visitation. More...
struct  VisitMutResult
 The result of mutable visitation. More...

Public Member Functions

 CowCompilerInvocation ()=default
 CowCompilerInvocation (const CowCompilerInvocation &X)
 CowCompilerInvocation (CowCompilerInvocation &&)=default
CowCompilerInvocationoperator= (const CowCompilerInvocation &X)
 ~CowCompilerInvocation ()=default
 CowCompilerInvocation (const CompilerInvocation &X)
 CowCompilerInvocation (CompilerInvocation &&X)
 CowCompilerInvocation (ShallowConstructor, const CompilerInvocation &X)
 Construct a CowCompilerInvocation that aliases the option storage of X without deep-copying.
void visitMutPaths (llvm::function_ref< VisitMutResult(StringRef, std::string &)> Cb)
 Visits paths stored in the invocation, allowing the callback to mutate them via the out-param.
void visitPaths (llvm::function_ref< VisitConstResult(StringRef)> Cb) const
 Visits paths stored in the invocation.
LangOptionsgetMutLangOpts ()
 Mutable getters.
TargetOptionsgetMutTargetOpts ()
DiagnosticOptionsgetMutDiagnosticOpts ()
HeaderSearchOptionsgetMutHeaderSearchOpts ()
PreprocessorOptionsgetMutPreprocessorOpts ()
AnalyzerOptionsgetMutAnalyzerOpts ()
MigratorOptionsgetMutMigratorOpts ()
APINotesOptionsgetMutAPINotesOpts ()
CodeGenOptionsgetMutCodeGenOpts ()
FileSystemOptionsgetMutFileSystemOpts ()
FrontendOptionsgetMutFrontendOpts ()
DependencyOutputOptionsgetMutDependencyOutputOpts ()
PreprocessorOutputOptionsgetMutPreprocessorOutputOpts ()
ssaf::SSAFOptionsgetMutSSAFOpts ()
Public Member Functions inherited from clang::CompilerInvocationBase
const LangOptionsgetLangOpts () const
 Const getters.
const TargetOptionsgetTargetOpts () const
const DiagnosticOptionsgetDiagnosticOpts () const
const HeaderSearchOptionsgetHeaderSearchOpts () const
const PreprocessorOptionsgetPreprocessorOpts () const
const AnalyzerOptionsgetAnalyzerOpts () const
const MigratorOptionsgetMigratorOpts () const
const APINotesOptionsgetAPINotesOpts () const
const CodeGenOptionsgetCodeGenOpts () const
const FileSystemOptionsgetFileSystemOpts () const
const FrontendOptionsgetFrontendOpts () const
const DependencyOutputOptionsgetDependencyOutputOpts () const
const PreprocessorOutputOptionsgetPreprocessorOutputOpts () const
const ssaf::SSAFOptionsgetSSAFOpts () const
void generateCC1CommandLine (llvm::SmallVectorImpl< const char * > &Args, StringAllocator SA) const
 Generate cc1-compatible command line arguments from this instance.
void generateCC1CommandLine (ArgumentConsumer Consumer) const
 Generate cc1-compatible command line arguments from this instance.
std::vector< std::string > getCC1CommandLine () const
 Generate cc1-compatible command line arguments from this instance, wrapping the result as a std::vector<std::string>.

Additional Inherited Members

using StringAllocator = llvm::function_ref<const char *(const Twine &)>
 Command line generation.
using ArgumentConsumer = llvm::function_ref<void(const Twine &)>
Protected Member Functions inherited from clang::CompilerInvocationBase
 CompilerInvocationBase ()
 CompilerInvocationBase (EmptyConstructor)
 CompilerInvocationBase (const CompilerInvocationBase &X)=delete
 CompilerInvocationBase (CompilerInvocationBase &&X)=default
CompilerInvocationBaseoperator= (const CompilerInvocationBase &X)=delete
CompilerInvocationBasedeep_copy_assign (const CompilerInvocationBase &X)
CompilerInvocationBaseshallow_copy_assign (const CompilerInvocationBase &X)
CompilerInvocationBaseoperator= (CompilerInvocationBase &&X)=default
 ~CompilerInvocationBase ()=default
Protected Attributes inherited from clang::CompilerInvocationBase
std::shared_ptr< LangOptionsLangOpts
 Options controlling the language variant.
std::shared_ptr< TargetOptionsTargetOpts
 Options controlling the target.
std::shared_ptr< DiagnosticOptionsDiagnosticOpts
 Options controlling the diagnostic engine.
std::shared_ptr< HeaderSearchOptionsHSOpts
 Options controlling the #include directive.
std::shared_ptr< PreprocessorOptionsPPOpts
 Options controlling the preprocessor (aside from #include handling).
std::shared_ptr< AnalyzerOptionsAnalyzerOpts
 Options controlling the static analyzer.
std::shared_ptr< MigratorOptionsMigratorOpts
std::shared_ptr< APINotesOptionsAPINotesOpts
 Options controlling API notes.
std::shared_ptr< CodeGenOptionsCodeGenOpts
 Options controlling IRgen and the backend.
std::shared_ptr< FileSystemOptionsFSOpts
 Options controlling file system operations.
std::shared_ptr< FrontendOptionsFrontendOpts
 Options controlling the frontend itself.
std::shared_ptr< DependencyOutputOptionsDependencyOutputOpts
 Options controlling dependency output.
std::shared_ptr< PreprocessorOutputOptionsPreprocessorOutputOpts
 Options controlling preprocessed output.
std::shared_ptr< ssaf::SSAFOptionsSSAFOpts
 Options controlling the Scalable Static Analysis Framework (SSAF).

Detailed Description

Same as CompilerInvocation, but with copy-on-write optimization.

Definition at line 375 of file CompilerInvocation.h.

Constructor & Destructor Documentation

◆ CowCompilerInvocation() [1/6]

clang::CowCompilerInvocation::CowCompilerInvocation ( )
default

◆ CowCompilerInvocation() [2/6]

clang::CowCompilerInvocation::CowCompilerInvocation ( const CowCompilerInvocation & X)
inline

◆ CowCompilerInvocation() [3/6]

clang::CowCompilerInvocation::CowCompilerInvocation ( CowCompilerInvocation && )
default

◆ ~CowCompilerInvocation()

clang::CowCompilerInvocation::~CowCompilerInvocation ( )
default

◆ CowCompilerInvocation() [4/6]

clang::CowCompilerInvocation::CowCompilerInvocation ( const CompilerInvocation & X)
inline

◆ CowCompilerInvocation() [5/6]

clang::CowCompilerInvocation::CowCompilerInvocation ( CompilerInvocation && X)
inline

◆ CowCompilerInvocation() [6/6]

clang::CowCompilerInvocation::CowCompilerInvocation ( ShallowConstructor ,
const CompilerInvocation & X )
inline

Construct a CowCompilerInvocation that aliases the option storage of X without deep-copying.

Subsequent mutations through getMut*Opts() will copy-on-write per group as usual, leaving X unaffected. The caller must guarantee that X is not mutated for the lifetime of the constructed invocation.

Definition at line 402 of file CompilerInvocation.h.

References clang::CompilerInvocationBase::CompilerInvocationBase(), clang::CompilerInvocationBase::shallow_copy_assign(), and X.

Member Function Documentation

◆ getMutAnalyzerOpts()

AnalyzerOptions & CowCompilerInvocation::getMutAnalyzerOpts ( )

◆ getMutAPINotesOpts()

APINotesOptions & CowCompilerInvocation::getMutAPINotesOpts ( )

◆ getMutCodeGenOpts()

CodeGenOptions & CowCompilerInvocation::getMutCodeGenOpts ( )

Definition at line 232 of file CompilerInvocation.cpp.

References clang::CompilerInvocationBase::CodeGenOpts, and ensureOwned().

Referenced by optimizeCWD().

◆ getMutDependencyOutputOpts()

DependencyOutputOptions & CowCompilerInvocation::getMutDependencyOutputOpts ( )

◆ getMutDiagnosticOpts()

DiagnosticOptions & CowCompilerInvocation::getMutDiagnosticOpts ( )

◆ getMutFileSystemOpts()

FileSystemOptions & CowCompilerInvocation::getMutFileSystemOpts ( )

Definition at line 236 of file CompilerInvocation.cpp.

References ensureOwned(), and clang::CompilerInvocationBase::FSOpts.

Referenced by optimizeCWD().

◆ getMutFrontendOpts()

FrontendOptions & CowCompilerInvocation::getMutFrontendOpts ( )

◆ getMutHeaderSearchOpts()

HeaderSearchOptions & CowCompilerInvocation::getMutHeaderSearchOpts ( )

Definition at line 212 of file CompilerInvocation.cpp.

References ensureOwned(), and clang::CompilerInvocationBase::HSOpts.

◆ getMutLangOpts()

LangOptions & CowCompilerInvocation::getMutLangOpts ( )

Mutable getters.

Definition at line 200 of file CompilerInvocation.cpp.

References ensureOwned(), and clang::CompilerInvocationBase::LangOpts.

◆ getMutMigratorOpts()

MigratorOptions & CowCompilerInvocation::getMutMigratorOpts ( )

◆ getMutPreprocessorOpts()

PreprocessorOptions & CowCompilerInvocation::getMutPreprocessorOpts ( )

Definition at line 216 of file CompilerInvocation.cpp.

References ensureOwned(), and clang::CompilerInvocationBase::PPOpts.

◆ getMutPreprocessorOutputOpts()

PreprocessorOutputOptions & CowCompilerInvocation::getMutPreprocessorOutputOpts ( )

◆ getMutSSAFOpts()

ssaf::SSAFOptions & CowCompilerInvocation::getMutSSAFOpts ( )

◆ getMutTargetOpts()

TargetOptions & CowCompilerInvocation::getMutTargetOpts ( )

◆ operator=()

CowCompilerInvocation & clang::CowCompilerInvocation::operator= ( const CowCompilerInvocation & X)
inline

◆ visitMutPaths()

void CowCompilerInvocation::visitMutPaths ( llvm::function_ref< VisitMutResult(StringRef, std::string &)> Cb)

Visits paths stored in the invocation, allowing the callback to mutate them via the out-param.

This upholds the same copy-on-write semantics as the mutable getters.

Definition at line 5375 of file CompilerInvocation.cpp.

References clang::CompilerInvocationBase::CodeGenOpts, clang::CompilerInvocationBase::DependencyOutputOpts, clang::File, clang::CompilerInvocationBase::FrontendOpts, clang::CompilerInvocationBase::FSOpts, clang::CompilerInvocationBase::HSOpts, clang::CompilerInvocationBase::LangOpts, clang::CompilerInvocationBase::PPOpts, RETURN_IF, and RETURN_IF_MANY.

Referenced by visitPaths().

◆ visitPaths()

void CowCompilerInvocation::visitPaths ( llvm::function_ref< VisitConstResult(StringRef)> Cb) const

Visits paths stored in the invocation.

Definition at line 5451 of file CompilerInvocation.cpp.

References CowCompilerInvocation(), and visitMutPaths().

Referenced by isSafeToIgnoreCWD().


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