clang 22.0.0git
clang::driver::MultilibSet Class Reference

See also MultilibSetBuilder for combining multilibs into a set. More...

#include "clang/Driver/Multilib.h"

Classes

struct  FlagMatcher
 Uses regular expressions to simplify flags used for multilib selection. More...

Public Types

using multilib_list = std::vector<Multilib>
using const_iterator = multilib_list::const_iterator
using IncludeDirsFunc
using FilterCallback = llvm::function_ref<bool(const Multilib &)>

Public Member Functions

 MultilibSet ()=default
 MultilibSet (multilib_list &&Multilibs, SmallVector< FlagMatcher > &&FlagMatchers={}, SmallVector< custom_flag::Declaration > &&CustomFlagDecls={})
const multilib_listgetMultilibs ()
MultilibSetFilterOut (FilterCallback F)
 Filter out some subset of the Multilibs using a user defined callback.
void push_back (const Multilib &M)
 Add a completed Multilib to the set.
const_iterator begin () const
const_iterator end () const
std::pair< Multilib::flags_list, SmallVector< StringRef > > processCustomFlags (const Driver &D, const Multilib::flags_list &Flags) const
 Process custom flags from Flags and returns an expanded flags list and a list of macro defines.
bool select (const Driver &D, const Multilib::flags_list &Flags, llvm::SmallVectorImpl< Multilib > &, llvm::SmallVector< StringRef > *=nullptr) const
 Select compatible variants,.
unsigned size () const
llvm::StringSet expandFlags (const Multilib::flags_list &) const
 Get the given flags plus flags found by matching them against the FlagMatchers and choosing the Flags of each accordingly.
LLVM_DUMP_METHOD void dump () const
void print (raw_ostream &OS) const
MultilibSetsetIncludeDirsCallback (IncludeDirsFunc F)
const IncludeDirsFuncincludeDirsCallback () const
MultilibSetsetFilePathsCallback (IncludeDirsFunc F)
const IncludeDirsFuncfilePathsCallback () const

Static Public Member Functions

static llvm::ErrorOr< MultilibSetparseYaml (llvm::MemoryBufferRef, llvm::SourceMgr::DiagHandlerTy=nullptr, void *DiagHandlerCtxt=nullptr)

Detailed Description

See also MultilibSetBuilder for combining multilibs into a set.

Definition at line 129 of file Multilib.h.

Member Typedef Documentation

◆ const_iterator

using clang::driver::MultilibSet::const_iterator = multilib_list::const_iterator

Definition at line 132 of file Multilib.h.

◆ FilterCallback

using clang::driver::MultilibSet::FilterCallback = llvm::function_ref<bool(const Multilib &)>

Definition at line 135 of file Multilib.h.

◆ IncludeDirsFunc

Initial value:
This corresponds to a single GCC Multilib, or a segment of one controlled by a command line flag.
Definition Multilib.h:35
int const char * function
Definition c++config.h:31

Definition at line 133 of file Multilib.h.

◆ multilib_list

Definition at line 131 of file Multilib.h.

Constructor & Destructor Documentation

◆ MultilibSet() [1/2]

clang::driver::MultilibSet::MultilibSet ( )
default

◆ MultilibSet() [2/2]

clang::driver::MultilibSet::MultilibSet ( multilib_list && Multilibs,
SmallVector< FlagMatcher > && FlagMatchers = {},
SmallVector< custom_flag::Declaration > && CustomFlagDecls = {} )
inline

Definition at line 154 of file Multilib.h.

Member Function Documentation

◆ begin()

const_iterator clang::driver::MultilibSet::begin ( ) const
inline

Definition at line 168 of file Multilib.h.

◆ dump()

LLVM_DUMP_METHOD void MultilibSet::dump ( ) const

Definition at line 509 of file Multilib.cpp.

References print().

◆ end()

const_iterator clang::driver::MultilibSet::end ( ) const
inline

Definition at line 169 of file Multilib.h.

◆ expandFlags()

llvm::StringSet MultilibSet::expandFlags ( const Multilib::flags_list & InFlags) const

