LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Namespaces | Macros | Typedefs | Functions | Variables
CommandLine.cpp File Reference
#include "llvm/Support/CommandLine.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/OwningPtr.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/Twine.h"
#include "llvm/Config/config.h"
#include "llvm/Support/ConvertUTF.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/Support/system_error.h"
#include <cerrno>
#include <cstdlib>
#include <map>
Include dependency graph for CommandLine.cpp:

Go to the source code of this file.

Namespaces

 llvm
 List of target independent CodeGen pass IDs.
 
 llvm::cl
 

Macros

#define PRINT_OPT_DIFF(T)
 

Typedefs

typedef SmallPtrSet
< OptionCategory *, 16 > 
OptionCatSet
 

Functions

 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< bool >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< boolOrDefault >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< int >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< unsigned >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< unsigned long long >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< double >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< float >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< std::string >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class basic_parser< char >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class opt< unsigned >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class opt< int >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class opt< std::string >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class opt< char >)
 
 llvm::cl::TEMPLATE_INSTANTIATION (class opt< bool >)
 
static void GetOptionInfo (SmallVectorImpl< Option * > &PositionalOpts, SmallVectorImpl< Option * > &SinkOpts, StringMap< Option * > &OptionsMap)
 
static OptionLookupOption (StringRef &Arg, StringRef &Value, const StringMap< Option * > &OptionsMap)
 
static OptionLookupNearestOption (StringRef Arg, const StringMap< Option * > &OptionsMap, std::string &NearestString)
 
static bool CommaSeparateAndAddOccurence (Option *Handler, unsigned pos, StringRef ArgName, StringRef Value, bool MultiArg=false)
 
static bool ProvideOption (Option *Handler, StringRef ArgName, StringRef Value, int argc, const char *const *argv, int &i)
 
static bool ProvidePositionalOption (Option *Handler, StringRef Arg, int i)
 
static bool isGrouping (const Option *O)
 
static bool isPrefixedOrGrouping (const Option *O)
 
static OptiongetOptionPred (StringRef Name, size_t &Length, bool(*Pred)(const Option *), const StringMap< Option * > &OptionsMap)
 
static OptionHandlePrefixedOrGroupedOption (StringRef &Arg, StringRef &Value, bool &ErrorParsing, const StringMap< Option * > &OptionsMap)
 
static bool RequiresValue (const Option *O)
 
static bool EatsUnboundedNumberOfValues (const Option *O)
 
static bool isWhitespace (char C)
 
static bool isQuote (char C)
 
static bool isGNUSpecial (char C)
 
static size_t parseBackslash (StringRef Src, size_t I, SmallString< 128 > &Token)
 
static bool ExpandResponseFile (const char *FName, StringSaver &Saver, TokenizerCallback Tokenizer, SmallVectorImpl< const char * > &NewArgv)
 
static const char * getValueStr (const Option &O, const char *DefaultMsg)
 
static void printHelpStr (StringRef HelpStr, size_t Indent, size_t FirstLineIndentedBy)
 
static bool parseDouble (Option &O, StringRef Arg, double &Value)
 
static int OptNameCompare (const void *LHS, const void *RHS)
 
static void sortOpts (StringMap< Option * > &OptMap, SmallVectorImpl< std::pair< const char *, Option * > > &Opts, bool ShowHidden)
 
static HelpPrinter UncategorizedNormalPrinter (false)
 
static HelpPrinter UncategorizedHiddenPrinter (true)
 
static CategorizedHelpPrinter CategorizedNormalPrinter (false)
 
static CategorizedHelpPrinter CategorizedHiddenPrinter (true)
 
static HelpPrinterWrapper WrappedNormalPrinter (UncategorizedNormalPrinter, CategorizedNormalPrinter)
 
static HelpPrinterWrapper WrappedHiddenPrinter (UncategorizedHiddenPrinter, CategorizedHiddenPrinter)
 

Variables

static char ProgramName [80] = "<premain>"
 
static const char * ProgramOverview = 0
 
static ManagedStatic
< std::vector< const char * > > 
MoreHelp
 
static bool OptionListChanged = false
 
static OptionRegisteredOptionList = 0
 
