Index: cfe/trunk/tools/c-index-test/core_main.cpp =================================================================== --- cfe/trunk/tools/c-index-test/core_main.cpp +++ cfe/trunk/tools/c-index-test/core_main.cpp @@ -41,8 +41,7 @@ Action(cl::desc("Action:"), cl::init(ActionType::None), cl::values( clEnumValN(ActionType::PrintSourceSymbols, - "print-source-symbols", "Print symbols from source"), - clEnumValEnd), + "print-source-symbols", "Print symbols from source")), cl::cat(IndexTestCoreCategory)); static cl::extrahelp MoreHelp( Index: cfe/trunk/utils/TableGen/TableGen.cpp =================================================================== --- cfe/trunk/utils/TableGen/TableGen.cpp +++ cfe/trunk/utils/TableGen/TableGen.cpp @@ -135,8 +135,7 @@ clEnumValN(GenAttrDocs, "gen-attr-docs", "Generate attribute documentation"), clEnumValN(GenDiagDocs, "gen-diag-docs", - "Generate attribute documentation"), - clEnumValEnd)); + "Generate attribute documentation"))); cl::opt ClangComponent("clang-component", Index: clang-tools-extra/trunk/include-fixer/tool/ClangIncludeFixer.cpp =================================================================== --- clang-tools-extra/trunk/include-fixer/tool/ClangIncludeFixer.cpp +++ clang-tools-extra/trunk/include-fixer/tool/ClangIncludeFixer.cpp @@ -90,8 +90,7 @@ cl::opt DatabaseFormat( "db", cl::desc("Specify input format"), cl::values(clEnumVal(fixed, "Hard-coded mapping"), - clEnumVal(yaml, "Yaml database created by find-all-symbols"), - clEnumValEnd), + clEnumVal(yaml, "Yaml database created by find-all-symbols")), cl::init(yaml), cl::cat(IncludeFixerCategory)); cl::opt Input("input", Index: klee/trunk/lib/Basic/CmdLineOptions.cpp =================================================================== --- klee/trunk/lib/Basic/CmdLineOptions.cpp +++ klee/trunk/lib/Basic/CmdLineOptions.cpp @@ -56,8 +56,7 @@ clEnumValN(ALL_PC,"all:pc","All queries in .pc (KQuery) format"), clEnumValN(ALL_SMTLIB,"all:smt2","All queries in .smt2 (SMT-LIBv2) format"), clEnumValN(SOLVER_PC,"solver:pc","All queries reaching the solver in .pc (KQuery) format"), - clEnumValN(SOLVER_SMTLIB,"solver:smt2","All queries reaching the solver in .smt2 (SMT-LIBv2) format"), - clEnumValEnd + clEnumValN(SOLVER_SMTLIB,"solver:smt2","All queries reaching the solver in .smt2 (SMT-LIBv2) format") ), llvm::cl::CommaSeparated ); Index: klee/trunk/lib/Core/UserSearcher.cpp =================================================================== --- klee/trunk/lib/Core/UserSearcher.cpp +++ klee/trunk/lib/Core/UserSearcher.cpp @@ -30,8 +30,7 @@ clEnumValN(Searcher::NURS_Depth, "nurs:depth", "use NURS with 2^depth"), clEnumValN(Searcher::NURS_ICnt, "nurs:icnt", "use NURS with Instr-Count"), clEnumValN(Searcher::NURS_CPICnt, "nurs:cpicnt", "use NURS with CallPath-Instr-Count"), - clEnumValN(Searcher::NURS_QC, "nurs:qc", "use NURS with Query-Cost"), - clEnumValEnd)); + clEnumValN(Searcher::NURS_QC, "nurs:qc", "use NURS with Query-Cost"))); cl::opt UseIterativeDeepeningTimeSearch("use-iterative-deepening-time-search", Index: klee/trunk/lib/Expr/ExprSMTLIBPrinter.cpp =================================================================== --- klee/trunk/lib/Expr/ExprSMTLIBPrinter.cpp +++ klee/trunk/lib/Expr/ExprSMTLIBPrinter.cpp @@ -21,8 +21,7 @@ ("smtlib-display-constants", llvm::cl::desc("Sets how bitvector constants are written in generated SMT-LIBv2 files (default=dec)"), llvm::cl::values( clEnumValN(klee::ExprSMTLIBPrinter::BINARY, "bin","Use binary form (e.g. #b00101101)"), clEnumValN(klee::ExprSMTLIBPrinter::HEX, "hex","Use Hexadecimal form (e.g. #x2D)"), - clEnumValN(klee::ExprSMTLIBPrinter::DECIMAL, "dec","Use decimal form (e.g. (_ bv45 8) )"), - clEnumValEnd + clEnumValN(klee::ExprSMTLIBPrinter::DECIMAL, "dec","Use decimal form (e.g. (_ bv45 8) )") ), llvm::cl::init(klee::ExprSMTLIBPrinter::DECIMAL) Index: klee/trunk/lib/Module/KModule.cpp =================================================================== --- klee/trunk/lib/Module/KModule.cpp +++ klee/trunk/lib/Module/KModule.cpp @@ -83,8 +83,7 @@ clEnumValN(eSwitchTypeLLVM, "llvm", "lower using LLVM"), clEnumValN(eSwitchTypeInternal, "internal", - "execute switch internally"), - clEnumValEnd), + "execute switch internally")), cl::init(eSwitchTypeInternal)); cl::opt Index: klee/trunk/tools/kleaver/main.cpp =================================================================== --- klee/trunk/tools/kleaver/main.cpp +++ klee/trunk/tools/kleaver/main.cpp @@ -68,8 +68,7 @@ clEnumValN(PrintAST, "print-ast", "Print parsed AST nodes from the input file."), clEnumValN(Evaluate, "evaluate", - "Print parsed AST nodes from the input file."), - clEnumValEnd)); + "Print parsed AST nodes from the input file."))); enum BuilderKinds { @@ -88,8 +87,7 @@ clEnumValN(ConstantFoldingBuilder, "constant-folding", "Fold constant expressions."), clEnumValN(SimplifyingBuilder, "simplify", - "Fold constants and simplify expressions."), - clEnumValEnd)); + "Fold constants and simplify expressions."))); cl::opt UseDummySolver("use-dummy-solver", Index: klee/trunk/tools/klee/main.cpp =================================================================== --- klee/trunk/tools/klee/main.cpp +++ klee/trunk/tools/klee/main.cpp @@ -129,8 +129,7 @@ cl::desc("Choose libc version (none by default)."), cl::values(clEnumValN(NoLibc, "none", "Don't link in a libc"), clEnumValN(KleeLibc, "klee", "Link in klee libc"), - clEnumValN(UcLibc, "uclibc", "Link in uclibc (adapted for klee)"), - clEnumValEnd), + clEnumValN(UcLibc, "uclibc", "Link in uclibc (adapted for klee)")), cl::init(NoLibc)); Index: llvm/trunk/docs/CommandLine.rst =================================================================== --- llvm/trunk/docs/CommandLine.rst +++ llvm/trunk/docs/CommandLine.rst @@ -355,8 +355,7 @@ clEnumVal(g , "No optimizations, enable debugging"), clEnumVal(O1, "Enable trivial optimizations"), clEnumVal(O2, "Enable default optimizations"), - clEnumVal(O3, "Enable expensive optimizations"), - clEnumValEnd)); + clEnumVal(O3, "Enable expensive optimizations"))); ... if (OptimizationLevel >= O2) doPartialRedundancyElimination(...); @@ -401,8 +400,7 @@ clEnumValN(Debug, "g", "No optimizations, enable debugging"), clEnumVal(O1 , "Enable trivial optimizations"), clEnumVal(O2 , "Enable default optimizations"), - clEnumVal(O3 , "Enable expensive optimizations"), - clEnumValEnd)); + clEnumVal(O3 , "Enable expensive optimizations"))); ... if (OptimizationLevel == Debug) outputDebugInfo(...); @@ -436,8 +434,7 @@ cl::values( clEnumValN(nodebuginfo, "none", "disable debug information"), clEnumVal(quick, "enable quick debug information"), - clEnumVal(detailed, "enable detailed debug information"), - clEnumValEnd)); + clEnumVal(detailed, "enable detailed debug information"))); This definition defines an enumerated command line variable of type "``enum DebugLev``", which works exactly the same way as before. The difference here is @@ -498,8 +495,7 @@ clEnumVal(dce , "Dead Code Elimination"), clEnumVal(constprop , "Constant Propagation"), clEnumValN(inlining, "inline", "Procedure Integration"), - clEnumVal(strip , "Strip Symbols"), - clEnumValEnd)); + clEnumVal(strip , "Strip Symbols"))); This defines a variable that is conceptually of the type "``std::vector``". Thus, you can access it with standard vector @@ -558,8 +554,7 @@ clEnumVal(dce , "Dead Code Elimination"), clEnumVal(constprop , "Constant Propagation"), clEnumValN(inlining, "inline", "Procedure Integration"), - clEnumVal(strip , "Strip Symbols"), - clEnumValEnd)); + clEnumVal(strip , "Strip Symbols"))); To test to see if ``constprop`` was specified, we can use the ``cl:bits::isSet`` function: Index: llvm/trunk/include/llvm/CodeGen/CommandFlags.h =================================================================== --- llvm/trunk/include/llvm/CodeGen/CommandFlags.h +++ llvm/trunk/include/llvm/CodeGen/CommandFlags.h @@ -58,8 +58,7 @@ clEnumValN(Reloc::RWPI, "rwpi", "Read-write data relocatable, accessed relative to static base"), clEnumValN(Reloc::ROPI_RWPI, "ropi-rwpi", - "Combination of ropi and rwpi"), - clEnumValEnd)); + "Combination of ropi and rwpi"))); static inline Optional getRelocModel() { if (RelocModel.getNumOccurrences()) { @@ -76,8 +75,7 @@ cl::values(clEnumValN(ThreadModel::POSIX, "posix", "POSIX thread model"), clEnumValN(ThreadModel::Single, "single", - "Single thread model"), - clEnumValEnd)); + "Single thread model"))); cl::opt CMModel("code-model", @@ -92,8 +90,7 @@ clEnumValN(CodeModel::Medium, "medium", "Medium code model"), clEnumValN(CodeModel::Large, "large", - "Large code model"), - clEnumValEnd)); + "Large code model"))); cl::opt ExceptionModel("exception-model", @@ -108,8 +105,7 @@ clEnumValN(ExceptionHandling::ARM, "arm", "ARM EHABI exceptions"), clEnumValN(ExceptionHandling::WinEH, "wineh", - "Windows exception model"), - clEnumValEnd)); + "Windows exception model"))); cl::opt FileType("filetype", cl::init(TargetMachine::CGFT_AssemblyFile), @@ -120,8 +116,7 @@ clEnumValN(TargetMachine::CGFT_ObjectFile, "obj", "Emit a native object ('.o') file"), clEnumValN(TargetMachine::CGFT_Null, "null", - "Emit nothing, for performance testing"), - clEnumValEnd)); + "Emit nothing, for performance testing"))); cl::opt EnableFPMAD("enable-fp-mad", @@ -165,8 +160,7 @@ "the sign of a flushed-to-zero number is preserved " "in the sign of 0"), clEnumValN(FPDenormal::PositiveZero, "positive-zero", - "denormals are flushed to positive zero"), - clEnumValEnd)); + "denormals are flushed to positive zero"))); cl::opt EnableHonorSignDependentRoundingFPMath("enable-sign-dependent-rounding-fp-math", @@ -184,8 +178,7 @@ clEnumValN(FloatABI::Soft, "soft", "Soft float ABI (implied by -soft-float)"), clEnumValN(FloatABI::Hard, "hard", - "Hard float ABI (uses FP registers)"), - clEnumValEnd)); + "Hard float ABI (uses FP registers)"))); cl::opt FuseFPOps("fp-contract", @@ -197,8 +190,7 @@ clEnumValN(FPOpFusion::Standard, "on", "Only fuse 'blessed' FP ops."), clEnumValN(FPOpFusion::Strict, "off", - "Only fuse FP ops when the result won't be affected."), - clEnumValEnd)); + "Only fuse FP ops when the result won't be affected."))); cl::opt DontPlaceZerosInBSS("nozero-initialized-in-bss", @@ -269,8 +261,7 @@ clEnumValN(JumpTable::Simplified, "simplified", "Create one table per simplified function type."), clEnumValN(JumpTable::Full, "full", - "Create one table per unique function type."), - clEnumValEnd)); + "Create one table per unique function type."))); cl::opt EABIVersion( "meabi", cl::desc("Set EABI type (default depends on triple):"), @@ -279,7 +270,7 @@ "Triple default EABI version"), clEnumValN(EABI::EABI4, "4", "EABI version 4"), clEnumValN(EABI::EABI5, "5", "EABI version 5"), - clEnumValN(EABI::GNU, "gnu", "EABI GNU"), clEnumValEnd)); + clEnumValN(EABI::GNU, "gnu", "EABI GNU"))); cl::opt DebuggerTuningOpt("debugger-tune", @@ -289,8 +280,7 @@ clEnumValN(DebuggerKind::GDB, "gdb", "gdb"), clEnumValN(DebuggerKind::LLDB, "lldb", "lldb"), clEnumValN(DebuggerKind::SCE, "sce", - "SCE targets (e.g. PS4)"), - clEnumValEnd)); + "SCE targets (e.g. PS4)"))); // Common utility function tightly tied to the options listed here. Initializes // a TargetOptions object with CodeGen flags and returns it. Index: llvm/trunk/include/llvm/MC/MCTargetOptionsCommandFlags.h =================================================================== --- llvm/trunk/include/llvm/MC/MCTargetOptionsCommandFlags.h +++ llvm/trunk/include/llvm/MC/MCTargetOptionsCommandFlags.h @@ -26,8 +26,7 @@ cl::values(clEnumValN(MCTargetOptions::AsmInstrumentationNone, "none", "no instrumentation at all"), clEnumValN(MCTargetOptions::AsmInstrumentationAddress, "address", - "instrument instructions with memory arguments"), - clEnumValEnd)); + "instrument instructions with memory arguments"))); cl::opt RelaxAll("mc-relax-all", cl::desc("When used with filetype=obj, " Index: llvm/trunk/include/llvm/Support/CommandLine.h =================================================================== --- llvm/trunk/include/llvm/Support/CommandLine.h +++ llvm/trunk/include/llvm/Support/CommandLine.h @@ -556,52 +556,43 @@ //===----------------------------------------------------------------------===// // Enum valued command line option // -#define clEnumVal(ENUMVAL, DESC) #ENUMVAL, int(ENUMVAL), DESC -#define clEnumValN(ENUMVAL, FLAGNAME, DESC) FLAGNAME, int(ENUMVAL), DESC -#define clEnumValEnd (reinterpret_cast(0)) + +// This represents a single enum value, using "int" as the underlying type. +struct OptionEnumValue { + StringRef Name; + int Value; + StringRef Description; +}; + +#define clEnumVal(ENUMVAL, DESC) \ + cl::OptionEnumValue { #ENUMVAL, int(ENUMVAL), DESC } +#define clEnumValN(ENUMVAL, FLAGNAME, DESC) \ + cl::OptionEnumValue { FLAGNAME, int(ENUMVAL), DESC } // values - For custom data types, allow specifying a group of values together -// as the values that go into the mapping that the option handler uses. Note -// that the values list must always have a 0 at the end of the list to indicate -// that the list has ended. +// as the values that go into the mapping that the option handler uses. // -template class ValuesClass { +class ValuesClass { // Use a vector instead of a map, because the lists should be short, // the overhead is less, and most importantly, it keeps them in the order // inserted so we can print our option out nicely. - SmallVector>, 4> Values; - void processValues(va_list Vals); + SmallVector Values; public: - ValuesClass(StringRef EnumName, DataType Val, StringRef Desc, - va_list ValueArgs) { - // Insert the first value, which is required. - Values.push_back(std::make_pair(EnumName, std::make_pair(Val, Desc))); - - // Process the varargs portion of the values... - while (const char *enumName = va_arg(ValueArgs, const char * )) { - DataType EnumVal = static_cast(va_arg(ValueArgs, int)); - auto EnumDesc = StringRef(va_arg(ValueArgs, const char * )); - Values.push_back(std::make_pair(StringRef(enumName), // Add value to value map - std::make_pair(EnumVal, EnumDesc))); - } - } + ValuesClass(std::initializer_list Options) + : Values(Options) {} template void apply(Opt &O) const { - for (size_t i = 0, e = Values.size(); i != e; ++i) - O.getParser().addLiteralOption(Values[i].first, Values[i].second.first, - Values[i].second.second); + for (auto Value : Values) + O.getParser().addLiteralOption(Value.Name, Value.Value, + Value.Description); } }; -template -ValuesClass LLVM_END_WITH_NULL -values(StringRef Arg, DataType Val, StringRef Desc, ...) { - va_list ValueArgs; - va_start(ValueArgs, Desc); - ValuesClass Vals(Arg, Val, Desc, ValueArgs); - va_end(ValueArgs); - return Vals; +/// Helper to build a ValuesClass by forwarding a variable number of arguments +/// as an initializer list to the ValuesClass constructor. +template ValuesClass values(OptsTy... Options) { + return ValuesClass({Options...}); } //===----------------------------------------------------------------------===// Index: llvm/trunk/lib/Analysis/BlockFrequencyInfo.cpp =================================================================== --- llvm/trunk/lib/Analysis/BlockFrequencyInfo.cpp +++ llvm/trunk/lib/Analysis/BlockFrequencyInfo.cpp @@ -39,8 +39,7 @@ "display a graph using the raw " "integer fractional block frequency representation."), clEnumValN(GVDT_Count, "count", "display a graph using the real " - "profile count if available."), - clEnumValEnd)); + "profile count if available."))); cl::opt ViewBlockFreqFuncName("view-bfi-func-name", cl::Hidden, Index: llvm/trunk/lib/Analysis/RegionInfo.cpp =================================================================== --- llvm/trunk/lib/Analysis/RegionInfo.cpp +++ llvm/trunk/lib/Analysis/RegionInfo.cpp @@ -54,8 +54,7 @@ clEnumValN(Region::PrintBB, "bb", "print regions in detail with block_iterator"), clEnumValN(Region::PrintRN, "rn", - "print regions in detail with element_iterator"), - clEnumValEnd)); + "print regions in detail with element_iterator"))); //===----------------------------------------------------------------------===// Index: llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp =================================================================== --- llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp +++ llvm/trunk/lib/Analysis/TargetLibraryInfo.cpp @@ -24,8 +24,7 @@ clEnumValN(TargetLibraryInfoImpl::Accelerate, "Accelerate", "Accelerate framework"), clEnumValN(TargetLibraryInfoImpl::SVML, "SVML", - "Intel SVML library"), - clEnumValEnd)); + "Intel SVML library"))); StringRef const TargetLibraryInfoImpl::StandardNames[LibFunc::NumLibFuncs] = { #define TLI_DEFINE_STRING Index: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp =================================================================== --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfDebug.cpp @@ -86,7 +86,7 @@ cl::desc("Output prototype dwarf accelerator tables."), cl::values(clEnumVal(Default, "Default for platform"), clEnumVal(Enable, "Enabled"), - clEnumVal(Disable, "Disabled"), clEnumValEnd), + clEnumVal(Disable, "Disabled")), cl::init(Default)); static cl::opt @@ -94,7 +94,7 @@ cl::desc("Output DWARF5 split debug info."), cl::values(clEnumVal(Default, "Default for platform"), clEnumVal(Enable, "Enabled"), - clEnumVal(Disable, "Disabled"), clEnumValEnd), + clEnumVal(Disable, "Disabled")), cl::init(Default)); static cl::opt @@ -102,7 +102,7 @@ cl::desc("Generate DWARF pubnames and pubtypes sections"), cl::values(clEnumVal(Default, "Default for platform"), clEnumVal(Enable, "Enabled"), - clEnumVal(Disable, "Disabled"), clEnumValEnd), + clEnumVal(Disable, "Disabled")), cl::init(Default)); enum LinkageNameOption { @@ -117,8 +117,7 @@ "Default for platform"), clEnumValN(AllLinkageNames, "All", "All"), clEnumValN(AbstractLinkageNames, "Abstract", - "Abstract subprograms"), - clEnumValEnd), + "Abstract subprograms")), cl::init(DefaultLinkageNames)); static const char *const DWARFGroupName = "DWARF Emission"; Index: llvm/trunk/lib/CodeGen/GlobalISel/RegBankSelect.cpp =================================================================== --- llvm/trunk/lib/CodeGen/GlobalISel/RegBankSelect.cpp +++ llvm/trunk/lib/CodeGen/GlobalISel/RegBankSelect.cpp @@ -33,8 +33,7 @@ cl::values(clEnumValN(RegBankSelect::Mode::Fast, "regbankselect-fast", "Run the Fast mode (default mapping)"), clEnumValN(RegBankSelect::Mode::Greedy, "regbankselect-greedy", - "Use the Greedy mode (best local mapping)"), - clEnumValEnd)); + "Use the Greedy mode (best local mapping)"))); char RegBankSelect::ID = 0; INITIALIZE_PASS_BEGIN(RegBankSelect, DEBUG_TYPE, Index: llvm/trunk/lib/CodeGen/MachineBlockFrequencyInfo.cpp =================================================================== --- llvm/trunk/lib/CodeGen/MachineBlockFrequencyInfo.cpp +++ llvm/trunk/lib/CodeGen/MachineBlockFrequencyInfo.cpp @@ -42,9 +42,7 @@ "display a graph using the raw " "integer fractional block frequency representation."), clEnumValN(GVDT_Count, "count", "display a graph using the real " - "profile count if available."), - - clEnumValEnd)); + "profile count if available."))); extern cl::opt ViewBlockFreqFuncName; extern cl::opt ViewHotFreqPercent; Index: llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp =================================================================== --- llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp +++ llvm/trunk/lib/CodeGen/RegAllocGreedy.cpp @@ -61,8 +61,7 @@ cl::desc("Spill mode for splitting live ranges"), cl::values(clEnumValN(SplitEditor::SM_Partition, "default", "Default"), clEnumValN(SplitEditor::SM_Size, "size", "Optimize for size"), - clEnumValN(SplitEditor::SM_Speed, "speed", "Optimize for speed"), - clEnumValEnd), + clEnumValN(SplitEditor::SM_Speed, "speed", "Optimize for speed")), cl::init(SplitEditor::SM_Speed)); static cl::opt Index: llvm/trunk/lib/CodeGen/SafeStack.cpp =================================================================== --- llvm/trunk/lib/CodeGen/SafeStack.cpp +++ llvm/trunk/lib/CodeGen/SafeStack.cpp @@ -60,8 +60,7 @@ cl::values(clEnumValN(ThreadLocalUSP, "thread-local", "Thread-local storage"), clEnumValN(SingleThreadUSP, "single-thread", - "Non-thread-local storage"), - clEnumValEnd)); + "Non-thread-local storage"))); namespace llvm { Index: llvm/trunk/lib/CodeGen/TargetPassConfig.cpp =================================================================== --- llvm/trunk/lib/CodeGen/TargetPassConfig.cpp +++ llvm/trunk/lib/CodeGen/TargetPassConfig.cpp @@ -129,8 +129,7 @@ clEnumValN(CFLAAType::Andersen, "anders", "Enable inclusion-based CFL-AA"), clEnumValN(CFLAAType::Both, "both", - "Enable both variants of CFL-AA"), - clEnumValEnd)); + "Enable both variants of CFL-AA"))); /// Allow standard passes to be disabled by command line options. This supports /// simple binary flags that either suppress the pass or do nothing. Index: llvm/trunk/lib/IR/LegacyPassManager.cpp =================================================================== --- llvm/trunk/lib/IR/LegacyPassManager.cpp +++ llvm/trunk/lib/IR/LegacyPassManager.cpp @@ -56,8 +56,7 @@ clEnumVal(Arguments , "print pass arguments to pass to 'opt'"), clEnumVal(Structure , "print pass structure before run()"), clEnumVal(Executions, "print pass name before it is executed"), - clEnumVal(Details , "print pass details when it is executed"), - clEnumValEnd)); + clEnumVal(Details , "print pass details when it is executed"))); namespace { typedef llvm::cl::list Index: llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp =================================================================== --- llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp +++ llvm/trunk/lib/Target/AArch64/MCTargetDesc/AArch64MCAsmInfo.cpp @@ -29,8 +29,7 @@ "aarch64-neon-syntax", cl::init(Default), cl::desc("Choose style of NEON code to emit from AArch64 backend:"), cl::values(clEnumValN(Generic, "generic", "Emit generic NEON assembly"), - clEnumValN(Apple, "apple", "Emit Apple-style NEON assembly"), - clEnumValEnd)); + clEnumValN(Apple, "apple", "Emit Apple-style NEON assembly"))); AArch64MCAsmInfoDarwin::AArch64MCAsmInfoDarwin() { // We prefer NEON instructions to be printed in the short form. Index: llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp =================================================================== --- llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp +++ llvm/trunk/lib/Target/ARM/ARMSubtarget.cpp @@ -59,8 +59,7 @@ clEnumValN(RestrictedIT, "arm-restrict-it", "Disallow deprecated IT based on ARMv8"), clEnumValN(NoRestrictedIT, "arm-no-restrict-it", - "Allow IT blocks based on ARMv7"), - clEnumValEnd)); + "Allow IT blocks based on ARMv7"))); /// ForceFastISel - Use the fast-isel, even for subtargets where it is not /// currently supported (for testing only). Index: llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp =================================================================== --- llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp +++ llvm/trunk/lib/Target/ARM/AsmParser/ARMAsmParser.cpp @@ -65,8 +65,7 @@ clEnumValN(ImplicitItModeTy::ARMOnly, "arm", "Accept in ARM, reject in Thumb"), clEnumValN(ImplicitItModeTy::ThumbOnly, "thumb", - "Warn in ARM, emit implicit ITs in Thumb"), - clEnumValEnd)); + "Warn in ARM, emit implicit ITs in Thumb"))); class ARMOperand; Index: llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp =================================================================== --- llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp +++ llvm/trunk/lib/Target/MSP430/MSP430ISelLowering.cpp @@ -54,8 +54,7 @@ clEnumValN(HWMultIntr, "interrupts", "Assume hardware multiplier can be used inside interrupts"), clEnumValN(HWMultNoIntr, "use", - "Assume hardware multiplier cannot be used inside interrupts"), - clEnumValEnd)); + "Assume hardware multiplier cannot be used inside interrupts"))); MSP430TargetLowering::MSP430TargetLowering(const TargetMachine &TM, const MSP430Subtarget &STI) Index: llvm/trunk/lib/Target/Mips/MipsDelaySlotFiller.cpp =================================================================== --- llvm/trunk/lib/Target/Mips/MipsDelaySlotFiller.cpp +++ llvm/trunk/lib/Target/Mips/MipsDelaySlotFiller.cpp @@ -79,8 +79,7 @@ cl::values( clEnumValN(CB_Never, "never", "Do not use compact branches if possible."), clEnumValN(CB_Optimal, "optimal", "Use compact branches where appropiate (default)."), - clEnumValN(CB_Always, "always", "Always use compact branches if possible."), - clEnumValEnd + clEnumValN(CB_Always, "always", "Always use compact branches if possible.") ) ); Index: llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp =================================================================== --- llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp +++ llvm/trunk/lib/Target/X86/MCTargetDesc/X86MCAsmInfo.cpp @@ -31,8 +31,7 @@ AsmWriterFlavor("x86-asm-syntax", cl::init(ATT), cl::desc("Choose style of code to emit from X86 backend:"), cl::values(clEnumValN(ATT, "att", "Emit AT&T-style assembly"), - clEnumValN(Intel, "intel", "Emit Intel-style assembly"), - clEnumValEnd)); + clEnumValN(Intel, "intel", "Emit Intel-style assembly"))); static cl::opt MarkedJTDataRegions("mark-data-regions", cl::init(true), Index: llvm/trunk/lib/Transforms/IPO/Inliner.cpp =================================================================== --- llvm/trunk/lib/Transforms/IPO/Inliner.cpp +++ llvm/trunk/lib/Transforms/IPO/Inliner.cpp @@ -72,8 +72,7 @@ cl::values(clEnumValN(InlinerFunctionImportStatsOpts::Basic, "basic", "basic statistics"), clEnumValN(InlinerFunctionImportStatsOpts::Verbose, "verbose", - "printing of statistics for each inlined function"), - clEnumValEnd), + "printing of statistics for each inlined function")), cl::Hidden, cl::desc("Enable inliner stats for imported functions")); } // namespace Index: llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp =================================================================== --- llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp +++ llvm/trunk/lib/Transforms/IPO/PassManagerBuilder.cpp @@ -92,8 +92,7 @@ clEnumValN(CFLAAType::Andersen, "anders", "Enable inclusion-based CFL-AA"), clEnumValN(CFLAAType::Both, "both", - "Enable both variants of CFL-AA"), - clEnumValEnd)); + "Enable both variants of CFL-AA"))); static cl::opt EnableMLSM("mlsm", cl::init(true), cl::Hidden, Index: llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp =================================================================== --- llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp +++ llvm/trunk/lib/Transforms/Scalar/IndVarSimplify.cpp @@ -79,8 +79,7 @@ clEnumValN(OnlyCheapRepl, "cheap", "only replace exit value when the cost is cheap"), clEnumValN(AlwaysRepl, "always", - "always replace exit value whenever possible"), - clEnumValEnd)); + "always replace exit value whenever possible"))); namespace { struct RewritePhi; Index: llvm/trunk/tools/bugpoint/ExecutionDriver.cpp =================================================================== --- llvm/trunk/tools/bugpoint/ExecutionDriver.cpp +++ llvm/trunk/tools/bugpoint/ExecutionDriver.cpp @@ -60,8 +60,7 @@ "compile the bitcode. Useful to avoid linking."), clEnumValN(Custom, "run-custom", "Use -exec-command to define a command to execute " - "the bitcode. Useful for cross-compilation."), - clEnumValEnd), + "the bitcode. Useful for cross-compilation.")), cl::init(AutoPick)); cl::opt SafeInterpreterSel( @@ -70,8 +69,7 @@ clEnumValN(RunLLC, "safe-run-llc", "Compile with LLC"), clEnumValN(Custom, "safe-run-custom", "Use -exec-command to define a command to execute " - "the bitcode. Useful for cross-compilation."), - clEnumValEnd), + "the bitcode. Useful for cross-compilation.")), cl::init(AutoPick)); cl::opt SafeInterpreterPath( Index: llvm/trunk/tools/lli/OrcLazyJIT.cpp =================================================================== --- llvm/trunk/tools/lli/OrcLazyJIT.cpp +++ llvm/trunk/tools/lli/OrcLazyJIT.cpp @@ -37,8 +37,7 @@ "mods-to-disk", "Dump modules to the current " "working directory. (WARNING: " - "will overwrite existing files)."), - clEnumValEnd), + "will overwrite existing files).")), cl::Hidden); cl::opt OrcInlineStubs("orc-lazy-inline-stubs", Index: llvm/trunk/tools/lli/lli.cpp =================================================================== --- llvm/trunk/tools/lli/lli.cpp +++ llvm/trunk/tools/lli/lli.cpp @@ -91,8 +91,7 @@ "Orc-based MCJIT replacement"), clEnumValN(JITKind::OrcLazy, "orc-lazy", - "Orc-based lazy JIT."), - clEnumValEnd)); + "Orc-based lazy JIT."))); // The MCJIT supports building for a target address space separate from // the JIT compilation process. Use a forked process and a copying @@ -194,8 +193,7 @@ clEnumValN(Reloc::PIC_, "pic", "Fully relocatable, position independent code"), clEnumValN(Reloc::DynamicNoPIC, "dynamic-no-pic", - "Relocatable external references, non-relocatable code"), - clEnumValEnd)); + "Relocatable external references, non-relocatable code"))); cl::opt CMModel("code-model", @@ -210,8 +208,7 @@ clEnumValN(CodeModel::Medium, "medium", "Medium code model"), clEnumValN(CodeModel::Large, "large", - "Large code model"), - clEnumValEnd)); + "Large code model"))); cl::opt GenerateSoftFloatCalls("soft-float", @@ -228,8 +225,7 @@ clEnumValN(FloatABI::Soft, "soft", "Soft float ABI (implied by -soft-float)"), clEnumValN(FloatABI::Hard, "hard", - "Hard float ABI (uses FP registers)"), - clEnumValEnd)); + "Hard float ABI (uses FP registers)"))); ExitOnError ExitOnErr; } Index: llvm/trunk/tools/llvm-ar/llvm-ar.cpp =================================================================== --- llvm/trunk/tools/llvm-ar/llvm-ar.cpp +++ llvm/trunk/tools/llvm-ar/llvm-ar.cpp @@ -93,7 +93,7 @@ FormatOpt("format", cl::desc("Archive format to create"), cl::values(clEnumValN(Default, "default", "default"), clEnumValN(GNU, "gnu", "gnu"), - clEnumValN(BSD, "bsd", "bsd"), clEnumValEnd)); + clEnumValN(BSD, "bsd", "bsd"))); static std::string Options; Index: llvm/trunk/tools/llvm-cov/CodeCoverage.cpp =================================================================== --- llvm/trunk/tools/llvm-cov/CodeCoverage.cpp +++ llvm/trunk/tools/llvm-cov/CodeCoverage.cpp @@ -485,8 +485,7 @@ cl::values(clEnumValN(CoverageViewOptions::OutputFormat::Text, "text", "Text output"), clEnumValN(CoverageViewOptions::OutputFormat::HTML, "html", - "HTML output"), - clEnumValEnd), + "HTML output")), cl::init(CoverageViewOptions::OutputFormat::Text)); cl::opt FilenameEquivalence( Index: llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp =================================================================== --- llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp +++ llvm/trunk/tools/llvm-dwarfdump/llvm-dwarfdump.cpp @@ -72,7 +72,7 @@ ".debug_str_offsets.dwo"), clEnumValN(DIDT_CUIndex, "cu_index", ".debug_cu_index"), clEnumValN(DIDT_GdbIndex, "gdb_index", ".gdb_index"), - clEnumValN(DIDT_TUIndex, "tu_index", ".debug_tu_index"), clEnumValEnd)); + clEnumValN(DIDT_TUIndex, "tu_index", ".debug_tu_index"))); static void error(StringRef Filename, std::error_code EC) { if (!EC) Index: llvm/trunk/tools/llvm-lto/llvm-lto.cpp =================================================================== --- llvm/trunk/tools/llvm-lto/llvm-lto.cpp +++ llvm/trunk/tools/llvm-lto/llvm-lto.cpp @@ -102,8 +102,7 @@ "(requires -thinlto-index)."), clEnumValN(THINOPT, "optimize", "Perform ThinLTO optimizations."), clEnumValN(THINCODEGEN, "codegen", "CodeGen (expected to match llc)"), - clEnumValN(THINALL, "run", "Perform ThinLTO end-to-end"), - clEnumValEnd)); + clEnumValN(THINALL, "run", "Perform ThinLTO end-to-end"))); static cl::opt ThinLTOIndex("thinlto-index", Index: llvm/trunk/tools/llvm-mc-fuzzer/llvm-mc-fuzzer.cpp =================================================================== --- llvm/trunk/tools/llvm-mc-fuzzer/llvm-mc-fuzzer.cpp +++ llvm/trunk/tools/llvm-mc-fuzzer/llvm-mc-fuzzer.cpp @@ -31,8 +31,7 @@ cl::values(clEnumValN(AC_Assemble, "assemble", "Assemble a .s file (default)"), clEnumValN(AC_Disassemble, "disassemble", - "Disassemble strings of hex bytes"), - clEnumValEnd)); + "Disassemble strings of hex bytes"))); static cl::opt TripleName("triple", cl::desc("Target triple to assemble for, " Index: llvm/trunk/tools/llvm-mc/llvm-mc.cpp =================================================================== --- llvm/trunk/tools/llvm-mc/llvm-mc.cpp +++ llvm/trunk/tools/llvm-mc/llvm-mc.cpp @@ -66,8 +66,7 @@ clEnumValN(DebugCompressionType::DCT_Zlib, "zlib", "Use zlib compression"), clEnumValN(DebugCompressionType::DCT_ZlibGnu, "zlib-gnu", - "Use zlib-gnu compression (deprecated)"), - clEnumValEnd)); + "Use zlib-gnu compression (deprecated)"))); static cl::opt ShowInst("show-inst", cl::desc("Show internal instruction representation")); @@ -105,8 +104,7 @@ clEnumValN(OFT_Null, "null", "Don't emit anything (for timing purposes)"), clEnumValN(OFT_ObjectFile, "obj", - "Emit a native object ('.o') file"), - clEnumValEnd)); + "Emit a native object ('.o') file"))); static cl::list IncludeDirs("I", cl::desc("Directory of include files"), @@ -148,8 +146,7 @@ clEnumValN(CodeModel::Medium, "medium", "Medium code model"), clEnumValN(CodeModel::Large, "large", - "Large code model"), - clEnumValEnd)); + "Large code model"))); static cl::opt NoInitialTextSection("n", cl::desc("Don't assume assembly file starts " @@ -190,8 +187,7 @@ clEnumValN(AC_Disassemble, "disassemble", "Disassemble strings of hex bytes"), clEnumValN(AC_MDisassemble, "mdis", - "Marked up disassembly of strings of hex bytes"), - clEnumValEnd)); + "Marked up disassembly of strings of hex bytes"))); static const Target *GetTarget(const char *ProgName) { // Figure out the target triple. Index: llvm/trunk/tools/llvm-nm/llvm-nm.cpp =================================================================== --- llvm/trunk/tools/llvm-nm/llvm-nm.cpp +++ llvm/trunk/tools/llvm-nm/llvm-nm.cpp @@ -56,7 +56,7 @@ "format", cl::desc("Specify output format"), cl::values(clEnumVal(bsd, "BSD format"), clEnumVal(sysv, "System V format"), clEnumVal(posix, "POSIX.2 format"), - clEnumVal(darwin, "Darwin -m format"), clEnumValEnd), + clEnumVal(darwin, "Darwin -m format")), cl::init(bsd)); cl::alias OutputFormat2("f", cl::desc("Alias for --format"), cl::aliasopt(OutputFormat)); @@ -143,7 +143,7 @@ cl::opt AddressRadix("radix", cl::desc("Radix (o/d/x) for printing symbol Values"), cl::values(clEnumVal(d, "decimal"), clEnumVal(o, "octal"), - clEnumVal(x, "hexadecimal"), clEnumValEnd), + clEnumVal(x, "hexadecimal")), cl::init(x)); cl::alias RadixAlias("t", cl::desc("Alias for --radix"), cl::aliasopt(AddressRadix)); Index: llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp =================================================================== --- llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp +++ llvm/trunk/tools/llvm-objdump/llvm-objdump.cpp @@ -188,8 +188,7 @@ cl::opt llvm::DwarfDumpType( "dwarf", cl::init(DIDT_Null), cl::desc("Dump of dwarf debug sections:"), - cl::values(clEnumValN(DIDT_Frames, "frames", ".debug_frame"), - clEnumValEnd)); + cl::values(clEnumValN(DIDT_Frames, "frames", ".debug_frame"))); cl::opt PrintSource( "source", Index: llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp =================================================================== --- llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp +++ llvm/trunk/tools/llvm-profdata/llvm-profdata.cpp @@ -393,14 +393,13 @@ cl::opt ProfileKind( cl::desc("Profile kind:"), cl::init(instr), cl::values(clEnumVal(instr, "Instrumentation profile (default)"), - clEnumVal(sample, "Sample profile"), clEnumValEnd)); + clEnumVal(sample, "Sample profile"))); cl::opt OutputFormat( cl::desc("Format of output profile"), cl::init(PF_Binary), cl::values(clEnumValN(PF_Binary, "binary", "Binary encoding (default)"), clEnumValN(PF_Text, "text", "Text encoding"), clEnumValN(PF_GCC, "gcc", - "GCC encoding (only meaningful for -sample)"), - clEnumValEnd)); + "GCC encoding (only meaningful for -sample)"))); cl::opt OutputSparse("sparse", cl::init(false), cl::desc("Generate a sparse profile (only meaningful for -instr)")); cl::opt NumThreads( @@ -622,7 +621,7 @@ cl::opt ProfileKind( cl::desc("Profile kind:"), cl::init(instr), cl::values(clEnumVal(instr, "Instrumentation profile (default)"), - clEnumVal(sample, "Sample profile"), clEnumValEnd)); + clEnumVal(sample, "Sample profile"))); cl::ParseCommandLineOptions(argc, argv, "LLVM profile data summary\n"); Index: llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp =================================================================== --- llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp +++ llvm/trunk/tools/llvm-readobj/llvm-readobj.cpp @@ -264,7 +264,7 @@ cl::opt Output("elf-output-style", cl::desc("Specify ELF dump style"), cl::values(clEnumVal(LLVM, "LLVM default style"), - clEnumVal(GNU, "GNU readelf style"), clEnumValEnd), + clEnumVal(GNU, "GNU readelf style")), cl::init(LLVM)); } // namespace opts Index: llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp =================================================================== --- llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp +++ llvm/trunk/tools/llvm-rtdyld/llvm-rtdyld.cpp @@ -66,8 +66,7 @@ clEnumValN(AC_PrintObjectLineInfo, "printobjline", "Like -printlineinfo but does not load the object first"), clEnumValN(AC_Verify, "verify", - "Load, link and verify the resulting memory image."), - clEnumValEnd)); + "Load, link and verify the resulting memory image."))); static cl::opt EntryPoint("entry", Index: llvm/trunk/tools/llvm-size/llvm-size.cpp =================================================================== --- llvm/trunk/tools/llvm-size/llvm-size.cpp +++ llvm/trunk/tools/llvm-size/llvm-size.cpp @@ -40,14 +40,14 @@ OutputFormat("format", cl::desc("Specify output format"), cl::values(clEnumVal(sysv, "System V format"), clEnumVal(berkeley, "Berkeley format"), - clEnumVal(darwin, "Darwin -m format"), clEnumValEnd), + clEnumVal(darwin, "Darwin -m format")), cl::init(berkeley)); static cl::opt OutputFormatShort( cl::desc("Specify output format"), cl::values(clEnumValN(sysv, "A", "System V format"), clEnumValN(berkeley, "B", "Berkeley format"), - clEnumValN(darwin, "m", "Darwin -m format"), clEnumValEnd), + clEnumValN(darwin, "m", "Darwin -m format")), cl::init(berkeley)); static bool BerkeleyHeaderPrinted = false; @@ -81,8 +81,7 @@ RadixShort(cl::desc("Print size in radix:"), cl::values(clEnumValN(octal, "o", "Print size in octal"), clEnumValN(decimal, "d", "Print size in decimal"), - clEnumValN(hexadecimal, "x", "Print size in hexadecimal"), - clEnumValEnd), + clEnumValN(hexadecimal, "x", "Print size in hexadecimal")), cl::init(decimal)); static cl::opt Index: llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp =================================================================== --- llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp +++ llvm/trunk/tools/llvm-symbolizer/llvm-symbolizer.cpp @@ -46,8 +46,7 @@ clEnumValN(FunctionNameKind::ShortName, "short", "print short function name"), clEnumValN(FunctionNameKind::LinkageName, "linkage", - "print function linkage name"), - clEnumValEnd)); + "print function linkage name"))); static cl::opt ClUseRelativeAddress("relative-address", cl::init(false), Index: llvm/trunk/tools/sancov/sancov.cc =================================================================== --- llvm/trunk/tools/sancov/sancov.cc +++ llvm/trunk/tools/sancov/sancov.cc @@ -92,7 +92,7 @@ "REMOVED. Use -symbolize & coverage-report-server.py."), clEnumValN(SymbolizeAction, "symbolize", "Produces a symbolized JSON report from binary report."), - clEnumValN(MergeAction, "merge", "Merges reports."), clEnumValEnd)); + clEnumValN(MergeAction, "merge", "Merges reports."))); static cl::list ClInputFiles(cl::Positional, cl::OneOrMore, Index: llvm/trunk/utils/TableGen/TableGen.cpp =================================================================== --- llvm/trunk/utils/TableGen/TableGen.cpp +++ llvm/trunk/utils/TableGen/TableGen.cpp @@ -91,8 +91,7 @@ clEnumValN(GenAttributes, "gen-attrs", "Generate attributes"), clEnumValN(GenSearchableTables, "gen-searchable-tables", - "Generate generic binary-searchable table"), - clEnumValEnd)); + "Generate generic binary-searchable table"))); cl::opt Class("class", cl::desc("Print Enum list for this class"), Index: polly/trunk/lib/Analysis/DependenceInfo.cpp =================================================================== --- polly/trunk/lib/Analysis/DependenceInfo.cpp +++ polly/trunk/lib/Analysis/DependenceInfo.cpp @@ -65,8 +65,7 @@ cl::values(clEnumValN(VALUE_BASED_ANALYSIS, "value-based", "Exact dependences without transitive dependences"), clEnumValN(MEMORY_BASED_ANALYSIS, "memory-based", - "Overapproximation of dependences"), - clEnumValEnd), + "Overapproximation of dependences")), cl::Hidden, cl::init(VALUE_BASED_ANALYSIS), cl::ZeroOrMore, cl::cat(PollyCategory)); @@ -80,8 +79,7 @@ " accessed references in the same statement"), clEnumValN(Dependences::AL_Access, "access-wise", "Memory reference level analysis that distinguish" - " access instructions in the same statement"), - clEnumValEnd), + " access instructions in the same statement")), cl::Hidden, cl::init(Dependences::AL_Statement), cl::ZeroOrMore, cl::cat(PollyCategory)); Index: polly/trunk/lib/CodeGen/IslExprBuilder.cpp =================================================================== --- polly/trunk/lib/CodeGen/IslExprBuilder.cpp +++ polly/trunk/lib/CodeGen/IslExprBuilder.cpp @@ -35,8 +35,7 @@ clEnumValN(OT_REQUEST, "request", "Track the overflow bit if requested."), clEnumValN(OT_ALWAYS, "always", - "Always track the overflow bit."), - clEnumValEnd), + "Always track the overflow bit.")), cl::Hidden, cl::init(OT_REQUEST), cl::ZeroOrMore, cl::cat(PollyCategory)); IslExprBuilder::IslExprBuilder(Scop &S, PollyIRBuilder &Builder, Index: polly/trunk/lib/Support/RegisterPasses.cpp =================================================================== --- polly/trunk/lib/Support/RegisterPasses.cpp +++ polly/trunk/lib/Support/RegisterPasses.cpp @@ -67,16 +67,14 @@ clEnumValN(POSITION_AFTER_LOOPOPT, "after-loopopt", "After the loop optimizer (but within the inline cycle)"), clEnumValN(POSITION_BEFORE_VECTORIZER, "before-vectorizer", - "Right before the vectorizer"), - clEnumValEnd), + "Right before the vectorizer")), cl::Hidden, cl::init(POSITION_EARLY), cl::ZeroOrMore, cl::cat(PollyCategory)); static cl::opt Optimizer( "polly-optimizer", cl::desc("Select the scheduling optimizer"), cl::values(clEnumValN(OPTIMIZER_NONE, "none", "No optimizer"), - clEnumValN(OPTIMIZER_ISL, "isl", "The isl scheduling optimizer"), - clEnumValEnd), + clEnumValN(OPTIMIZER_ISL, "isl", "The isl scheduling optimizer")), cl::Hidden, cl::init(OPTIMIZER_ISL), cl::ZeroOrMore, cl::cat(PollyCategory)); @@ -85,18 +83,17 @@ "polly-code-generation", cl::desc("How much code-generation to perform"), cl::values(clEnumValN(CODEGEN_FULL, "full", "AST and IR generation"), clEnumValN(CODEGEN_AST, "ast", "Only AST generation"), - clEnumValN(CODEGEN_NONE, "none", "No code generation"), - clEnumValEnd), + clEnumValN(CODEGEN_NONE, "none", "No code generation")), cl::Hidden, cl::init(CODEGEN_FULL), cl::ZeroOrMore, cl::cat(PollyCategory)); enum TargetChoice { TARGET_CPU, TARGET_GPU }; static cl::opt Target("polly-target", cl::desc("The hardware to target"), - cl::values(clEnumValN(TARGET_CPU, "cpu", "generate CPU code"), + cl::values(clEnumValN(TARGET_CPU, "cpu", "generate CPU code") #ifdef GPU_CODEGEN - clEnumValN(TARGET_GPU, "gpu", "generate GPU code"), + , clEnumValN(TARGET_GPU, "gpu", "generate GPU code") #endif - clEnumValEnd), + ), cl::init(TARGET_CPU), cl::ZeroOrMore, cl::cat(PollyCategory)); VectorizerChoice polly::PollyVectorizerChoice; @@ -107,8 +104,7 @@ clEnumValN(polly::VECTORIZER_POLLY, "polly", "Polly internal vectorizer"), clEnumValN(polly::VECTORIZER_STRIPMINE, "stripmine", - "Strip-mine outer loops for the loop-vectorizer to trigger"), - clEnumValEnd), + "Strip-mine outer loops for the loop-vectorizer to trigger")), cl::location(PollyVectorizerChoice), cl::init(polly::VECTORIZER_NONE), cl::ZeroOrMore, cl::cat(PollyCategory));