LLVM: llvm::cl Namespace Reference (original) (raw)

This namespace contains all of the command line option processing machinery. More...

Classes
class alias
struct aliasopt
struct applicator
struct applicator< char[n]>
struct applicator< const char[n]>
struct applicator< FormattingFlags >
struct applicator< MiscFlags >
struct applicator< NumOccurrencesFlag >
struct applicator< OptionHidden >
struct applicator< StringRef >
struct applicator< ValueExpected >
class basic_parser
class basic_parser_impl
class bits
class bits_storage
class bits_storage< DataType, bool >
struct cat
struct cb
struct desc
class ExpansionContext
Contains options that control response file expansion. More...
struct extrahelp
class generic_parser_base
struct GenericOptionValue
struct initializer
class list
struct list_initializer
class list_storage
class list_storage< DataType, bool >
struct LocationClass
struct multi_val
class opt
class opt_storage
class opt_storage< DataType, false, false >
class opt_storage< DataType, false, true >
class Option
class OptionCategory
struct OptionDiffPrinter
struct OptionDiffPrinter< DT, DT >
struct OptionEnumValue
struct OptionValue
struct OptionValue< cl::boolOrDefault >
struct OptionValue< FnT >
struct OptionValue< std::string >
struct OptionValueBase
struct OptionValueBase< DataType, false >
class OptionValueCopy
class parser
class parser< bool >
class parser< boolOrDefault >
class parser< char >
class parser< double >
class parser< float >
class parser< int >
class parser< long >
class parser< long long >
class parser< std::optional< std::string > >
class parser< std::string >
class parser< unsigned >
class parser< unsigned long >
class parser< unsigned long long >
struct sub
class SubCommand
class SubCommandGroup
struct value_desc
class ValuesClass
Typedefs
using VersionPrinterTy = std::function<void(raw_ostream &)>
using TokenizerCallback
String tokenization function type.
Enumerations
enum NumOccurrencesFlag { Optional = 0x00 , ZeroOrMore = 0x01 , Required = 0x02 , OneOrMore = 0x03 , ConsumeAfter = 0x04 }
enum ValueExpected { ValueOptional = 0x01 , ValueRequired = 0x02 , ValueDisallowed = 0x03 }
enum OptionHidden { NotHidden = 0x00 , Hidden = 0x01 , ReallyHidden = 0x02 }
enum FormattingFlags { NormalFormatting = 0x00 , Positional = 0x01 , Prefix = 0x02 , AlwaysPrefix = 0x03 }
enum MiscFlags { CommaSeparated = 0x01 , PositionalEatsArgs = 0x02 , Sink = 0x04 , Grouping = 0x08 , DefaultOption = 0x10 }
enum boolOrDefault { BOU_UNSET, BOU_TRUE, BOU_FALSE }
Functions
LLVM_ABI bool ParseCommandLineOptions (int argc, const char *const *argv, StringRef Overview="", raw_ostream *Errs=nullptr, vfs::FileSystem *VFS=nullptr, const char *EnvVar=nullptr, bool LongOptionsUseDoubleDash=false)
LLVM_ABI void SetVersionPrinter (VersionPrinterTy func)
===------------------------------------------------------------------—===// Override the default (LLVM specific) version printer used to print out the version when –version is given on the command line.
LLVM_ABI void AddExtraVersionPrinter (VersionPrinterTy func)
===------------------------------------------------------------------—===// Add an extra printer to use in addition to the default one.
LLVM_ABI void PrintOptionValues ()
LLVM_ABI void AddLiteralOption (Option &O, StringRef Name)
Adds a new option for parsing and provides the option it refers to.
LLVM_ABI OptionCategory & getGeneralCategory ()
template
initializer< Ty > init (const Ty &Val)
template
list_initializer< Ty > list_init (ArrayRef< Ty > Vals)
template
LocationClass< Ty > location (Ty &L)
template<typename F>
cb< typename detail::callback_traits< F >::result_type, typename detail::callback_traits< F >::arg_type > callback (F CB)
template<typename... OptsTy>
ValuesClass values (OptsTy... Options)
Helper to build a ValuesClass by forwarding a variable number of arguments as an initializer list to the ValuesClass constructor.
template<class ParserClass, class DT>
void printOptionDiff (const Option &O, const generic_parser_base &P, const DT &V, const OptionValue< DT > &Default, size_t GlobalWidth)
template<class ParserClass, class ValDT>
void printOptionDiff (const Option &O, const basic_parser< typename ParserClass::parser_data_type > &P, const ValDT &V, const OptionValue< ValDT > &Default, size_t GlobalWidth)
template<class Opt, class Mod, class... Mods>
void apply (Opt *O, const Mod &M, const Mods &... Ms)
template<class Opt, class Mod>
void apply (Opt *O, const Mod &M)
LLVM_ABI void PrintVersionMessage ()
Utility function for printing version number.
LLVM_ABI void PrintHelpMessage (bool Hidden=false, bool Categorized=false)
This function just prints the help message, exactly the same way as if the -help or -help-hidden option had been given on the command line.
LLVM_ABI ArrayRef< StringRef > getCompilerBuildConfig ()
An array of optional enabled settings in the LLVM build configuration, which may be of interest to compiler developers.
LLVM_ABI void printBuildConfig (raw_ostream &OS)
Prints the compiler build configuration.
LLVM_ABI StringMap< Option * > & getRegisteredOptions (SubCommand &Sub=SubCommand::getTopLevel())
Use this to get a [StringMap](classllvm%5F1%5F1StringMap.html "StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...") to all registered named options (e.g.
LLVM_ABI iterator_range< SmallPtrSet< SubCommand *, 4 >::iterator > getRegisteredSubcommands ()
Use this to get all registered SubCommands from the provided parser.
LLVM_ABI void TokenizeGNUCommandLine (StringRef Source, StringSaver &Saver, SmallVectorImpl< const char * > &NewArgv, bool MarkEOLs=false)
Tokenizes a command line that can contain escapes and quotes.
LLVM_ABI void TokenizeWindowsCommandLine (StringRef Source, StringSaver &Saver, SmallVectorImpl< const char * > &NewArgv, bool MarkEOLs=false)
Tokenizes a string of Windows command line arguments, which may contain quotes and escaped quotes.
LLVM_ABI void TokenizeWindowsCommandLineNoCopy (StringRef Source, StringSaver &Saver, SmallVectorImpl< StringRef > &NewArgv)
Tokenizes a Windows command line while attempting to avoid copies.
LLVM_ABI void TokenizeWindowsCommandLineFull (StringRef Source, StringSaver &Saver, SmallVectorImpl< const char * > &NewArgv, bool MarkEOLs=false)
Tokenizes a Windows full command line, including command name at the start.
LLVM_ABI void tokenizeConfigFile (StringRef Source, StringSaver &Saver, SmallVectorImpl< const char * > &NewArgv, bool MarkEOLs=false)
Tokenizes content of configuration file.
LLVM_ABI bool expandResponseFiles (int Argc, const char *const *Argv, const char *EnvVar, SmallVectorImpl< const char * > &NewArgv)
A convenience helper which concatenates the options specified by the environment variable EnvVar and command line options, then expands response files recursively.
LLVM_ABI bool ExpandResponseFiles (StringSaver &Saver, TokenizerCallback Tokenizer, SmallVectorImpl< const char * > &Argv)
A convenience helper which supports the typical use case of expansion function call.
LLVM_ABI bool expandResponseFiles (int Argc, const char *const *Argv, const char *EnvVar, StringSaver &Saver, SmallVectorImpl< const char * > &NewArgv)
A convenience helper which concatenates the options specified by the environment variable EnvVar and command line options, then expands response files recursively.
LLVM_ABI void HideUnrelatedOptions (cl::OptionCategory &Category, SubCommand &Sub=SubCommand::getTopLevel())
Mark all options not part of this category as cl::ReallyHidden.
LLVM_ABI void HideUnrelatedOptions (ArrayRef< const cl::OptionCategory * > Categories, SubCommand &Sub=SubCommand::getTopLevel())
Mark all options not part of the categories as cl::ReallyHidden.
LLVM_ABI void ResetAllOptionOccurrences ()
Reset all command line options to a state that looks as if they have never appeared on the command line.
LLVM_ABI void ResetCommandLineParser ()
Reset the command line parser back to its initial state.
LLVM_ABI bool ProvidePositionalOption (Option *Handler, StringRef Arg, int i)
Parses Arg into the option handler Handler.
Variables
template class LLVM_TEMPLATE_ABI basic_parser< bool >
template class LLVM_TEMPLATE_ABI basic_parser< boolOrDefault >
template class LLVM_TEMPLATE_ABI basic_parser< int >
template class LLVM_TEMPLATE_ABI basic_parser< long >
template class LLVM_TEMPLATE_ABI basic_parser< long long >
template class LLVM_TEMPLATE_ABI basic_parser< unsigned >
template class LLVM_TEMPLATE_ABI basic_parser< unsigned long >
template class LLVM_TEMPLATE_ABI basic_parser< unsigned long long >
template class LLVM_TEMPLATE_ABI basic_parser< double >
template class LLVM_TEMPLATE_ABI basic_parser< float >
template class LLVM_TEMPLATE_ABI basic_parser< std::string >
template class LLVM_TEMPLATE_ABI basic_parser< char >
template class LLVM_TEMPLATE_ABI opt< std::string >
template class LLVM_TEMPLATE_ABI opt< unsigned >
template class LLVM_TEMPLATE_ABI opt< int >
template class LLVM_TEMPLATE_ABI opt< char >
template class LLVM_TEMPLATE_ABI opt< bool >

This namespace contains all of the command line option processing machinery.

It is intentionally a short name to make qualified usage concise.

TokenizerCallback

Initial value:

bool MarkEOLs)