static ManagedStatic
< OptionCatSet
RegisteredOptionCategories
 
static const size_t MaxOptWidth = 8
 
static cl::opt< HelpPrinter,
true, parser< bool > > 
HLOp ("help-list", cl::desc("Display list of available options (-help-list-hidden for more)"), cl::location(UncategorizedNormalPrinter), cl::Hidden, cl::ValueDisallowed)
 
static cl::opt< HelpPrinter,
true, parser< bool > > 
HLHOp ("help-list-hidden", cl::desc("Display list of all available options"), cl::location(UncategorizedHiddenPrinter), cl::Hidden, cl::ValueDisallowed)
 
static cl::opt
< HelpPrinterWrapper, true,
parser< bool > > 
HOp ("help", cl::desc("Display available options (-help-hidden for more)"), cl::location(WrappedNormalPrinter), cl::ValueDisallowed)
 
static cl::opt
< HelpPrinterWrapper, true,
parser< bool > > 
HHOp ("help-hidden", cl::desc("Display all available options"), cl::location(WrappedHiddenPrinter), cl::Hidden, cl::ValueDisallowed)
 
static cl::opt< boolPrintOptions ("print-options", cl::desc("Print non-default options after command line parsing"), cl::Hidden, cl::init(false))
 
static cl::opt< boolPrintAllOptions ("print-all-options", cl::desc("Print all option values after command line parsing"), cl::Hidden, cl::init(false))
 
static void(* OverrideVersionPrinter )()=0
 
static std::vector< void(*)()> * ExtraVersionPrinters = 0
 
static VersionPrinter VersionPrinterInstance
 
static cl::opt< VersionPrinter,
true, parser< bool > > 
VersOp ("version", cl::desc("Display the version of this program"), cl::location(VersionPrinterInstance), cl::ValueDisallowed)
 

Macro Definition Documentation

#define PRINT_OPT_DIFF (   T)
Value:
size_t GlobalWidth) const { \
printOptionName(O, GlobalWidth); \
std::string Str; \
{ \
raw_string_ostream SS(Str); \
SS << V; \
} \
outs() << "= " << Str; \
size_t NumSpaces = MaxOptWidth > Str.size() ? MaxOptWidth - Str.size() : 0;\
outs().indent(NumSpaces) << " (default: "; \
if (D.hasValue()) \
outs() << D.getValue(); \
outs() << "*no default*"; \
outs() << ")\n"; \
} \
raw_ostream & indent(unsigned NumSpaces)
indent - Insert 'NumSpaces' spaces.
static const size_t MaxOptWidth
void printOptionDiff(const Option &O, const generic_parser_base &P, const DT &V, const OptionValue< DT > &Default, size_t GlobalWidth)
Definition: CommandLine.h:957
raw_ostream & outs()
* if(!EatIfPresent(lltok::kw_thread_local)) return false

Definition at line 1321 of file CommandLine.cpp.

Typedef Documentation

Definition at line 115 of file CommandLine.cpp.

Function Documentation

static CategorizedHelpPrinter CategorizedHiddenPrinter ( true  )
static
static CategorizedHelpPrinter CategorizedNormalPrinter ( false  )
static
static bool CommaSeparateAndAddOccurence ( Option Handler,
unsigned  pos,
StringRef  ArgName,
StringRef  Value,
bool  MultiArg = false 
)
static

CommaSeparateAndAddOccurence - A wrapper around Handler->addOccurence() that does special handling of cl::CommaSeparated options.

Definition at line 251 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().

static bool EatsUnboundedNumberOfValues ( const Option O)
static
static bool ExpandResponseFile ( const char *  FName,
StringSaver Saver,
TokenizerCallback  Tokenizer,
SmallVectorImpl< const char * > &  NewArgv 
)
static
static void GetOptionInfo ( SmallVectorImpl< Option * > &  PositionalOpts,
SmallVectorImpl< Option * > &  SinkOpts,
StringMap< Option * > &  OptionsMap 
)
static
static Option* getOptionPred ( StringRef  Name,
size_t &  Length,
bool(*)(const Option *)  Pred,
const StringMap< Option * > &  OptionsMap 
)
static
static const char* getValueStr ( const Option O,
const char *  DefaultMsg 
)
static
static Option* HandlePrefixedOrGroupedOption ( StringRef Arg,
StringRef Value,
bool ErrorParsing,
const StringMap< Option * > &  OptionsMap 
)
static

