clang 17.0.0git
DriverOptions.cpp
Go to the documentation of this file.
1//===--- DriverOptions.cpp - Driver Options Table -------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
10#include "llvm/ADT/STLExtras.h"
11#include "llvm/Option/OptTable.h"
12#include "llvm/Option/Option.h"
13#include <cassert>
14
15using namespace clang::driver;
16using namespace clang::driver::options;
17using namespace llvm::opt;
18
19#define OPTTABLE_VALUES_CODE
20#include "clang/Driver/Options.inc"
21#undef OPTTABLE_VALUES_CODE
22
23#define PREFIX(NAME, VALUE) \
24 static constexpr llvm::StringLiteral NAME##_init[] = VALUE; \
25 static constexpr llvm::ArrayRef<llvm::StringLiteral> NAME( \
26 NAME##_init, std::size(NAME##_init) - 1);
27#include "clang/Driver/Options.inc"
28#undef PREFIX
29
30static constexpr const llvm::StringLiteral PrefixTable_init[] =
31#define PREFIX_UNION(VALUES) VALUES
32#include "clang/Driver/Options.inc"
33#undef PREFIX_UNION
34 ;
35static constexpr const llvm::ArrayRef<llvm::StringLiteral>
37
38static constexpr OptTable::Info InfoTable[] = {
39#define OPTION(PREFIX, NAME, ID, KIND, GROUP, ALIAS, ALIASARGS, FLAGS, PARAM, \
40 HELPTEXT, METAVAR, VALUES) \
41 {PREFIX, NAME, HELPTEXT, METAVAR, OPT_##ID, Option::KIND##Class, \
42 PARAM, FLAGS, OPT_##GROUP, OPT_##ALIAS, ALIASARGS, VALUES},
43#include "clang/Driver/Options.inc"
44#undef OPTION
45};
46
47namespace {
48
49class DriverOptTable : public PrecomputedOptTable {
50public:
51 DriverOptTable() : PrecomputedOptTable(InfoTable, PrefixTable) {}
52};
53}
54
55const llvm::opt::OptTable &clang::driver::getDriverOptTable() {
56 static DriverOptTable Table;
57 return Table;
58}
static constexpr const llvm::StringLiteral PrefixTable_init[]
static constexpr OptTable::Info InfoTable[]
static constexpr const llvm::ArrayRef< llvm::StringLiteral > PrefixTable(PrefixTable_init, std::size(PrefixTable_init) - 1)
const llvm::opt::OptTable & getDriverOptTable()