This class consists of common code factored out of the SmallVector class to reduce code duplication b...

StringRef - Represent a constant reference to a string, i.e.

Saves strings in the provided stable storage and returns a StringRef with a stable character pointer.

String tokenization function type.

Should be compatible with either Windows or Unix command line tokenizers.

Definition at line 2171 of file CommandLine.h.

VersionPrinterTy

boolOrDefault

Enumerator
BOU_UNSET
BOU_TRUE
BOU_FALSE

Definition at line 639 of file CommandLine.h.

FormattingFlags

Enumerator
NormalFormatting
Positional
Prefix
AlwaysPrefix

Definition at line 157 of file CommandLine.h.

MiscFlags

Enumerator
CommaSeparated
PositionalEatsArgs
Sink
Grouping
DefaultOption

Definition at line 164 of file CommandLine.h.

NumOccurrencesFlag

Enumerator
Optional
ZeroOrMore
Required
OneOrMore
ConsumeAfter

Definition at line 114 of file CommandLine.h.

OptionHidden

Enumerator
NotHidden
Hidden
ReallyHidden

Definition at line 137 of file CommandLine.h.

ValueExpected

Enumerator
ValueOptional
ValueRequired
ValueDisallowed

Definition at line 130 of file CommandLine.h.

AddExtraVersionPrinter()