HandlePrefixedOrGroupedOption - 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 or grouped option. If so, split arg into output an Arg/Value pair and return the Option to parse it with.

Definition at line 385 of file CommandLine.cpp.

References llvm::StringMap< ValueTy, AllocatorTy >::count(), llvm::NVPTXISD::Dummy, llvm::StringMap< ValueTy, AllocatorTy >::find(), llvm::cl::Option::getFormattingFlag(), getOptionPred(), llvm::cl::Option::getValueExpectedFlag(), isGrouping(), isPrefixedOrGrouping(), llvm::cl::Prefix, ProvideOption(), llvm::StringRef::size(), llvm::StringRef::substr(), and llvm::cl::ValueRequired.

Referenced by llvm::cl::ParseCommandLineOptions().

static bool isGNUSpecial ( char  C)
static

Definition at line 450 of file CommandLine.cpp.

References llvm::LibFunc::strchr.

Referenced by llvm::cl::TokenizeGNUCommandLine().

static bool isGrouping ( const Option O)
inlinestatic
static bool isPrefixedOrGrouping ( const Option O)
inlinestatic
static bool isQuote ( char  C)
static

Definition at line 446 of file CommandLine.cpp.

Referenced by llvm::cl::TokenizeGNUCommandLine().

static bool isWhitespace ( char  C)
static
static Option* LookupNearestOption ( StringRef  Arg,
const StringMap< Option * > &  OptionsMap,
std::string &  NearestString 
)
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 207 of file CommandLine.cpp.

References llvm::cl::Option::ArgStr, llvm::StringMap< ValueTy, AllocatorTy >::begin(), llvm::StringRef::edit_distance(), llvm::StringRef::empty(), llvm::StringMap< ValueTy, AllocatorTy >::end(), llvm::cl::Option::getExtraOptionNames(), llvm::cl::Option::getValueExpectedFlag(), llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), llvm::SmallVectorTemplateCommon< T, typename >::size(), llvm::StringRef::split(), llvm::StringRef::str(), and llvm::cl::ValueDisallowed.

Referenced by llvm::cl::ParseCommandLineOptions().

static Option* LookupOption ( StringRef Arg,
StringRef Value,
const StringMap< Option * > &  OptionsMap 
)
static

LookupOption - Lookup 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 178 of file CommandLine.cpp.

References llvm::StringRef::empty(), llvm::StringMap< ValueTy, AllocatorTy >::end(), llvm::StringRef::find(), llvm::StringMap< ValueTy, AllocatorTy >::find(), I, llvm::StringRef::npos, llvm::StringMapEntry< ValueTy >::second, and llvm::StringRef::substr().

Referenced by llvm::cl::ParseCommandLineOptions().

static int OptNameCompare ( const void *  LHS,
const void *  RHS 
)
static

Definition at line 1375 of file CommandLine.cpp.

References llvm::LibFunc::strcmp.

Referenced by sortOpts().

static size_t parseBackslash ( StringRef  Src,
size_t  I,
SmallString< 128 > &  Token 
)
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.

  • If an even number of backslashes is followed by a double quote, one backslash is output for every pair of backslashes, and the last double quote remains unconsumed. The double quote will later be interpreted as the start or end of a quoted string in the main loop outside of this function.
  • If an odd number of backslashes is followed by a double quote, one backslash is output for every pair of backslashes, and a double quote is output for the last pair of backslash-double quote. The double quote is consumed in this case.
  • Otherwise, backslashes are interpreted literally.

Definition at line 521 of file CommandLine.cpp.

References llvm::SmallString< InternalLen >::append(), I, llvm::SmallVectorTemplateBase< T, isPodLike >::push_back(), and llvm::StringRef::size().

Referenced by llvm::cl::TokenizeWindowsCommandLine().

static bool parseDouble ( Option O,
StringRef  Arg,
double &  Value 
)
static
static void printHelpStr ( StringRef  HelpStr,
size_t  Indent,
size_t  FirstLineIndentedBy 
)
static
static bool ProvideOption ( Option Handler,
StringRef  ArgName,
StringRef  Value,
int  argc,
const char *const *  argv,
int &  i 
)
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 284 of file CommandLine.cpp.

