|
LLVM 24.0.0git
|
#include "llvm/Support/CommandLine.h"#include "DebugOptions.h"#include "llvm-c/Support.h"#include "llvm/ADT/ArrayRef.h"#include "llvm/ADT/STLFunctionalExtras.h"#include "llvm/ADT/SmallPtrSet.h"#include "llvm/ADT/SmallString.h"#include "llvm/ADT/StringExtras.h"#include "llvm/ADT/StringMap.h"#include "llvm/ADT/StringRef.h"#include "llvm/ADT/Twine.h"#include "llvm/Config/config.h"#include "llvm/Support/Compiler.h"#include "llvm/Support/ConvertUTF.h"#include "llvm/Support/Debug.h"#include "llvm/Support/Error.h"#include "llvm/Support/ErrorHandling.h"#include "llvm/Support/FileSystem.h"#include "llvm/Support/LibraryOptionsContext.h"#include "llvm/Support/ManagedStatic.h"#include "llvm/Support/MemoryBuffer.h"#include "llvm/Support/Path.h"#include "llvm/Support/Process.h"#include "llvm/Support/StringSaver.h"#include "llvm/Support/TypeSize.h"#include "llvm/Support/VirtualFileSystem.h"#include "llvm/Support/raw_ostream.h"#include <cstdlib>#include <optional>#include <string>Go to the source code of this file.
Namespaces | |
| namespace | llvm |
| This is an optimization pass for GlobalISel generic memory operations. | |
| namespace | llvm::cl |
| This namespace contains all of the command line option processing machinery. | |
Macros | |
| #define | DEBUG_TYPE "commandline" |
| #define | PRINT_OPT_DIFF(T) |
| #define | LLVM_IS_DEBUG_BUILD 0 |
Typedefs | |
| using | OptionsMapTy = DenseMap<StringRef, Option *> |
Functions | |
| void | opt_bool_anchor () |
| void | opt_char_anchor () |
| void | opt_int_anchor () |
| void | opt_unsigned_anchor () |
| static size_t | argPlusPrefixesSize (StringRef ArgName, size_t Pad=DefaultPad) |
| static SmallString< 8 > | argPrefix (StringRef ArgName, size_t Pad=DefaultPad) |
| static CommandLineParser & | globalParser () |
| static Error | parseLibraryOption (LibraryOptions &L, void *Opts, ArrayRef< const char * > Args, unsigned &Consumed, BumpPtrAllocator &Alloc, SmallVectorImpl< const char * > *Record=nullptr) |
| template<typename T, T TrueVal, T FalseVal> | |
| static bool | parseBool (Option &O, StringRef ArgName, StringRef Arg, T &Value) |
| static Option * | LookupNearestOption (StringRef Arg, const OptionsMapTy &OptionsMap, std::string &NearestString) |
| LookupNearestOption - Lookup the closest match to the option specified by the specified option on the command line. | |
| static bool | CommaSeparateAndAddOccurrence (Option *Handler, unsigned pos, StringRef ArgName, StringRef Value) |
| CommaSeparateAndAddOccurrence - A wrapper around Handler->addOccurrence() that does special handling of cl::CommaSeparated options. | |
| static bool | ProvideOption (Option *Handler, StringRef ArgName, StringRef Value, int argc, const char *const *argv, int &i) |
| ProvideOption - For Value, this differentiates between an empty value ("") and a null value (StringRef()). | |
| static Option * | findPrefixOption (StringRef Name, size_t &Length, const OptionsMapTy &OptionsMap) |
| static Option * | HandlePrefixedOption (StringRef &Arg, StringRef &Value, const OptionsMapTy &OptionsMap) |
| The specified argument string (which started with at least one '-') does not fully match an available option. | |
| static bool | RequiresValue (const Option *O) |
| static bool | EatsUnboundedNumberOfValues (const Option *O) |
| static bool | isWhitespace (char C) |
| static bool | isWhitespaceOrNull (char C) |
| static bool | isQuote (char C) |
| static size_t | parseBackslash (StringRef Src, size_t I, SmallString< 128 > &Token) |
| Backslashes are interpreted in a rather complicated way in the Windows-style command line, because backslashes are used both to separate path and to escape double quote. | |
| static bool | isWindowsSpecialChar (char C) |
| static bool | isWindowsSpecialCharInCommandName (char C) |
| static void | tokenizeWindowsCommandLineImpl (StringRef Src, StringSaver &Saver, function_ref< void(StringRef)> AddToken, bool AlwaysCopy, function_ref< void()> MarkEOL, bool InitialCommandName) |
| static bool | hasUTF8ByteOrderMark (ArrayRef< char > S) |
| static void | ExpandBasePaths (StringRef BasePath, StringSaver &Saver, const char *&Arg) |
| static void | initCommonOptions () |
| static bool | parseCommandLineOptionsImpl (LibraryOptionsContext *Context, ArrayRef< const char * > Args, StringRef Overview, raw_ostream *Errs, vfs::FileSystem *VFS, const char *EnvVar) |
| static StringRef | getValueStr (const Option &O, StringRef DefaultMsg) |
| template<typename FixedOrScalableQuantityT> | |
| static bool | parseFixedOrScalableQuantity (Option &O, StringRef Arg, StringRef ValueKind, FixedOrScalableQuantityT &Value) |
| static bool | parseDouble (Option &O, StringRef Arg, double &Value) |
| static size_t | getOptionPrefixesSize () |
| static bool | shouldPrintOption (StringRef Name, StringRef Description, const Option &O) |
| static raw_ostream & | llvm::cl::operator<< (raw_ostream &OS, boolOrDefault V) |
| static int | OptNameCompare (const std::pair< const char *, Option * > *LHS, const std::pair< const char *, Option * > *RHS) |
| static int | SubNameCompare (const std::pair< const char *, SubCommand * > *LHS, const std::pair< const char *, SubCommand * > *RHS) |
| static void | sortOpts (OptionsMapTy &OptMap, SmallVectorImpl< std::pair< const char *, Option * > > &Opts, bool ShowHidden) |
| static void | sortSubCommands (const SmallPtrSetImpl< SubCommand * > &SubMap, SmallVectorImpl< std::pair< const char *, SubCommand * > > &Subs) |
| void | LLVMParseCommandLineOptions (int argc, const char *const *argv, const char *Overview) |
| This function parses the given arguments using the LLVM command line parser. | |
Variables | |
| static const size_t | DefaultPad = 2 |
| static StringRef | ArgPrefix = "-" |
| static StringRef | ArgPrefixLong = "--" |
| static StringRef | ArgHelpPrefix = " - " |
| static StringRef | EqValue = "=<value>" |
| static StringRef | EmptyOption = "<empty>" |
| static StringRef | OptionPrefix = " =" |
| static const size_t | MaxOptWidth = 8 |
| static ManagedStatic< CommandLineCommonOptions > | CommonOptions |
| #define DEBUG_TYPE "commandline" |
Definition at line 53 of file CommandLine.cpp.
| #define LLVM_IS_DEBUG_BUILD 0 |
Definition at line 2629 of file CommandLine.cpp.
| #define PRINT_OPT_DIFF | ( | T | ) |
Definition at line 2272 of file CommandLine.cpp.
| using OptionsMapTy = DenseMap<StringRef, Option *> |
Definition at line 144 of file CommandLine.cpp.
|
static |
Definition at line 128 of file CommandLine.cpp.
References ArgHelpPrefix, ArgPrefix, ArgPrefixLong, DefaultPad, and llvm::StringRef::size().
Referenced by llvm::cl::basic_parser_impl::getOptionWidth(), llvm::cl::generic_parser_base::getOptionWidth(), and llvm::cl::generic_parser_base::printOptionInfo().
|
static |
Definition at line 135 of file CommandLine.cpp.
References ArgPrefix, ArgPrefixLong, DefaultPad, I, llvm::cl::Prefix, and llvm::StringRef::size().
|
static |
CommaSeparateAndAddOccurrence - A wrapper around Handler->addOccurrence() that does special handling of cl::CommaSeparated options.
Definition at line 679 of file CommandLine.cpp.
References llvm::cl::Option::addOccurrence(), llvm::cl::CommaSeparated, llvm::StringRef::find(), llvm::cl::Option::getMiscFlags(), llvm::StringRef::npos, and llvm::StringRef::substr().
Referenced by ProvideOption().
Definition at line 784 of file CommandLine.cpp.
References llvm::cl::OneOrMore, and llvm::cl::ZeroOrMore.
|
static |
Definition at line 1123 of file CommandLine.cpp.
References llvm::SmallString< InternalLen >::append(), llvm::sys::path::append(), assert(), llvm::StringRef::data(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), llvm::StringRef::empty(), llvm::StringRef::find(), llvm::sys::path::is_absolute(), LHS, llvm::StringRef::npos, llvm::StringSaver::save(), llvm::StringRef::size(), llvm::SmallString< InternalLen >::str(), and llvm::StringRef::substr().
|
static |
Definition at line 741 of file CommandLine.cpp.
References llvm::cl::AlwaysPrefix, llvm::Length, llvm::DenseMapBase< StorageT, KeyT, ValueT, KeyInfoT, BucketT >::lookup(), and llvm::cl::Prefix.
Referenced by HandlePrefixedOption().
|
static |
Definition at line 2148 of file CommandLine.cpp.
References ArgHelpPrefix, and OptionPrefix.
Referenced by llvm::cl::generic_parser_base::getOptionWidth(), and llvm::cl::generic_parser_base::printOptionInfo().
Definition at line 1897 of file CommandLine.cpp.
Referenced by llvm::cl::basic_parser_impl::getOptionWidth(), and llvm::cl::basic_parser_impl::printOptionInfo().
|
static |
Definition at line 440 of file CommandLine.cpp.
Referenced by llvm::cl::Option::addArgument(), llvm::cl::addLibraryOptions(), llvm::cl::AddLiteralOption(), llvm::cl::LibraryOptionsContext::assign(), llvm::cl::Option::error(), llvm::cl::extrahelp::extrahelp(), llvm::cl::getRegisteredOptions(), llvm::cl::getRegisteredSubcommands(), llvm::cl::SubCommand::operator bool(), parseCommandLineOptionsImpl(), llvm::cl::PrintOptionValues(), llvm::cl::SubCommand::registerSubCommand(), llvm::cl::Option::removeArgument(), llvm::cl::ResetCommandLineParser(), llvm::cl::Option::setArgStr(), and llvm::cl::SubCommand::unregisterSubCommand().
|
static |
The specified argument string (which started with at least one '-') does not fully match an available option.
Check to see if this is a prefix option. If so, split arg into output an Arg/Value pair and return the Option to parse it with.
Definition at line 758 of file CommandLine.cpp.
References llvm::StringRef::drop_front(), findPrefixOption(), llvm::cl::Option::getFormattingFlag(), llvm::Length, llvm::cl::Prefix, llvm::StringRef::size(), llvm::StringRef::starts_with(), and llvm::StringRef::substr().
Definition at line 1118 of file CommandLine.cpp.
References llvm::ArrayRef< T >::size().
|
static |
Definition at line 2757 of file CommandLine.cpp.
References CommonOptions, llvm::initDebugCounterOptions(), llvm::initDebugOptions(), llvm::initGraphWriterOptions(), llvm::initRandomSeedOptions(), llvm::initSignalsOptions(), llvm::initStatisticOptions(), llvm::initTimerOptions(), and llvm::initWithColorOptions().
Referenced by llvm::cl::getRegisteredOptions(), llvm::cl::HideUnrelatedOptions(), llvm::cl::HideUnrelatedOptions(), and parseCommandLineOptionsImpl().
Definition at line 797 of file CommandLine.cpp.
References C().
Referenced by llvm::cl::tokenizeConfigFile(), and llvm::cl::TokenizeGNUCommandLine().
Definition at line 789 of file CommandLine.cpp.
References C().
Referenced by isWhitespaceOrNull(), llvm::cl::tokenizeConfigFile(), and llvm::cl::TokenizeGNUCommandLine().
Definition at line 793 of file CommandLine.cpp.
References C(), and isWhitespace().
Referenced by isWindowsSpecialChar(), isWindowsSpecialCharInCommandName(), and tokenizeWindowsCommandLineImpl().
Definition at line 903 of file CommandLine.cpp.
References C(), and isWhitespaceOrNull().
Referenced by tokenizeWindowsCommandLineImpl().
Definition at line 906 of file CommandLine.cpp.
References C(), and isWhitespaceOrNull().
Referenced by tokenizeWindowsCommandLineImpl().
|
static |
LookupNearestOption - Lookup the closest match to the option specified by the specified option on the command line.
If there is a value specified (after an equal sign) return that as well. This assumes that leading dashes have already been stripped.
Definition at line 633 of file CommandLine.cpp.
References _, llvm::StringRef::edit_distance(), llvm::StringRef::empty(), LHS, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::cl::ReallyHidden, RHS, llvm::StringRef::split(), and llvm::cl::ValueDisallowed.
| void opt_bool_anchor | ( | ) |
Definition at line 115 of file CommandLine.cpp.
| void opt_char_anchor | ( | ) |
Definition at line 116 of file CommandLine.cpp.
| void opt_int_anchor | ( | ) |
Definition at line 117 of file CommandLine.cpp.
| void opt_unsigned_anchor | ( | ) |
Definition at line 118 of file CommandLine.cpp.
|
static |
Backslashes are interpreted in a rather complicated way in the Windows-style command line, because backslashes are used both to separate path and to escape double quote.
This method consumes runs of backslashes as well as the following double quote if it's escaped.
Definition at line 879 of file CommandLine.cpp.
References llvm::SmallString< InternalLen >::append(), E(), I, and llvm::SmallVectorTemplateBase< T, bool >::push_back().
Referenced by tokenizeWindowsCommandLineImpl().
Definition at line 466 of file CommandLine.cpp.
References llvm::StringRef::data(), and T.
|
static |
Definition at line 1449 of file CommandLine.cpp.
References A(), llvm::append_range(), llvm::sys::Process::GetEnv(), globalParser(), initCommonOptions(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::SmallVectorTemplateCommon< T, typename >::size(), and llvm::cl::TokenizeGNUCommandLine().
Referenced by llvm::cl::ParseCommandLineOptions(), and llvm::cl::parseCommandLineOptions().
Definition at line 2109 of file CommandLine.cpp.
References llvm::to_float().
|
static |
Definition at line 2010 of file CommandLine.cpp.
References llvm::StringRef::consume_front(), llvm::StringRef::getAsInteger(), llvm::StringRef::ltrim(), and llvm::StringRef::trim().
|
static |
Definition at line 449 of file CommandLine.cpp.
References Alloc, llvm::StringRef::data(), E(), llvm::StringSaver::save(), Saved, and llvm::Error::success().
Referenced by llvm::cl::LibraryOptionsContext::parse().
|
inlinestatic |
ProvideOption - For Value, this differentiates between an empty value ("") and a null value (StringRef()).
The later is accepted for arguments that don't allow a value (-foo) the former is rejected (-foo=).
Definition at line 706 of file CommandLine.cpp.
References llvm::cl::AlwaysPrefix, assert(), CommaSeparateAndAddOccurrence(), llvm::cl::Option::error(), llvm::cl::Option::getFormattingFlag(), llvm::cl::Option::getValueExpectedFlag(), llvm::cl::ValueDisallowed, llvm::cl::ValueOptional, and llvm::cl::ValueRequired.
Referenced by llvm::cl::ProvidePositionalOption().
Definition at line 779 of file CommandLine.cpp.
References llvm::cl::OneOrMore, and llvm::cl::Required.
Definition at line 2152 of file CommandLine.cpp.
References llvm::StringRef::empty(), and llvm::cl::ValueOptional.
Referenced by llvm::cl::generic_parser_base::getOptionWidth(), and llvm::cl::generic_parser_base::printOptionInfo().
|
static |
Definition at line 2357 of file CommandLine.cpp.
References llvm::array_pod_sort(), llvm::DenseMapBase< StorageT, KeyT, ValueT, KeyInfoT, BucketT >::begin(), E(), llvm::DenseMapBase< StorageT, KeyT, ValueT, KeyInfoT, BucketT >::end(), llvm::cl::Hidden, I, llvm::SmallPtrSetImpl< PtrType >::insert(), OptNameCompare(), and llvm::cl::ReallyHidden.
|
static |
Definition at line 2384 of file CommandLine.cpp.
References llvm::array_pod_sort(), and SubNameCompare().
|
static |
Definition at line 2351 of file CommandLine.cpp.
Referenced by sortSubCommands().
|
inlinestatic |
Definition at line 912 of file CommandLine.cpp.
References assert(), llvm::SmallVectorImpl< T >::clear(), E(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), I, INIT, isWhitespaceOrNull(), isWindowsSpecialChar(), isWindowsSpecialCharInCommandName(), llvm_unreachable, parseBackslash(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::StringSaver::save(), llvm::StringRef::slice(), and llvm::SmallString< InternalLen >::str().
Referenced by llvm::cl::TokenizeWindowsCommandLine(), llvm::cl::TokenizeWindowsCommandLineFull(), and llvm::cl::TokenizeWindowsCommandLineNoCopy().
|
static |
Definition at line 126 of file CommandLine.cpp.
Referenced by argPlusPrefixesSize(), getOptionPrefixesSize(), llvm::cl::Option::printEnumValHelpStr(), and llvm::cl::Option::printHelpStr().
|
static |
Definition at line 124 of file CommandLine.cpp.
Referenced by argPlusPrefixesSize(), and argPrefix().
|
static |
Definition at line 125 of file CommandLine.cpp.
Referenced by argPlusPrefixesSize(), and argPrefix().
|
static |
Definition at line 2755 of file CommandLine.cpp.
Referenced by llvm::cl::AddExtraVersionPrinter(), llvm::cl::HideUnrelatedOptions(), llvm::cl::HideUnrelatedOptions(), initCommonOptions(), llvm::cl::PrintHelpMessage(), llvm::cl::PrintVersionMessage(), and llvm::cl::SetVersionPrinter().
Definition at line 122 of file CommandLine.cpp.
Referenced by argPlusPrefixesSize(), and argPrefix().
|
static |
Definition at line 2146 of file CommandLine.cpp.
Referenced by llvm::cl::generic_parser_base::getOptionWidth(), and llvm::cl::generic_parser_base::printOptionInfo().
|
static |
Definition at line 2145 of file CommandLine.cpp.
Referenced by llvm::cl::generic_parser_base::getOptionWidth(), and llvm::cl::generic_parser_base::printOptionInfo().
Definition at line 2230 of file CommandLine.cpp.
Referenced by llvm::cl::generic_parser_base::printGenericOptionDiff().
|
static |
Definition at line 2147 of file CommandLine.cpp.
Referenced by getOptionPrefixesSize(), and llvm::cl::generic_parser_base::printOptionInfo().