Get the given flags plus flags found by matching them against the FlagMatchers and choosing the Flags of each accordingly.

The select method calls this method so in most cases it's not necessary to call it directly.

Definition at line 272 of file Multilib.cpp.

References clang::Result.

Referenced by clang::driver::Driver::HandleImmediateArgs(), and select().

◆ filePathsCallback()

const IncludeDirsFunc & clang::driver::MultilibSet::filePathsCallback ( ) const
inline

Definition at line 206 of file Multilib.h.

Referenced by addMultilibsFilePaths(), and addMultilibsFilePaths().

◆ FilterOut()

MultilibSet & MultilibSet::FilterOut ( FilterCallback F)

Filter out some subset of the Multilibs using a user defined callback.

Definition at line 86 of file Multilib.cpp.

References MultilibSet().

Referenced by findAndroidArmMultilibs(), findCSKYMultilibs(), findMipsCsMultilibs(), findMipsImgMultilibs(), findMipsMtiMultilibs(), and findRISCVBareMetalMultilibs().

◆ getMultilibs()

const multilib_list & clang::driver::MultilibSet::getMultilibs ( )
inline

Definition at line 160 of file Multilib.h.

◆ includeDirsCallback()

const IncludeDirsFunc & clang::driver::MultilibSet::includeDirsCallback ( ) const
inline

Definition at line 199 of file Multilib.h.

◆ parseYaml()

llvm::ErrorOr< MultilibSet > MultilibSet::parseYaml ( llvm::MemoryBufferRef Input,
llvm::SourceMgr::DiagHandlerTy DiagHandler = nullptr,
void * DiagHandlerCtxt = nullptr )
static

Definition at line 479 of file Multilib.cpp.

References MultilibSet().

Referenced by findMultilibsFromYAML().

◆ print()

void MultilibSet::print ( raw_ostream & OS) const

Definition at line 513 of file Multilib.cpp.

Referenced by dump(), and clang::driver::operator<<().

◆ processCustomFlags()

std::pair< Multilib::flags_list, SmallVector< StringRef > > MultilibSet::processCustomFlags ( const Driver & D,
const Multilib::flags_list & Flags ) const

Process custom flags from Flags and returns an expanded flags list and a list of macro defines.

Returns a pair where:

  • first: the new flags list including custom flags after processing.
  • second: the extra macro defines to be fed to the driver.

Definition at line 151 of file Multilib.cpp.

References DiagnoseUnclaimedMultilibCustomFlags(), clang::driver::custom_flag::ValueDetail::MacroDefines, clang::driver::custom_flag::ValueDetail::Name, clang::driver::custom_flag::Prefix, clang::Result, and size().

Referenced by select().

◆ push_back()

void MultilibSet::push_back ( const Multilib & M)

Add a completed Multilib to the set.

Definition at line 91 of file Multilib.cpp.

Referenced by findOHOSMuslMultilibs().

◆ select()

bool MultilibSet::select ( const Driver & D,
const Multilib::flags_list & Flags,
llvm::SmallVectorImpl< Multilib > & Selected,
llvm::SmallVector< StringRef > * CustomFlagMacroDefines = nullptr ) const

Select compatible variants,.

Returns
false if none are compatible

Definition at line 216 of file Multilib.cpp.

References expandFlags(), and processCustomFlags().

Referenced by findAndroidArmMultilibs(), findCSKYMultilibs(), findMipsMuslMultilibs(), findOHOSMuslMultilibs(), findRISCVMultilibs(), and selectRISCVMultilib().

◆ setFilePathsCallback()

MultilibSet & clang::driver::MultilibSet::setFilePathsCallback ( IncludeDirsFunc F)
inline

Definition at line 201 of file Multilib.h.

References MultilibSet().

Referenced by findRISCVBareMetalMultilibs().

◆ setIncludeDirsCallback()

MultilibSet & clang::driver::MultilibSet::setIncludeDirsCallback ( IncludeDirsFunc F)
inline

◆ size()

unsigned clang::driver::MultilibSet::size ( ) const
inline

Definition at line 184 of file Multilib.h.

Referenced by findMipsCsMultilibs(), and processCustomFlags().


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