References CommaSeparateAndAddOccurence(), llvm::StringRef::data(), llvm::cl::Option::error(), llvm::cl::Option::getNumAdditionalVals(), llvm::cl::Option::getValueExpectedFlag(), llvm::cl::ValueDisallowed, llvm::cl::ValueOptional, and llvm::cl::ValueRequired.

Referenced by HandlePrefixedOrGroupedOption(), llvm::cl::ParseCommandLineOptions(), and ProvidePositionalOption().

static bool ProvidePositionalOption ( Option Handler,
StringRef  Arg,
int  i 
)
static
static bool RequiresValue ( const Option O)
static
static void sortOpts ( StringMap< Option * > &  OptMap,
SmallVectorImpl< std::pair< const char *, Option * > > &  Opts,
bool  ShowHidden 
)
static
static HelpPrinter UncategorizedHiddenPrinter ( true  )
static
static HelpPrinter UncategorizedNormalPrinter ( false  )
static
static HelpPrinterWrapper WrappedHiddenPrinter ( UncategorizedHiddenPrinter  ,
CategorizedHiddenPrinter   
)
static
static HelpPrinterWrapper WrappedNormalPrinter ( UncategorizedNormalPrinter  ,
CategorizedNormalPrinter   
)
static

Variable Documentation

std::vector<void (*)()>* ExtraVersionPrinters = 0
static

Definition at line 1679 of file CommandLine.cpp.

Referenced by llvm::cl::AddExtraVersionPrinter().

cl::opt<HelpPrinterWrapper, true, parser<bool> > HHOp("help-hidden", cl::desc("Display all available options"), cl::location(WrappedHiddenPrinter), cl::Hidden, cl::ValueDisallowed)
static
cl::opt<HelpPrinter, true, parser<bool> > HLHOp("help-list-hidden", cl::desc("Display list of all available options"), cl::location(UncategorizedHiddenPrinter), cl::Hidden, cl::ValueDisallowed)
static
cl::opt<HelpPrinter, true, parser<bool> > HLOp("help-list", cl::desc("Display list of available options (-help-list-hidden for more)"), cl::location(UncategorizedNormalPrinter), cl::Hidden, cl::ValueDisallowed)
static
cl::opt<HelpPrinterWrapper, true, parser<bool> > HOp("help", cl::desc("Display available options (-help-hidden for more)"), cl::location(WrappedNormalPrinter), cl::ValueDisallowed)
static
const size_t MaxOptWidth = 8
static
ManagedStatic<std::vector<const char*> > MoreHelp
static
bool OptionListChanged = false
static
void(* OverrideVersionPrinter)()=0
static

Definition at line 1677 of file CommandLine.cpp.

Referenced by llvm::cl::SetVersionPrinter().

cl::opt<bool> PrintAllOptions("print-all-options", cl::desc("Print all option values after command line parsing"), cl::Hidden, cl::init(false))
static
cl::opt<bool> PrintOptions("print-options", cl::desc("Print non-default options after command line parsing"), cl::Hidden, cl::init(false))
static
char ProgramName[80] = "<premain>"
static
const char* ProgramOverview = 0
static

Definition at line 85 of file CommandLine.cpp.

Referenced by llvm::cl::ParseCommandLineOptions().

ManagedStatic<OptionCatSet> RegisteredOptionCategories
static

Definition at line 116 of file CommandLine.cpp.

Option* RegisteredOptionList = 0
static

RegisteredOptionList - This is the list of the command line options that have statically constructed themselves.

Definition at line 104 of file CommandLine.cpp.

Referenced by llvm::cl::Option::addArgument(), and GetOptionInfo().

VersionPrinter VersionPrinterInstance
static

Definition at line 1735 of file CommandLine.cpp.

Referenced by llvm::cl::PrintVersionMessage().

cl::opt<VersionPrinter, true, parser<bool> > VersOp("version", cl::desc("Display the version of this program"), cl::location(VersionPrinterInstance), cl::ValueDisallowed)
static