LLVM API Documentation

Namespaces | Defines | Typedefs | Functions | Variables
CommandLine.cpp File Reference
#include "llvm/Support/CommandLine.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/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

namespace  llvm
 

List of target independent CodeGen pass IDs.


namespace  llvm::cl

Defines

#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 void ParseCStringVector (std::vector< char * > &OutputVector, const char *Input)
static void ExpandResponseFiles (unsigned argc, const char *const *argv, std::vector< 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)

Detailed Description

ExpandResponseFiles - Copy the contents of argv into newArgv, substituting the contents of the response files for the arguments of type

Definition in file CommandLine.cpp.


Define Documentation

#define PRINT_OPT_DIFF (   T)
Value:
void parser<T>::                                                      \
  printOptionDiff(const Option &O, T V, OptionValue<T> D,               \
                  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();                                           \
    else                                                                \
      outs() << "*no default*";                                         \
    outs() << ")\n";                                                    \
  }                                                                     \

Definition at line 1153 of file CommandLine.cpp.


Typedef Documentation

Definition at line 111 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 247 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 void ExpandResponseFiles ( unsigned  argc,
const char *const *  argv,
std::vector< 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 381 of file CommandLine.cpp.

References llvm::StringMap< ValueTy, AllocatorTy >::count(), 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 isGrouping ( const Option O) [inline, static]
static bool isPrefixedOrGrouping ( const Option O) [inline, 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 203 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 174 of file CommandLine.cpp.

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

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

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

Definition at line 1207 of file CommandLine.cpp.

References llvm::LibFunc::strcmp.

Referenced by sortOpts().

static void ParseCStringVector ( std::vector< char * > &  OutputVector,
const char *  Input 
) [static]

ParseCStringVector - Break INPUT up wherever one or more whitespace characters are found, and store the resulting tokens in OUTPUT. The tokens stored in OUTPUT are dynamically allocated using strdup(), so it is the caller's responsibility to free() them later.

Definition at line 444 of file CommandLine.cpp.

References llvm::StringRef::data(), llvm::StringRef::empty(), llvm::StringRef::find(), llvm::StringRef::find_first_not_of(), llvm::StringRef::find_first_of(), llvm::LibFunc::malloc, llvm::LibFunc::memcpy, llvm::StringRef::npos, llvm::StringRef::size(), and llvm::StringRef::substr().

Referenced by ExpandResponseFiles(), and llvm::cl::ParseEnvironmentOptions().

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 
) [inline, static]

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 280 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]

Definition at line 336 of file CommandLine.cpp.

References llvm::cl::Option::ArgStr, Dummy, and ProvideOption().

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

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 1511 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]
void(* OverrideVersionPrinter)()=0 [static]

Definition at line 1509 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 81 of file CommandLine.cpp.

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

Definition at line 112 of file CommandLine.cpp.

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

Definition at line 100 of file CommandLine.cpp.

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

VersionPrinter VersionPrinterInstance [static]

Definition at line 1567 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]