void llvm:🆑:AddExtraVersionPrinter ( VersionPrinterTy func )

===------------------------------------------------------------------—===// Add an extra printer to use in addition to the default one.

This can be called multiple times, and each time it adds a new function to the list which will be called after the basic LLVM version printing is complete. Each can then add additional information specific to the tool.

Definition at line 2818 of file CommandLine.cpp.

References CommonOptions.

AddLiteralOption()

apply() [1/2]

template<class Opt, class Mod>

void llvm:🆑:apply ( Opt * O,
const Mod & M )

apply() [2/2]

template<class Opt, class Mod, class... Mods>

void llvm:🆑:apply ( Opt * O,
const Mod & M,
const Mods &... Ms )

Definition at line 1341 of file CommandLine.h.

References apply(), llvm::Mod, and llvm:🆑:applicator< Mod >::opt().

Referenced by llvm:🆑:alias::alias(), apply(), llvm:🆑:bits< DataType, Storage, ParserClass >::bits(), llvm:🆑:list< std::string, DebugCounter >::list(), and llvm:🆑:opt< DataType, ExternalStorage, ParserClass >::opt().

callback()

ExpandResponseFiles()

expandResponseFiles() [1/2]

expandResponseFiles() [2/2]

getCompilerBuildConfig()

getGeneralCategory()

