1e5dd7070Spatrick //===- TableGen.cpp - Top-Level TableGen implementation for Clang ---------===//
2e5dd7070Spatrick //
3e5dd7070Spatrick // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4e5dd7070Spatrick // See https://llvm.org/LICENSE.txt for license information.
5e5dd7070Spatrick // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6e5dd7070Spatrick //
7e5dd7070Spatrick //===----------------------------------------------------------------------===//
8e5dd7070Spatrick //
9e5dd7070Spatrick // This file contains the main function for Clang's TableGen.
10e5dd7070Spatrick //
11e5dd7070Spatrick //===----------------------------------------------------------------------===//
12e5dd7070Spatrick
13e5dd7070Spatrick #include "TableGenBackends.h" // Declares all backends.
14e5dd7070Spatrick #include "ASTTableGen.h"
15e5dd7070Spatrick #include "llvm/Support/CommandLine.h"
16*12c85518Srobert #include "llvm/Support/ManagedStatic.h"
17e5dd7070Spatrick #include "llvm/Support/PrettyStackTrace.h"
18e5dd7070Spatrick #include "llvm/Support/Signals.h"
19e5dd7070Spatrick #include "llvm/TableGen/Error.h"
20e5dd7070Spatrick #include "llvm/TableGen/Main.h"
21e5dd7070Spatrick #include "llvm/TableGen/Record.h"
22e5dd7070Spatrick
23e5dd7070Spatrick using namespace llvm;
24e5dd7070Spatrick using namespace clang;
25e5dd7070Spatrick
26e5dd7070Spatrick enum ActionType {
27e5dd7070Spatrick PrintRecords,
28e5dd7070Spatrick DumpJSON,
29e5dd7070Spatrick GenClangAttrClasses,
30e5dd7070Spatrick GenClangAttrParserStringSwitches,
31e5dd7070Spatrick GenClangAttrSubjectMatchRulesParserStringSwitches,
32e5dd7070Spatrick GenClangAttrImpl,
33e5dd7070Spatrick GenClangAttrList,
34*12c85518Srobert GenClangAttrDocTable,
35e5dd7070Spatrick GenClangAttrSubjectMatchRuleList,
36e5dd7070Spatrick GenClangAttrPCHRead,
37e5dd7070Spatrick GenClangAttrPCHWrite,
38e5dd7070Spatrick GenClangAttrHasAttributeImpl,
39e5dd7070Spatrick GenClangAttrSpellingListIndex,
40e5dd7070Spatrick GenClangAttrASTVisitor,
41e5dd7070Spatrick GenClangAttrTemplateInstantiate,
42e5dd7070Spatrick GenClangAttrParsedAttrList,
43e5dd7070Spatrick GenClangAttrParsedAttrImpl,
44e5dd7070Spatrick GenClangAttrParsedAttrKinds,
45e5dd7070Spatrick GenClangAttrTextNodeDump,
46e5dd7070Spatrick GenClangAttrNodeTraverse,
47e5dd7070Spatrick GenClangBasicReader,
48e5dd7070Spatrick GenClangBasicWriter,
49e5dd7070Spatrick GenClangDiagsDefs,
50e5dd7070Spatrick GenClangDiagGroups,
51e5dd7070Spatrick GenClangDiagsIndexName,
52e5dd7070Spatrick GenClangCommentNodes,
53e5dd7070Spatrick GenClangDeclNodes,
54e5dd7070Spatrick GenClangStmtNodes,
55e5dd7070Spatrick GenClangTypeNodes,
56e5dd7070Spatrick GenClangTypeReader,
57e5dd7070Spatrick GenClangTypeWriter,
58e5dd7070Spatrick GenClangOpcodes,
59e5dd7070Spatrick GenClangSACheckers,
60a9ac8606Spatrick GenClangSyntaxNodeList,
61a9ac8606Spatrick GenClangSyntaxNodeClasses,
62e5dd7070Spatrick GenClangCommentHTMLTags,
63e5dd7070Spatrick GenClangCommentHTMLTagsProperties,
64e5dd7070Spatrick GenClangCommentHTMLNamedCharacterReferences,
65e5dd7070Spatrick GenClangCommentCommandInfo,
66e5dd7070Spatrick GenClangCommentCommandList,
67e5dd7070Spatrick GenClangOpenCLBuiltins,
68a9ac8606Spatrick GenClangOpenCLBuiltinTests,
69e5dd7070Spatrick GenArmNeon,
70e5dd7070Spatrick GenArmFP16,
71ec727ea7Spatrick GenArmBF16,
72e5dd7070Spatrick GenArmNeonSema,
73e5dd7070Spatrick GenArmNeonTest,
74e5dd7070Spatrick GenArmMveHeader,
75e5dd7070Spatrick GenArmMveBuiltinDef,
76e5dd7070Spatrick GenArmMveBuiltinSema,
77e5dd7070Spatrick GenArmMveBuiltinCG,
78e5dd7070Spatrick GenArmMveBuiltinAliases,
79ec727ea7Spatrick GenArmSveHeader,
80ec727ea7Spatrick GenArmSveBuiltins,
81ec727ea7Spatrick GenArmSveBuiltinCG,
82ec727ea7Spatrick GenArmSveTypeFlags,
83ec727ea7Spatrick GenArmSveRangeChecks,
84ec727ea7Spatrick GenArmCdeHeader,
85ec727ea7Spatrick GenArmCdeBuiltinDef,
86ec727ea7Spatrick GenArmCdeBuiltinSema,
87ec727ea7Spatrick GenArmCdeBuiltinCG,
88ec727ea7Spatrick GenArmCdeBuiltinAliases,
89a9ac8606Spatrick GenRISCVVectorHeader,
90a9ac8606Spatrick GenRISCVVectorBuiltins,
91a9ac8606Spatrick GenRISCVVectorBuiltinCG,
92*12c85518Srobert GenRISCVVectorBuiltinSema,
93e5dd7070Spatrick GenAttrDocs,
94e5dd7070Spatrick GenDiagDocs,
95e5dd7070Spatrick GenOptDocs,
96e5dd7070Spatrick GenDataCollectors,
97e5dd7070Spatrick GenTestPragmaAttributeSupportedAttributes
98e5dd7070Spatrick };
99e5dd7070Spatrick
100e5dd7070Spatrick namespace {
101e5dd7070Spatrick cl::opt<ActionType> Action(
102e5dd7070Spatrick cl::desc("Action to perform:"),
103e5dd7070Spatrick cl::values(
104e5dd7070Spatrick clEnumValN(PrintRecords, "print-records",
105e5dd7070Spatrick "Print all records to stdout (default)"),
106e5dd7070Spatrick clEnumValN(DumpJSON, "dump-json",
107e5dd7070Spatrick "Dump all records as machine-readable JSON"),
108e5dd7070Spatrick clEnumValN(GenClangAttrClasses, "gen-clang-attr-classes",
109e5dd7070Spatrick "Generate clang attribute clases"),
110e5dd7070Spatrick clEnumValN(GenClangAttrParserStringSwitches,
111e5dd7070Spatrick "gen-clang-attr-parser-string-switches",
112e5dd7070Spatrick "Generate all parser-related attribute string switches"),
113e5dd7070Spatrick clEnumValN(GenClangAttrSubjectMatchRulesParserStringSwitches,
114e5dd7070Spatrick "gen-clang-attr-subject-match-rules-parser-string-switches",
115e5dd7070Spatrick "Generate all parser-related attribute subject match rule"
116e5dd7070Spatrick "string switches"),
117e5dd7070Spatrick clEnumValN(GenClangAttrImpl, "gen-clang-attr-impl",
118e5dd7070Spatrick "Generate clang attribute implementations"),
119e5dd7070Spatrick clEnumValN(GenClangAttrList, "gen-clang-attr-list",
120e5dd7070Spatrick "Generate a clang attribute list"),
121*12c85518Srobert clEnumValN(GenClangAttrDocTable, "gen-clang-attr-doc-table",
122*12c85518Srobert "Generate a table of attribute documentation"),
123e5dd7070Spatrick clEnumValN(GenClangAttrSubjectMatchRuleList,
124e5dd7070Spatrick "gen-clang-attr-subject-match-rule-list",
125e5dd7070Spatrick "Generate a clang attribute subject match rule list"),
126e5dd7070Spatrick clEnumValN(GenClangAttrPCHRead, "gen-clang-attr-pch-read",
127e5dd7070Spatrick "Generate clang PCH attribute reader"),
128e5dd7070Spatrick clEnumValN(GenClangAttrPCHWrite, "gen-clang-attr-pch-write",
129e5dd7070Spatrick "Generate clang PCH attribute writer"),
130e5dd7070Spatrick clEnumValN(GenClangAttrHasAttributeImpl,
131e5dd7070Spatrick "gen-clang-attr-has-attribute-impl",
132e5dd7070Spatrick "Generate a clang attribute spelling list"),
133e5dd7070Spatrick clEnumValN(GenClangAttrSpellingListIndex,
134e5dd7070Spatrick "gen-clang-attr-spelling-index",
135e5dd7070Spatrick "Generate a clang attribute spelling index"),
136e5dd7070Spatrick clEnumValN(GenClangAttrASTVisitor, "gen-clang-attr-ast-visitor",
137e5dd7070Spatrick "Generate a recursive AST visitor for clang attributes"),
138e5dd7070Spatrick clEnumValN(GenClangAttrTemplateInstantiate,
139e5dd7070Spatrick "gen-clang-attr-template-instantiate",
140e5dd7070Spatrick "Generate a clang template instantiate code"),
141e5dd7070Spatrick clEnumValN(GenClangAttrParsedAttrList,
142e5dd7070Spatrick "gen-clang-attr-parsed-attr-list",
143e5dd7070Spatrick "Generate a clang parsed attribute list"),
144e5dd7070Spatrick clEnumValN(GenClangAttrParsedAttrImpl,
145e5dd7070Spatrick "gen-clang-attr-parsed-attr-impl",
146e5dd7070Spatrick "Generate the clang parsed attribute helpers"),
147e5dd7070Spatrick clEnumValN(GenClangAttrParsedAttrKinds,
148e5dd7070Spatrick "gen-clang-attr-parsed-attr-kinds",
149e5dd7070Spatrick "Generate a clang parsed attribute kinds"),
150e5dd7070Spatrick clEnumValN(GenClangAttrTextNodeDump, "gen-clang-attr-text-node-dump",
151e5dd7070Spatrick "Generate clang attribute text node dumper"),
152e5dd7070Spatrick clEnumValN(GenClangAttrNodeTraverse, "gen-clang-attr-node-traverse",
153e5dd7070Spatrick "Generate clang attribute traverser"),
154e5dd7070Spatrick clEnumValN(GenClangDiagsDefs, "gen-clang-diags-defs",
155e5dd7070Spatrick "Generate Clang diagnostics definitions"),
156e5dd7070Spatrick clEnumValN(GenClangDiagGroups, "gen-clang-diag-groups",
157e5dd7070Spatrick "Generate Clang diagnostic groups"),
158e5dd7070Spatrick clEnumValN(GenClangDiagsIndexName, "gen-clang-diags-index-name",
159e5dd7070Spatrick "Generate Clang diagnostic name index"),
160e5dd7070Spatrick clEnumValN(GenClangBasicReader, "gen-clang-basic-reader",
161e5dd7070Spatrick "Generate Clang BasicReader classes"),
162e5dd7070Spatrick clEnumValN(GenClangBasicWriter, "gen-clang-basic-writer",
163e5dd7070Spatrick "Generate Clang BasicWriter classes"),
164e5dd7070Spatrick clEnumValN(GenClangCommentNodes, "gen-clang-comment-nodes",
165e5dd7070Spatrick "Generate Clang AST comment nodes"),
166e5dd7070Spatrick clEnumValN(GenClangDeclNodes, "gen-clang-decl-nodes",
167e5dd7070Spatrick "Generate Clang AST declaration nodes"),
168e5dd7070Spatrick clEnumValN(GenClangStmtNodes, "gen-clang-stmt-nodes",
169e5dd7070Spatrick "Generate Clang AST statement nodes"),
170e5dd7070Spatrick clEnumValN(GenClangTypeNodes, "gen-clang-type-nodes",
171e5dd7070Spatrick "Generate Clang AST type nodes"),
172e5dd7070Spatrick clEnumValN(GenClangTypeReader, "gen-clang-type-reader",
173e5dd7070Spatrick "Generate Clang AbstractTypeReader class"),
174e5dd7070Spatrick clEnumValN(GenClangTypeWriter, "gen-clang-type-writer",
175e5dd7070Spatrick "Generate Clang AbstractTypeWriter class"),
176e5dd7070Spatrick clEnumValN(GenClangOpcodes, "gen-clang-opcodes",
177e5dd7070Spatrick "Generate Clang constexpr interpreter opcodes"),
178e5dd7070Spatrick clEnumValN(GenClangSACheckers, "gen-clang-sa-checkers",
179e5dd7070Spatrick "Generate Clang Static Analyzer checkers"),
180a9ac8606Spatrick clEnumValN(GenClangSyntaxNodeList, "gen-clang-syntax-node-list",
181a9ac8606Spatrick "Generate list of Clang Syntax Tree node types"),
182a9ac8606Spatrick clEnumValN(GenClangSyntaxNodeClasses, "gen-clang-syntax-node-classes",
183a9ac8606Spatrick "Generate definitions of Clang Syntax Tree node clasess"),
184e5dd7070Spatrick clEnumValN(GenClangCommentHTMLTags, "gen-clang-comment-html-tags",
185e5dd7070Spatrick "Generate efficient matchers for HTML tag "
186e5dd7070Spatrick "names that are used in documentation comments"),
187e5dd7070Spatrick clEnumValN(GenClangCommentHTMLTagsProperties,
188e5dd7070Spatrick "gen-clang-comment-html-tags-properties",
189e5dd7070Spatrick "Generate efficient matchers for HTML tag "
190e5dd7070Spatrick "properties"),
191e5dd7070Spatrick clEnumValN(GenClangCommentHTMLNamedCharacterReferences,
192e5dd7070Spatrick "gen-clang-comment-html-named-character-references",
193e5dd7070Spatrick "Generate function to translate named character "
194e5dd7070Spatrick "references to UTF-8 sequences"),
195e5dd7070Spatrick clEnumValN(GenClangCommentCommandInfo, "gen-clang-comment-command-info",
196e5dd7070Spatrick "Generate command properties for commands that "
197e5dd7070Spatrick "are used in documentation comments"),
198e5dd7070Spatrick clEnumValN(GenClangCommentCommandList, "gen-clang-comment-command-list",
199e5dd7070Spatrick "Generate list of commands that are used in "
200e5dd7070Spatrick "documentation comments"),
201e5dd7070Spatrick clEnumValN(GenClangOpenCLBuiltins, "gen-clang-opencl-builtins",
202e5dd7070Spatrick "Generate OpenCL builtin declaration handlers"),
203a9ac8606Spatrick clEnumValN(GenClangOpenCLBuiltinTests, "gen-clang-opencl-builtin-tests",
204a9ac8606Spatrick "Generate OpenCL builtin declaration tests"),
205e5dd7070Spatrick clEnumValN(GenArmNeon, "gen-arm-neon", "Generate arm_neon.h for clang"),
206e5dd7070Spatrick clEnumValN(GenArmFP16, "gen-arm-fp16", "Generate arm_fp16.h for clang"),
207ec727ea7Spatrick clEnumValN(GenArmBF16, "gen-arm-bf16", "Generate arm_bf16.h for clang"),
208e5dd7070Spatrick clEnumValN(GenArmNeonSema, "gen-arm-neon-sema",
209e5dd7070Spatrick "Generate ARM NEON sema support for clang"),
210e5dd7070Spatrick clEnumValN(GenArmNeonTest, "gen-arm-neon-test",
211e5dd7070Spatrick "Generate ARM NEON tests for clang"),
212ec727ea7Spatrick clEnumValN(GenArmSveHeader, "gen-arm-sve-header",
213ec727ea7Spatrick "Generate arm_sve.h for clang"),
214ec727ea7Spatrick clEnumValN(GenArmSveBuiltins, "gen-arm-sve-builtins",
215ec727ea7Spatrick "Generate arm_sve_builtins.inc for clang"),
216ec727ea7Spatrick clEnumValN(GenArmSveBuiltinCG, "gen-arm-sve-builtin-codegen",
217ec727ea7Spatrick "Generate arm_sve_builtin_cg_map.inc for clang"),
218ec727ea7Spatrick clEnumValN(GenArmSveTypeFlags, "gen-arm-sve-typeflags",
219ec727ea7Spatrick "Generate arm_sve_typeflags.inc for clang"),
220ec727ea7Spatrick clEnumValN(GenArmSveRangeChecks, "gen-arm-sve-sema-rangechecks",
221ec727ea7Spatrick "Generate arm_sve_sema_rangechecks.inc for clang"),
222e5dd7070Spatrick clEnumValN(GenArmMveHeader, "gen-arm-mve-header",
223e5dd7070Spatrick "Generate arm_mve.h for clang"),
224e5dd7070Spatrick clEnumValN(GenArmMveBuiltinDef, "gen-arm-mve-builtin-def",
225e5dd7070Spatrick "Generate ARM MVE builtin definitions for clang"),
226e5dd7070Spatrick clEnumValN(GenArmMveBuiltinSema, "gen-arm-mve-builtin-sema",
227e5dd7070Spatrick "Generate ARM MVE builtin sema checks for clang"),
228e5dd7070Spatrick clEnumValN(GenArmMveBuiltinCG, "gen-arm-mve-builtin-codegen",
229e5dd7070Spatrick "Generate ARM MVE builtin code-generator for clang"),
230e5dd7070Spatrick clEnumValN(GenArmMveBuiltinAliases, "gen-arm-mve-builtin-aliases",
231e5dd7070Spatrick "Generate list of valid ARM MVE builtin aliases for clang"),
232ec727ea7Spatrick clEnumValN(GenArmCdeHeader, "gen-arm-cde-header",
233ec727ea7Spatrick "Generate arm_cde.h for clang"),
234ec727ea7Spatrick clEnumValN(GenArmCdeBuiltinDef, "gen-arm-cde-builtin-def",
235ec727ea7Spatrick "Generate ARM CDE builtin definitions for clang"),
236ec727ea7Spatrick clEnumValN(GenArmCdeBuiltinSema, "gen-arm-cde-builtin-sema",
237ec727ea7Spatrick "Generate ARM CDE builtin sema checks for clang"),
238ec727ea7Spatrick clEnumValN(GenArmCdeBuiltinCG, "gen-arm-cde-builtin-codegen",
239ec727ea7Spatrick "Generate ARM CDE builtin code-generator for clang"),
240ec727ea7Spatrick clEnumValN(GenArmCdeBuiltinAliases, "gen-arm-cde-builtin-aliases",
241ec727ea7Spatrick "Generate list of valid ARM CDE builtin aliases for clang"),
242a9ac8606Spatrick clEnumValN(GenRISCVVectorHeader, "gen-riscv-vector-header",
243a9ac8606Spatrick "Generate riscv_vector.h for clang"),
244a9ac8606Spatrick clEnumValN(GenRISCVVectorBuiltins, "gen-riscv-vector-builtins",
245a9ac8606Spatrick "Generate riscv_vector_builtins.inc for clang"),
246a9ac8606Spatrick clEnumValN(GenRISCVVectorBuiltinCG, "gen-riscv-vector-builtin-codegen",
247a9ac8606Spatrick "Generate riscv_vector_builtin_cg.inc for clang"),
248*12c85518Srobert clEnumValN(GenRISCVVectorBuiltinSema, "gen-riscv-vector-builtin-sema",
249*12c85518Srobert "Generate riscv_vector_builtin_sema.inc for clang"),
250e5dd7070Spatrick clEnumValN(GenAttrDocs, "gen-attr-docs",
251e5dd7070Spatrick "Generate attribute documentation"),
252e5dd7070Spatrick clEnumValN(GenDiagDocs, "gen-diag-docs",
253e5dd7070Spatrick "Generate diagnostic documentation"),
254e5dd7070Spatrick clEnumValN(GenOptDocs, "gen-opt-docs", "Generate option documentation"),
255e5dd7070Spatrick clEnumValN(GenDataCollectors, "gen-clang-data-collectors",
256e5dd7070Spatrick "Generate data collectors for AST nodes"),
257e5dd7070Spatrick clEnumValN(GenTestPragmaAttributeSupportedAttributes,
258e5dd7070Spatrick "gen-clang-test-pragma-attribute-supported-attributes",
259e5dd7070Spatrick "Generate a list of attributes supported by #pragma clang "
260e5dd7070Spatrick "attribute for testing purposes")));
261e5dd7070Spatrick
262e5dd7070Spatrick cl::opt<std::string>
263e5dd7070Spatrick ClangComponent("clang-component",
264e5dd7070Spatrick cl::desc("Only use warnings from specified component"),
265e5dd7070Spatrick cl::value_desc("component"), cl::Hidden);
266e5dd7070Spatrick
ClangTableGenMain(raw_ostream & OS,RecordKeeper & Records)267e5dd7070Spatrick bool ClangTableGenMain(raw_ostream &OS, RecordKeeper &Records) {
268e5dd7070Spatrick switch (Action) {
269e5dd7070Spatrick case PrintRecords:
270e5dd7070Spatrick OS << Records; // No argument, dump all contents
271e5dd7070Spatrick break;
272e5dd7070Spatrick case DumpJSON:
273e5dd7070Spatrick EmitJSON(Records, OS);
274e5dd7070Spatrick break;
275e5dd7070Spatrick case GenClangAttrClasses:
276e5dd7070Spatrick EmitClangAttrClass(Records, OS);
277e5dd7070Spatrick break;
278e5dd7070Spatrick case GenClangAttrParserStringSwitches:
279e5dd7070Spatrick EmitClangAttrParserStringSwitches(Records, OS);
280e5dd7070Spatrick break;
281e5dd7070Spatrick case GenClangAttrSubjectMatchRulesParserStringSwitches:
282e5dd7070Spatrick EmitClangAttrSubjectMatchRulesParserStringSwitches(Records, OS);
283e5dd7070Spatrick break;
284e5dd7070Spatrick case GenClangAttrImpl:
285e5dd7070Spatrick EmitClangAttrImpl(Records, OS);
286e5dd7070Spatrick break;
287e5dd7070Spatrick case GenClangAttrList:
288e5dd7070Spatrick EmitClangAttrList(Records, OS);
289e5dd7070Spatrick break;
290*12c85518Srobert case GenClangAttrDocTable:
291*12c85518Srobert EmitClangAttrDocTable(Records, OS);
292*12c85518Srobert break;
293e5dd7070Spatrick case GenClangAttrSubjectMatchRuleList:
294e5dd7070Spatrick EmitClangAttrSubjectMatchRuleList(Records, OS);
295e5dd7070Spatrick break;
296e5dd7070Spatrick case GenClangAttrPCHRead:
297e5dd7070Spatrick EmitClangAttrPCHRead(Records, OS);
298e5dd7070Spatrick break;
299e5dd7070Spatrick case GenClangAttrPCHWrite:
300e5dd7070Spatrick EmitClangAttrPCHWrite(Records, OS);
301e5dd7070Spatrick break;
302e5dd7070Spatrick case GenClangAttrHasAttributeImpl:
303e5dd7070Spatrick EmitClangAttrHasAttrImpl(Records, OS);
304e5dd7070Spatrick break;
305e5dd7070Spatrick case GenClangAttrSpellingListIndex:
306e5dd7070Spatrick EmitClangAttrSpellingListIndex(Records, OS);
307e5dd7070Spatrick break;
308e5dd7070Spatrick case GenClangAttrASTVisitor:
309e5dd7070Spatrick EmitClangAttrASTVisitor(Records, OS);
310e5dd7070Spatrick break;
311e5dd7070Spatrick case GenClangAttrTemplateInstantiate:
312e5dd7070Spatrick EmitClangAttrTemplateInstantiate(Records, OS);
313e5dd7070Spatrick break;
314e5dd7070Spatrick case GenClangAttrParsedAttrList:
315e5dd7070Spatrick EmitClangAttrParsedAttrList(Records, OS);
316e5dd7070Spatrick break;
317e5dd7070Spatrick case GenClangAttrParsedAttrImpl:
318e5dd7070Spatrick EmitClangAttrParsedAttrImpl(Records, OS);
319e5dd7070Spatrick break;
320e5dd7070Spatrick case GenClangAttrParsedAttrKinds:
321e5dd7070Spatrick EmitClangAttrParsedAttrKinds(Records, OS);
322e5dd7070Spatrick break;
323e5dd7070Spatrick case GenClangAttrTextNodeDump:
324e5dd7070Spatrick EmitClangAttrTextNodeDump(Records, OS);
325e5dd7070Spatrick break;
326e5dd7070Spatrick case GenClangAttrNodeTraverse:
327e5dd7070Spatrick EmitClangAttrNodeTraverse(Records, OS);
328e5dd7070Spatrick break;
329e5dd7070Spatrick case GenClangDiagsDefs:
330e5dd7070Spatrick EmitClangDiagsDefs(Records, OS, ClangComponent);
331e5dd7070Spatrick break;
332e5dd7070Spatrick case GenClangDiagGroups:
333e5dd7070Spatrick EmitClangDiagGroups(Records, OS);
334e5dd7070Spatrick break;
335e5dd7070Spatrick case GenClangDiagsIndexName:
336e5dd7070Spatrick EmitClangDiagsIndexName(Records, OS);
337e5dd7070Spatrick break;
338e5dd7070Spatrick case GenClangCommentNodes:
339e5dd7070Spatrick EmitClangASTNodes(Records, OS, CommentNodeClassName, "");
340e5dd7070Spatrick break;
341e5dd7070Spatrick case GenClangDeclNodes:
342e5dd7070Spatrick EmitClangASTNodes(Records, OS, DeclNodeClassName, "Decl");
343e5dd7070Spatrick EmitClangDeclContext(Records, OS);
344e5dd7070Spatrick break;
345e5dd7070Spatrick case GenClangStmtNodes:
346e5dd7070Spatrick EmitClangASTNodes(Records, OS, StmtNodeClassName, "");
347e5dd7070Spatrick break;
348e5dd7070Spatrick case GenClangTypeNodes:
349e5dd7070Spatrick EmitClangTypeNodes(Records, OS);
350e5dd7070Spatrick break;
351e5dd7070Spatrick case GenClangTypeReader:
352e5dd7070Spatrick EmitClangTypeReader(Records, OS);
353e5dd7070Spatrick break;
354e5dd7070Spatrick case GenClangTypeWriter:
355e5dd7070Spatrick EmitClangTypeWriter(Records, OS);
356e5dd7070Spatrick break;
357e5dd7070Spatrick case GenClangBasicReader:
358e5dd7070Spatrick EmitClangBasicReader(Records, OS);
359e5dd7070Spatrick break;
360e5dd7070Spatrick case GenClangBasicWriter:
361e5dd7070Spatrick EmitClangBasicWriter(Records, OS);
362e5dd7070Spatrick break;
363e5dd7070Spatrick case GenClangOpcodes:
364e5dd7070Spatrick EmitClangOpcodes(Records, OS);
365e5dd7070Spatrick break;
366e5dd7070Spatrick case GenClangSACheckers:
367e5dd7070Spatrick EmitClangSACheckers(Records, OS);
368e5dd7070Spatrick break;
369e5dd7070Spatrick case GenClangCommentHTMLTags:
370e5dd7070Spatrick EmitClangCommentHTMLTags(Records, OS);
371e5dd7070Spatrick break;
372e5dd7070Spatrick case GenClangCommentHTMLTagsProperties:
373e5dd7070Spatrick EmitClangCommentHTMLTagsProperties(Records, OS);
374e5dd7070Spatrick break;
375e5dd7070Spatrick case GenClangCommentHTMLNamedCharacterReferences:
376e5dd7070Spatrick EmitClangCommentHTMLNamedCharacterReferences(Records, OS);
377e5dd7070Spatrick break;
378e5dd7070Spatrick case GenClangCommentCommandInfo:
379e5dd7070Spatrick EmitClangCommentCommandInfo(Records, OS);
380e5dd7070Spatrick break;
381e5dd7070Spatrick case GenClangCommentCommandList:
382e5dd7070Spatrick EmitClangCommentCommandList(Records, OS);
383e5dd7070Spatrick break;
384e5dd7070Spatrick case GenClangOpenCLBuiltins:
385e5dd7070Spatrick EmitClangOpenCLBuiltins(Records, OS);
386e5dd7070Spatrick break;
387a9ac8606Spatrick case GenClangOpenCLBuiltinTests:
388a9ac8606Spatrick EmitClangOpenCLBuiltinTests(Records, OS);
389a9ac8606Spatrick break;
390a9ac8606Spatrick case GenClangSyntaxNodeList:
391a9ac8606Spatrick EmitClangSyntaxNodeList(Records, OS);
392a9ac8606Spatrick break;
393a9ac8606Spatrick case GenClangSyntaxNodeClasses:
394a9ac8606Spatrick EmitClangSyntaxNodeClasses(Records, OS);
395a9ac8606Spatrick break;
396e5dd7070Spatrick case GenArmNeon:
397e5dd7070Spatrick EmitNeon(Records, OS);
398e5dd7070Spatrick break;
399e5dd7070Spatrick case GenArmFP16:
400e5dd7070Spatrick EmitFP16(Records, OS);
401e5dd7070Spatrick break;
402ec727ea7Spatrick case GenArmBF16:
403ec727ea7Spatrick EmitBF16(Records, OS);
404ec727ea7Spatrick break;
405e5dd7070Spatrick case GenArmNeonSema:
406e5dd7070Spatrick EmitNeonSema(Records, OS);
407e5dd7070Spatrick break;
408e5dd7070Spatrick case GenArmNeonTest:
409e5dd7070Spatrick EmitNeonTest(Records, OS);
410e5dd7070Spatrick break;
411e5dd7070Spatrick case GenArmMveHeader:
412e5dd7070Spatrick EmitMveHeader(Records, OS);
413e5dd7070Spatrick break;
414e5dd7070Spatrick case GenArmMveBuiltinDef:
415e5dd7070Spatrick EmitMveBuiltinDef(Records, OS);
416e5dd7070Spatrick break;
417e5dd7070Spatrick case GenArmMveBuiltinSema:
418e5dd7070Spatrick EmitMveBuiltinSema(Records, OS);
419e5dd7070Spatrick break;
420e5dd7070Spatrick case GenArmMveBuiltinCG:
421e5dd7070Spatrick EmitMveBuiltinCG(Records, OS);
422e5dd7070Spatrick break;
423e5dd7070Spatrick case GenArmMveBuiltinAliases:
424e5dd7070Spatrick EmitMveBuiltinAliases(Records, OS);
425e5dd7070Spatrick break;
426ec727ea7Spatrick case GenArmSveHeader:
427ec727ea7Spatrick EmitSveHeader(Records, OS);
428ec727ea7Spatrick break;
429ec727ea7Spatrick case GenArmSveBuiltins:
430ec727ea7Spatrick EmitSveBuiltins(Records, OS);
431ec727ea7Spatrick break;
432ec727ea7Spatrick case GenArmSveBuiltinCG:
433ec727ea7Spatrick EmitSveBuiltinCG(Records, OS);
434ec727ea7Spatrick break;
435ec727ea7Spatrick case GenArmSveTypeFlags:
436ec727ea7Spatrick EmitSveTypeFlags(Records, OS);
437ec727ea7Spatrick break;
438ec727ea7Spatrick case GenArmSveRangeChecks:
439ec727ea7Spatrick EmitSveRangeChecks(Records, OS);
440ec727ea7Spatrick break;
441ec727ea7Spatrick case GenArmCdeHeader:
442ec727ea7Spatrick EmitCdeHeader(Records, OS);
443ec727ea7Spatrick break;
444ec727ea7Spatrick case GenArmCdeBuiltinDef:
445ec727ea7Spatrick EmitCdeBuiltinDef(Records, OS);
446ec727ea7Spatrick break;
447ec727ea7Spatrick case GenArmCdeBuiltinSema:
448ec727ea7Spatrick EmitCdeBuiltinSema(Records, OS);
449ec727ea7Spatrick break;
450ec727ea7Spatrick case GenArmCdeBuiltinCG:
451ec727ea7Spatrick EmitCdeBuiltinCG(Records, OS);
452ec727ea7Spatrick break;
453ec727ea7Spatrick case GenArmCdeBuiltinAliases:
454ec727ea7Spatrick EmitCdeBuiltinAliases(Records, OS);
455ec727ea7Spatrick break;
456a9ac8606Spatrick case GenRISCVVectorHeader:
457a9ac8606Spatrick EmitRVVHeader(Records, OS);
458a9ac8606Spatrick break;
459a9ac8606Spatrick case GenRISCVVectorBuiltins:
460a9ac8606Spatrick EmitRVVBuiltins(Records, OS);
461a9ac8606Spatrick break;
462a9ac8606Spatrick case GenRISCVVectorBuiltinCG:
463a9ac8606Spatrick EmitRVVBuiltinCG(Records, OS);
464a9ac8606Spatrick break;
465*12c85518Srobert case GenRISCVVectorBuiltinSema:
466*12c85518Srobert EmitRVVBuiltinSema(Records, OS);
467*12c85518Srobert break;
468e5dd7070Spatrick case GenAttrDocs:
469e5dd7070Spatrick EmitClangAttrDocs(Records, OS);
470e5dd7070Spatrick break;
471e5dd7070Spatrick case GenDiagDocs:
472e5dd7070Spatrick EmitClangDiagDocs(Records, OS);
473e5dd7070Spatrick break;
474e5dd7070Spatrick case GenOptDocs:
475e5dd7070Spatrick EmitClangOptDocs(Records, OS);
476e5dd7070Spatrick break;
477e5dd7070Spatrick case GenDataCollectors:
478e5dd7070Spatrick EmitClangDataCollectors(Records, OS);
479e5dd7070Spatrick break;
480e5dd7070Spatrick case GenTestPragmaAttributeSupportedAttributes:
481e5dd7070Spatrick EmitTestPragmaAttributeSupportedAttributes(Records, OS);
482e5dd7070Spatrick break;
483e5dd7070Spatrick }
484e5dd7070Spatrick
485e5dd7070Spatrick return false;
486e5dd7070Spatrick }
487e5dd7070Spatrick }
488e5dd7070Spatrick
main(int argc,char ** argv)489e5dd7070Spatrick int main(int argc, char **argv) {
490e5dd7070Spatrick sys::PrintStackTraceOnErrorSignal(argv[0]);
491e5dd7070Spatrick PrettyStackTraceProgram X(argc, argv);
492e5dd7070Spatrick cl::ParseCommandLineOptions(argc, argv);
493e5dd7070Spatrick
494e5dd7070Spatrick llvm_shutdown_obj Y;
495e5dd7070Spatrick
496e5dd7070Spatrick return TableGenMain(argv[0], &ClangTableGenMain);
497e5dd7070Spatrick }
498e5dd7070Spatrick
499e5dd7070Spatrick #ifdef __has_feature
500e5dd7070Spatrick #if __has_feature(address_sanitizer)
501e5dd7070Spatrick #include <sanitizer/lsan_interface.h>
502e5dd7070Spatrick // Disable LeakSanitizer for this binary as it has too many leaks that are not
503e5dd7070Spatrick // very interesting to fix. See compiler-rt/include/sanitizer/lsan_interface.h .
__lsan_is_turned_off()504e5dd7070Spatrick int __lsan_is_turned_off() { return 1; }
505e5dd7070Spatrick #endif // __has_feature(address_sanitizer)
506e5dd7070Spatrick #endif // defined(__has_feature)
507