mirror of
https://github.com/intel/llvm.git
synced 2026-01-24 00:20:25 +08:00
Store OptTable::Info::Name as a StringRef
This is a recommit of 8ae18303f9,
with a few cleanups.
This avoids implicit conversion to StringRef at several points, which in
turns avoid redundant calls to strlen.
As a side effect, this greatly simplifies the implementation of
StrCmpOptionNameIgnoreCase.
It also eventually gives a consistent, humble speedup in compilation
time (timing updated since original commit).
https://llvm-compile-time-tracker.com/compare.php?from=de4b6a1bc64db33643f001ad45fae7b92b4a4688&to=c23a93d1292052b4be2fbe8c586fa31143d0c7ed&stat=instructions:u
Differential Revision: https://reviews.llvm.org/D139274
This commit is contained in:
@@ -20,7 +20,7 @@ using namespace llvm::opt;
|
||||
#include "clang/Driver/Options.inc"
|
||||
#undef PREFIX
|
||||
|
||||
static const OptTable::Info InfoTable[] = {
|
||||
static constexpr OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, \
|
||||
|
||||
@@ -125,7 +125,7 @@ enum ID {
|
||||
#include "LinkerWrapperOpts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
static const OptTable::Info InfoTable[] = {
|
||||
static constexpr OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, \
|
||||
|
||||
@@ -777,7 +777,7 @@ MemoryBufferRef convertResToCOFF(ArrayRef<MemoryBufferRef> mbs,
|
||||
#undef PREFIX
|
||||
|
||||
// Create table mapping all options defined in Options.td
|
||||
static const llvm::opt::OptTable::Info infoTable[] = {
|
||||
static constexpr llvm::opt::OptTable::Info infoTable[] = {
|
||||
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
|
||||
{X1, X2, X10, X11, OPT_##ID, llvm::opt::Option::KIND##Class, \
|
||||
X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},
|
||||
|
||||
@@ -39,7 +39,7 @@ using namespace lld::elf;
|
||||
#undef PREFIX
|
||||
|
||||
// Create table mapping all options defined in Options.td
|
||||
static const opt::OptTable::Info optInfo[] = {
|
||||
static constexpr opt::OptTable::Info optInfo[] = {
|
||||
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
|
||||
{X1, X2, X10, X11, OPT_##ID, opt::Option::KIND##Class, \
|
||||
X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},
|
||||
|
||||
@@ -40,7 +40,7 @@ using namespace lld::macho;
|
||||
#undef PREFIX
|
||||
|
||||
// Create table mapping all options defined in Options.td
|
||||
static const OptTable::Info optInfo[] = {
|
||||
static constexpr OptTable::Info optInfo[] = {
|
||||
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
|
||||
{X1, X2, X10, X11, OPT_##ID, Option::KIND##Class, \
|
||||
X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},
|
||||
|
||||
@@ -66,7 +66,7 @@ enum {
|
||||
#undef PREFIX
|
||||
|
||||
// Create table mapping all options defined in Options.td
|
||||
static const opt::OptTable::Info infoTable[] = {
|
||||
static constexpr opt::OptTable::Info infoTable[] = {
|
||||
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
|
||||
{X1, X2, X10, X11, OPT_##ID, opt::Option::KIND##Class, \
|
||||
X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},
|
||||
|
||||
@@ -106,7 +106,7 @@ bool link(ArrayRef<const char *> args, llvm::raw_ostream &stdoutOS,
|
||||
#undef PREFIX
|
||||
|
||||
// Create table mapping all options defined in Options.td
|
||||
static const opt::OptTable::Info optInfo[] = {
|
||||
static constexpr opt::OptTable::Info optInfo[] = {
|
||||
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
|
||||
{X1, X2, X10, X11, OPT_##ID, opt::Option::KIND##Class, \
|
||||
X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},
|
||||
|
||||
@@ -63,7 +63,7 @@ enum ID {
|
||||
#include "Options.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -282,7 +282,7 @@ enum ID {
|
||||
#include "LLGSOptions.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -83,7 +83,7 @@ enum ID {
|
||||
#include "Options.inc"
|
||||
#undef PREFIX
|
||||
|
||||
static const llvm::opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr llvm::opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{PREFIX, NAME, HELPTEXT, \
|
||||
|
||||
@@ -23,7 +23,7 @@ using namespace jitlink;
|
||||
#undef PREFIX
|
||||
|
||||
// Create table mapping all options defined in COFFOptions.td
|
||||
static const opt::OptTable::Info infoTable[] = {
|
||||
static constexpr opt::OptTable::Info infoTable[] = {
|
||||
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
|
||||
{X1, \
|
||||
X2, \
|
||||
|
||||
@@ -41,7 +41,7 @@ enum {
|
||||
#include "Options.inc"
|
||||
#undef PREFIX
|
||||
|
||||
static const llvm::opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr llvm::opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
|
||||
{X1, X2, X10, X11, OPT_##ID, llvm::opt::Option::KIND##Class, \
|
||||
X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},
|
||||
|
||||
@@ -45,7 +45,7 @@ enum {
|
||||
#include "Options.inc"
|
||||
#undef PREFIX
|
||||
|
||||
static const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(X1, X2, ID, KIND, GROUP, ALIAS, X7, X8, X9, X10, X11, X12) \
|
||||
{X1, X2, X10, X11, OPT_##ID, opt::Option::KIND##Class, \
|
||||
X9, X8, OPT_##GROUP, OPT_##ALIAS, X7, X12},
|
||||
|
||||
@@ -67,7 +67,7 @@ enum ID {
|
||||
#include "Options.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -48,7 +48,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -36,7 +36,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -44,7 +44,7 @@ enum ID {
|
||||
#include "Options.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -64,7 +64,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -74,12 +74,12 @@ enum LipoID {
|
||||
};
|
||||
|
||||
// LipoInfoTable below references LIPO_##PREFIX. OptionGroup has prefix nullptr.
|
||||
const char *const *LIPO_nullptr = nullptr;
|
||||
constexpr const char *const *LIPO_nullptr = nullptr;
|
||||
#define PREFIX(NAME, VALUE) const char *const LIPO_##NAME[] = VALUE;
|
||||
#include "LipoOpts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info LipoInfoTable[] = {
|
||||
static constexpr opt::OptTable::Info LipoInfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{LIPO_##PREFIX, NAME, HELPTEXT, \
|
||||
|
||||
@@ -64,7 +64,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -45,7 +45,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -68,7 +68,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -40,7 +40,7 @@ enum ObjcopyID {
|
||||
#include "ObjcopyOpts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info ObjcopyInfoTable[] = {
|
||||
static constexpr opt::OptTable::Info ObjcopyInfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{OBJCOPY_##PREFIX, \
|
||||
@@ -80,7 +80,7 @@ enum InstallNameToolID {
|
||||
#include "InstallNameToolOpts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InstallNameToolInfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InstallNameToolInfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{INSTALL_NAME_TOOL_##PREFIX, \
|
||||
@@ -117,7 +117,7 @@ enum BitcodeStripID {
|
||||
#include "BitcodeStripOpts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info BitcodeStripInfoTable[] = {
|
||||
static constexpr opt::OptTable::Info BitcodeStripInfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{BITCODE_STRIP_##PREFIX, \
|
||||
@@ -154,7 +154,7 @@ enum StripID {
|
||||
#include "StripOpts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info StripInfoTable[] = {
|
||||
static constexpr opt::OptTable::Info StripInfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{STRIP_##PREFIX, NAME, HELPTEXT, \
|
||||
|
||||
@@ -59,7 +59,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
@@ -89,7 +89,7 @@ enum Windres_ID {
|
||||
#include "WindresOpts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info WindresInfoTable[] = {
|
||||
static constexpr opt::OptTable::Info WindresInfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -66,7 +66,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -51,7 +51,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -43,7 +43,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -60,7 +60,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -39,7 +39,7 @@ enum ID {
|
||||
#include "Opts.inc"
|
||||
#undef PREFIX
|
||||
|
||||
static const opt::OptTable::Info InfoTable[] = {
|
||||
static constexpr opt::OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{ \
|
||||
|
||||
@@ -35,7 +35,7 @@ enum OptionFlags {
|
||||
OptFlag3 = (1 << 6)
|
||||
};
|
||||
|
||||
static const OptTable::Info InfoTable[] = {
|
||||
static constexpr OptTable::Info InfoTable[] = {
|
||||
#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
|
||||
HELPTEXT, METAVAR, VALUES) \
|
||||
{PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, \
|
||||
|
||||
Reference in New Issue
Block a user