getRegisteredOptions()

Use this to get a [StringMap](classllvm%5F1%5F1StringMap.html "StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...") to all registered named options (e.g.

-help).

Returns

A reference to the [StringMap](classllvm%5F1%5F1StringMap.html "StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...") used by the cl APIs to parse options.

Access to unnamed arguments (i.e. positional) are not provided because it is expected that the client already has access to these.

Typical usage:

main(int argc,char* argv[]) {

opts["help"]->setDescription("Show alphabetical help information")

}

assert(UImm &&(UImm !=~static_cast< T >(0)) &&"Invalid immediate!")

StringMap - This is an unconventional map that is specialized for handling keys that are "strings",...

size_type count(StringRef Key) const

count - Return 1 if the element is in the map, 0 otherwise.

This namespace contains all of the command line option processing machinery.

LLVM_ABI StringMap< Option * > & getRegisteredOptions(SubCommand &Sub=SubCommand::getTopLevel())

Use this to get a StringMap to all registered named options (e.g.

LLVM_ABI bool ParseCommandLineOptions(int argc, const char *const *argv, StringRef Overview="", raw_ostream *Errs=nullptr, vfs::FileSystem *VFS=nullptr, const char *EnvVar=nullptr, bool LongOptionsUseDoubleDash=false)

This is an optimization pass for GlobalISel generic memory operations.

This interface is useful for modifying options in libraries that are out of the control of the client. The options should be modified before calling llvm:🆑:ParseCommandLineOptions().

Hopefully this API can be deprecated soon. Any situation where options need to be modified by tools or libraries should be handled by sane APIs rather than just handing around a global list.

Definition at line 2822 of file CommandLine.cpp.

References assert(), GlobalParser, initCommonOptions(), and llvm::Sub.

getRegisteredSubcommands()

Use this to get all registered SubCommands from the provided parser.

Returns

A range of all SubCommand pointers registered with the parser.

Typical usage:

main(int argc, char* argv[]) {

llvm:🆑:ParseCommandLineOptions(argc, argv);

for (auto* S : llvm:🆑:getRegisteredSubcommands()) {

if (*S) {

std::cout << "Executing subcommand: " << S->getName() << std::endl;

}

}

}

LLVM_ABI iterator_range< SmallPtrSet< SubCommand *, 4 >::iterator > getRegisteredSubcommands()

Use this to get all registered SubCommands from the provided parser.

This interface is useful for defining subcommands in libraries and the dispatch from a single point (like in the main function).

Definition at line 2831 of file CommandLine.cpp.

References GlobalParser.

HideUnrelatedOptions() [1/2]

HideUnrelatedOptions() [2/2]

Mark all options not part of this category as cl::ReallyHidden.

Parameters

Category the category of options to keep displaying

Some tools (like clang-format) like to be able to hide all options that are not specific to the tool. This function allows a tool to specify a single option category to display in the -help output.

Definition at line 2835 of file CommandLine.cpp.

References CommonOptions, I, initCommonOptions(), ReallyHidden, and llvm::Sub.

init()

Definition at line 445 of file CommandLine.h.

Referenced by llvm::ApplyExtTspWithoutProfile(), llvm::ir2vec::ArgWeight(), llvm::AsmMacroMaxNestingDepth(), llvm::CheapRematWeight(), llvm::CheckBFIUnknownBlockQueries(), llvm::mir2vec::CommonOperandWeight(), llvm::CopyWeight(), DEBUG_COUNTER(), llvm::DoInstrProfNameCompression(), llvm::EnableDetailedFunctionProperties(), llvm::EnableExtTspBlockPlacement(), llvm::EnableKnowledgeRetention(), llvm::EnableLTOInternalization(), llvm::EnableMemProfContextDisambiguation(), llvm::EvictInterferenceCutoff(), llvm::ExpensiveRematWeight(), llvm::ForceImportAll(), INITIALIZE_PASS(), llvm::ir2vec::IR2VecEmbeddingKind(), llvm::IterativeBFIMaxIterationsPerBlock(), llvm::IterativeBFIPrecision(), llvm::LoadWeight(), llvm::MemProfAveLifetimeColdThreshold(), llvm::MemProfKeepAllNotColdContexts(), llvm::MemProfLifetimeAccessDensityColdThreshold(), llvm::MemProfMinAveLifetimeAccessDensityHotThreshold(), llvm::MemProfUseAmbiguousAttributes(), llvm::MemProfUseHotHints(), llvm::NoPGOWarnMismatch(), llvm::NoPGOWarnMismatchComdatWeak(), llvm::NoWarnSampleUnused(), llvm::ir2vec::OpcWeight(), llvm::mir2vec::OpcWeight(), llvm::PGOInstrumentColdFunctionOnly(), llvm::PGOWarnMissing(), llvm::PickMergedSourceLocations(), llvm::ProfileCorrelate(), llvm::ProfileInlineGrowthLimit(), llvm::ProfileInlineLimitMax(), llvm::ProfileInlineLimitMin(), llvm::ProfileSummaryCutoffCold(), llvm::ProfileSummaryCutoffHot(), llvm::ProfileSummaryHugeWorkingSetSizeThreshold(), llvm::ProfileSummaryLargeWorkingSetSizeThreshold(), llvm::codegen::RegisterCodeGenFlags::RegisterCodeGenFlags(), llvm::mc::RegisterMCTargetOptionsFlags::RegisterMCTargetOptionsFlags(), llvm::codegen::RegisterSaveStatsFlag::RegisterSaveStatsFlag(), llvm::mir2vec::RegOperandWeight(), llvm::SampleColdCallSiteThreshold(), llvm::SampleHotCallSiteThreshold(), llvm::SampleProfileMaxPropagateIterations(), llvm::SampleProfileRecordCoverage(), llvm::SampleProfileSampleCoverage(), llvm::ScalePartialSampleProfileWorkingSetSize(), llvm::ShouldPreserveAllAttributes(), llvm::SortProfiledSCC(), STATISTIC(), llvm::StoreWeight(), llvm::SupportsHotColdNew(), llvm::ir2vec::TypeWeight(), and llvm::HexagonVLIWResourceModel::VLIWResourceModel().

list_init()

location()

template

LocationClass< Ty > llvm:🆑:location ( Ty & L )

ParseCommandLineOptions()

Definition at line 1462 of file CommandLine.cpp.

References A(), llvm::sys::Process::GetEnv(), GlobalParser, I, initCommonOptions(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and TokenizeGNUCommandLine().

Referenced by llvm::handleExecNameEncodedBEOpts(), llvm::handleExecNameEncodedOptimizerOpts(), LLVMParseCommandLineOptions(), llvm::parseCommandLineOptions(), and llvm::parseFuzzerCLOpts().

printBuildConfig()

PrintHelpMessage()

void llvm:🆑:PrintHelpMessage ( bool Hidden = false,
bool Categorized = false )

This function just prints the help message, exactly the same way as if the -help or -help-hidden option had been given on the command line.

Parameters

Hidden if true will print hidden options
Categorized if true print options in categories

Definition at line 2752 of file CommandLine.cpp.

References CommonOptions, and Hidden.

printOptionDiff() [1/2]

printOptionDiff() [2/2]

PrintOptionValues()

void llvm:🆑:PrintOptionValues ( )

PrintVersionMessage()

void llvm:🆑:PrintVersionMessage ( )

ProvidePositionalOption()

ResetAllOptionOccurrences()

void llvm:🆑:ResetAllOptionOccurrences ( )

ResetCommandLineParser()

void llvm:🆑:ResetCommandLineParser ( )

Reset the command line parser back to its initial state.

This removes all options, categories, and subcommands and returns the parser to a state where no options are supported.

Definition at line 2863 of file CommandLine.cpp.

References GlobalParser.

SetVersionPrinter()

void llvm:🆑:SetVersionPrinter ( VersionPrinterTy func )

===------------------------------------------------------------------—===// Override the default (LLVM specific) version printer used to print out the version when –version is given on the command line.

This allows other systems using the CommandLine utilities to print their own version string.

Definition at line 2814 of file CommandLine.cpp.

References CommonOptions.

tokenizeConfigFile()

Tokenizes content of configuration file.

Parameters

[in] Source The string representing content of config file.
[in] Saver Delegates back to the caller for saving parsed strings.
[out] NewArgv All parsed strings are appended to NewArgv.
[in] MarkEOLs Added for compatibility with TokenizerCallback.

It works like TokenizeGNUCommandLine with ability to skip comment lines.

Definition at line 1090 of file CommandLine.cpp.

References isWhitespace(), and TokenizeGNUCommandLine().

TokenizeGNUCommandLine()

Tokenizes a command line that can contain escapes and quotes.

The quoting rules match those used by GCC and other tools that use libiberty's buildargv() or expandargv() utilities, and do not match bash. They differ from buildargv() on treatment of backslashes that do not escape a special character to make it possible to accept most Windows file paths.

Parameters

[in] Source The string to be split on whitespace with quotes.
[in] Saver Delegates back to the caller for saving parsed strings.
[in] MarkEOLs true if tokenizing a response file and you want end of lines and end of the response file to be marked with a nullptr string.
[out] NewArgv All parsed strings are appended to NewArgv.

Definition at line 838 of file CommandLine.cpp.

References llvm::CallingConv::C, llvm::SmallVectorImpl< T >::clear(), llvm::StringRef::data(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), I, isQuote(), isWhitespace(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::StringSaver::save(), and llvm::SmallString< InternalLen >::str().

Referenced by expandResponseFiles(), ParseCommandLineOptions(), and tokenizeConfigFile().

TokenizeWindowsCommandLine()

TokenizeWindowsCommandLineFull()

Tokenizes a Windows full command line, including command name at the start.

This uses the same syntax rules as TokenizeWindowsCommandLine for all but the first token. But the first token is expected to be parsed as the executable file name in the way CreateProcess would do it, rather than the way the C library startup code would do it: CreateProcess does not consider that \ is ever an escape character (because " is not a valid filename char, hence there's never a need to escape it to be used literally).

Parameters are the same as for TokenizeWindowsCommandLine. In particular, if you set MarkEOLs = true, then the first word of every line will be parsed using the special rules for command names, making this function suitable for parsing a file full of commands to execute.

Definition at line 1078 of file CommandLine.cpp.

References llvm::SmallVectorTemplateBase< T, bool >::push_back(), and tokenizeWindowsCommandLineImpl().

TokenizeWindowsCommandLineNoCopy()

values()

template<typename... OptsTy>

ValuesClass llvm:🆑:values ( OptsTy... Options )

basic_parser< bool >

basic_parser< boolOrDefault >

basic_parser< char >

basic_parser< double >

basic_parser< float >

basic_parser< int >

basic_parser< long >

basic_parser< long long >

basic_parser< std::string >

basic_parser< unsigned >

basic_parser< unsigned long >

basic_parser< unsigned long long >

opt< bool >

opt< char >

opt< int >

opt< std::string >

opt< unsigned >