clang 24.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
CowCompilerInvocation & operator= (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.
LangOptions & getMutLangOpts ()
 Mutable getters.
TargetOptions & getMutTargetOpts ()
DiagnosticOptions & getMutDiagnosticOpts ()
HeaderSearchOptions & getMutHeaderSearchOpts ()
PreprocessorOptions & getMutPreprocessorOpts ()
AnalyzerOptions & getMutAnalyzerOpts ()
MigratorOptions & getMutMigratorOpts ()
APINotesOptions & getMutAPINotesOpts ()
CodeGenOptions & getMutCodeGenOpts ()
FileSystemOptions & getMutFileSystemOpts ()
FrontendOptions & getMutFrontendOpts ()
DependencyOutputOptions & getMutDependencyOutputOpts ()
PreprocessorOutputOptions & getMutPreprocessorOutputOpts ()
ssaf::SSAFOptions & getMutSSAFOpts ()
Public Member Functions inherited from clang::CompilerInvocationBase
const LangOptions & getLangOpts () const
 Const getters.
const TargetOptions & getTargetOpts () const
const DiagnosticOptions & getDiagnosticOpts () const
const HeaderSearchOptions & getHeaderSearchOpts () const
const PreprocessorOptions & getPreprocessorOpts () const
const AnalyzerOptions & getAnalyzerOpts () const
const MigratorOptions & getMigratorOpts () const
const APINotesOptions & getAPINotesOpts () const
const CodeGenOptions & getCodeGenOpts () const
const FileSystemOptions & getFileSystemOpts () const
const FrontendOptions & getFrontendOpts () const
const DependencyOutputOptions & getDependencyOutputOpts () const
const PreprocessorOutputOptions & getPreprocessorOutputOpts () const
const ssaf::SSAFOptions & getSSAFOpts () 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
CompilerInvocationBase & operator= (const CompilerInvocationBase &X)=delete
CompilerInvocationBase & deep_copy_assign (const CompilerInvocationBase &X)
CompilerInvocationBase & shallow_copy_assign (const CompilerInvocationBase &X)
CompilerInvocationBase & operator= (CompilerInvocationBase &&X)=default
 ~CompilerInvocationBase ()=default
Protected Attributes inherited from clang::CompilerInvocationBase
std::shared_ptr< LangOptions > LangOpts
 Options controlling the language variant.
std::shared_ptr< TargetOptions > TargetOpts
 Options controlling the target.
std::shared_ptr< DiagnosticOptions > DiagnosticOpts
 Options controlling the diagnostic engine.
std::shared_ptr< HeaderSearchOptions > HSOpts
 Options controlling the #include directive.
std::shared_ptr< PreprocessorOptions > PPOpts
 Options controlling the preprocessor (aside from #include handling).
std::shared_ptr< AnalyzerOptions > AnalyzerOpts
 Options controlling the static analyzer.
std::shared_ptr< MigratorOptions > MigratorOpts
std::shared_ptr< APINotesOptions > APINotesOpts
 Options controlling API notes.
std::shared_ptr< CodeGenOptions > CodeGenOpts
 Options controlling IRgen and the backend.
std::shared_ptr< FileSystemOptions > FSOpts
 Options controlling file system operations.
std::shared_ptr< FrontendOptions > FrontendOpts
 Options controlling the frontend itself.
std::shared_ptr< DependencyOutputOptions > DependencyOutputOpts
 Options controlling dependency output.
std::shared_ptr< PreprocessorOutputOptions > PreprocessorOutputOpts
 Options controlling preprocessed output.
std::shared_ptr< ssaf::SSAFOptions > SSAFOpts
 Options controlling the Scalable Static Analysis Framework (SSAF).

Detailed Description

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

Definition at line 370 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 397 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 5419 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 5495 of file CompilerInvocation.cpp.

References CowCompilerInvocation(), and visitMutPaths().

Referenced by isSafeToIgnoreCWD().


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