1bee583fdSPeter Collingbourne //===- TableGen.cpp - Top-Level TableGen implementation for Clang ---------===//
2bee583fdSPeter Collingbourne //
32946cd70SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
42946cd70SChandler Carruth // See https://llvm.org/LICENSE.txt for license information.
52946cd70SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6bee583fdSPeter Collingbourne //
7bee583fdSPeter Collingbourne //===----------------------------------------------------------------------===//
8bee583fdSPeter Collingbourne //
9bee583fdSPeter Collingbourne // This file contains the main function for Clang's TableGen.
10bee583fdSPeter Collingbourne //
11bee583fdSPeter Collingbourne //===----------------------------------------------------------------------===//
12bee583fdSPeter Collingbourne
133f76260dSRui Ueyama #include "TableGenBackends.h" // Declares all backends.
14b6f03a5aSJohn McCall #include "ASTTableGen.h"
15bee583fdSPeter Collingbourne #include "llvm/Support/CommandLine.h"
16bee583fdSPeter Collingbourne #include "llvm/Support/PrettyStackTrace.h"
17bee583fdSPeter Collingbourne #include "llvm/Support/Signals.h"
18bee583fdSPeter Collingbourne #include "llvm/TableGen/Error.h"
19bee583fdSPeter Collingbourne #include "llvm/TableGen/Main.h"
20bee583fdSPeter Collingbourne #include "llvm/TableGen/Record.h"
21bee583fdSPeter Collingbourne
22bee583fdSPeter Collingbourne using namespace llvm;
23995e0e13SJakob Stoklund Olesen using namespace clang;
24bee583fdSPeter Collingbourne
25bee583fdSPeter Collingbourne enum ActionType {
26b092da8cSSimon Tatham PrintRecords,
27b092da8cSSimon Tatham DumpJSON,
28bee583fdSPeter Collingbourne GenClangAttrClasses,
2935db2b3dSAaron Ballman GenClangAttrParserStringSwitches,
309e7bf161SAlex Lorenz GenClangAttrSubjectMatchRulesParserStringSwitches,
31bee583fdSPeter Collingbourne GenClangAttrImpl,
32bee583fdSPeter Collingbourne GenClangAttrList,
3318f9e25cSSam McCall GenClangAttrDocTable,
349e7bf161SAlex Lorenz GenClangAttrSubjectMatchRuleList,
35bee583fdSPeter Collingbourne GenClangAttrPCHRead,
36bee583fdSPeter Collingbourne GenClangAttrPCHWrite,
372fbf9942SAaron Ballman GenClangAttrHasAttributeImpl,
3899315932SMichael Han GenClangAttrSpellingListIndex,
39c4a82438SDeLesley Hutchins GenClangAttrASTVisitor,
40ceec3063SDeLesley Hutchins GenClangAttrTemplateInstantiate,
414a045173SMichael Han GenClangAttrParsedAttrList,
428ee40b72SAaron Ballman GenClangAttrParsedAttrImpl,
434a045173SMichael Han GenClangAttrParsedAttrKinds,
44db8fac14SStephen Kelly GenClangAttrTextNodeDump,
45db8fac14SStephen Kelly GenClangAttrNodeTraverse,
466404bd23SJohn McCall GenClangBasicReader,
476404bd23SJohn McCall GenClangBasicWriter,
48bee583fdSPeter Collingbourne GenClangDiagsDefs,
49bee583fdSPeter Collingbourne GenClangDiagGroups,
50bee583fdSPeter Collingbourne GenClangDiagsIndexName,
51ec92531cSDmitri Gribenko GenClangCommentNodes,
52bee583fdSPeter Collingbourne GenClangDeclNodes,
53bee583fdSPeter Collingbourne GenClangStmtNodes,
54a82d2fe9SJohn McCall GenClangTypeNodes,
55d505e57cSJohn McCall GenClangTypeReader,
56d505e57cSJohn McCall GenClangTypeWriter,
57950b70dcSNandor Licker GenClangOpcodes,
58bee583fdSPeter Collingbourne GenClangSACheckers,
59454579e4SSam McCall GenClangSyntaxNodeList,
6098aa0671SSam McCall GenClangSyntaxNodeClasses,
613ca956f7SDmitri Gribenko GenClangCommentHTMLTags,
623ca956f7SDmitri Gribenko GenClangCommentHTMLTagsProperties,
6328800da1SDmitri Gribenko GenClangCommentHTMLNamedCharacterReferences,
647acbf00fSDmitri Gribenko GenClangCommentCommandInfo,
652e72dd4aSDmitri Gribenko GenClangCommentCommandList,
6679a222fcSSven van Haastregt GenClangOpenCLBuiltins,
678866793bSSven van Haastregt GenClangOpenCLBuiltinTests,
68bee583fdSPeter Collingbourne GenArmNeon,
69ce8746d1SAbderrazek Zaafrani GenArmFP16,
70a6fcf5caSTies Stuij GenArmBF16,
71bee583fdSPeter Collingbourne GenArmNeonSema,
7297dba048SAaron Ballman GenArmNeonTest,
7308074cc9SSimon Tatham GenArmMveHeader,
7408074cc9SSimon Tatham GenArmMveBuiltinDef,
7508074cc9SSimon Tatham GenArmMveBuiltinSema,
7608074cc9SSimon Tatham GenArmMveBuiltinCG,
7708074cc9SSimon Tatham GenArmMveBuiltinAliases,
785087ace6SSander de Smalen GenArmSveHeader,
79c5b81466SSander de Smalen GenArmSveBuiltins,
80c5b81466SSander de Smalen GenArmSveBuiltinCG,
81c5b81466SSander de Smalen GenArmSveTypeFlags,
82c8a5b30bSSander de Smalen GenArmSveRangeChecks,
8347edf5baSMikhail Maltsev GenArmCdeHeader,
8447edf5baSMikhail Maltsev GenArmCdeBuiltinDef,
8547edf5baSMikhail Maltsev GenArmCdeBuiltinSema,
8647edf5baSMikhail Maltsev GenArmCdeBuiltinCG,
8747edf5baSMikhail Maltsev GenArmCdeBuiltinAliases,
88d6a0560bSZakk Chen GenRISCVVectorHeader,
89d6a0560bSZakk Chen GenRISCVVectorBuiltins,
90d6a0560bSZakk Chen GenRISCVVectorBuiltinCG,
91*7a5cb15eSKito Cheng GenRISCVVectorBuiltinSema,
92b6a3b4baSRichard Smith GenAttrDocs,
93081ad4d3SRichard Smith GenDiagDocs,
949e7bf161SAlex Lorenz GenOptDocs,
951509da08SJohannes Altmanninger GenDataCollectors,
969e7bf161SAlex Lorenz GenTestPragmaAttributeSupportedAttributes
97bee583fdSPeter Collingbourne };
98bee583fdSPeter Collingbourne
99bee583fdSPeter Collingbourne namespace {
100d3f8b1f2SRafael Espindola cl::opt<ActionType> Action(
101d3f8b1f2SRafael Espindola cl::desc("Action to perform:"),
102d3f8b1f2SRafael Espindola cl::values(
103b092da8cSSimon Tatham clEnumValN(PrintRecords, "print-records",
104b092da8cSSimon Tatham "Print all records to stdout (default)"),
105b092da8cSSimon Tatham clEnumValN(DumpJSON, "dump-json",
106b092da8cSSimon Tatham "Dump all records as machine-readable JSON"),
107d3f8b1f2SRafael Espindola clEnumValN(GenClangAttrClasses, "gen-clang-attr-classes",
108bee583fdSPeter Collingbourne "Generate clang attribute clases"),
10935db2b3dSAaron Ballman clEnumValN(GenClangAttrParserStringSwitches,
11035db2b3dSAaron Ballman "gen-clang-attr-parser-string-switches",
11135db2b3dSAaron Ballman "Generate all parser-related attribute string switches"),
1129e7bf161SAlex Lorenz clEnumValN(GenClangAttrSubjectMatchRulesParserStringSwitches,
1139e7bf161SAlex Lorenz "gen-clang-attr-subject-match-rules-parser-string-switches",
1149e7bf161SAlex Lorenz "Generate all parser-related attribute subject match rule"
1159e7bf161SAlex Lorenz "string switches"),
116bee583fdSPeter Collingbourne clEnumValN(GenClangAttrImpl, "gen-clang-attr-impl",
117bee583fdSPeter Collingbourne "Generate clang attribute implementations"),
118bee583fdSPeter Collingbourne clEnumValN(GenClangAttrList, "gen-clang-attr-list",
119bee583fdSPeter Collingbourne "Generate a clang attribute list"),
12018f9e25cSSam McCall clEnumValN(GenClangAttrDocTable, "gen-clang-attr-doc-table",
12118f9e25cSSam McCall "Generate a table of attribute documentation"),
1229e7bf161SAlex Lorenz clEnumValN(GenClangAttrSubjectMatchRuleList,
1239e7bf161SAlex Lorenz "gen-clang-attr-subject-match-rule-list",
1249e7bf161SAlex Lorenz "Generate a clang attribute subject match rule list"),
125bee583fdSPeter Collingbourne clEnumValN(GenClangAttrPCHRead, "gen-clang-attr-pch-read",
126bee583fdSPeter Collingbourne "Generate clang PCH attribute reader"),
127bee583fdSPeter Collingbourne clEnumValN(GenClangAttrPCHWrite, "gen-clang-attr-pch-write",
128bee583fdSPeter Collingbourne "Generate clang PCH attribute writer"),
1292fbf9942SAaron Ballman clEnumValN(GenClangAttrHasAttributeImpl,
1302fbf9942SAaron Ballman "gen-clang-attr-has-attribute-impl",
131bee583fdSPeter Collingbourne "Generate a clang attribute spelling list"),
13299315932SMichael Han clEnumValN(GenClangAttrSpellingListIndex,
13399315932SMichael Han "gen-clang-attr-spelling-index",
13499315932SMichael Han "Generate a clang attribute spelling index"),
1359e7bf161SAlex Lorenz clEnumValN(GenClangAttrASTVisitor, "gen-clang-attr-ast-visitor",
136c4a82438SDeLesley Hutchins "Generate a recursive AST visitor for clang attributes"),
137ceec3063SDeLesley Hutchins clEnumValN(GenClangAttrTemplateInstantiate,
138ceec3063SDeLesley Hutchins "gen-clang-attr-template-instantiate",
139ceec3063SDeLesley Hutchins "Generate a clang template instantiate code"),
1404a045173SMichael Han clEnumValN(GenClangAttrParsedAttrList,
1414a045173SMichael Han "gen-clang-attr-parsed-attr-list",
1424a045173SMichael Han "Generate a clang parsed attribute list"),
1438ee40b72SAaron Ballman clEnumValN(GenClangAttrParsedAttrImpl,
1448ee40b72SAaron Ballman "gen-clang-attr-parsed-attr-impl",
1458ee40b72SAaron Ballman "Generate the clang parsed attribute helpers"),
1464a045173SMichael Han clEnumValN(GenClangAttrParsedAttrKinds,
1474a045173SMichael Han "gen-clang-attr-parsed-attr-kinds",
1484a045173SMichael Han "Generate a clang parsed attribute kinds"),
149db8fac14SStephen Kelly clEnumValN(GenClangAttrTextNodeDump, "gen-clang-attr-text-node-dump",
150db8fac14SStephen Kelly "Generate clang attribute text node dumper"),
151db8fac14SStephen Kelly clEnumValN(GenClangAttrNodeTraverse, "gen-clang-attr-node-traverse",
152db8fac14SStephen Kelly "Generate clang attribute traverser"),
153bee583fdSPeter Collingbourne clEnumValN(GenClangDiagsDefs, "gen-clang-diags-defs",
154bee583fdSPeter Collingbourne "Generate Clang diagnostics definitions"),
155bee583fdSPeter Collingbourne clEnumValN(GenClangDiagGroups, "gen-clang-diag-groups",
156bee583fdSPeter Collingbourne "Generate Clang diagnostic groups"),
157d3f8b1f2SRafael Espindola clEnumValN(GenClangDiagsIndexName, "gen-clang-diags-index-name",
158bee583fdSPeter Collingbourne "Generate Clang diagnostic name index"),
1596404bd23SJohn McCall clEnumValN(GenClangBasicReader, "gen-clang-basic-reader",
1606404bd23SJohn McCall "Generate Clang BasicReader classes"),
1616404bd23SJohn McCall clEnumValN(GenClangBasicWriter, "gen-clang-basic-writer",
1626404bd23SJohn McCall "Generate Clang BasicWriter classes"),
163ec92531cSDmitri Gribenko clEnumValN(GenClangCommentNodes, "gen-clang-comment-nodes",
164ec92531cSDmitri Gribenko "Generate Clang AST comment nodes"),
165bee583fdSPeter Collingbourne clEnumValN(GenClangDeclNodes, "gen-clang-decl-nodes",
166bee583fdSPeter Collingbourne "Generate Clang AST declaration nodes"),
167bee583fdSPeter Collingbourne clEnumValN(GenClangStmtNodes, "gen-clang-stmt-nodes",
168bee583fdSPeter Collingbourne "Generate Clang AST statement nodes"),
169a82d2fe9SJohn McCall clEnumValN(GenClangTypeNodes, "gen-clang-type-nodes",
170a82d2fe9SJohn McCall "Generate Clang AST type nodes"),
171d505e57cSJohn McCall clEnumValN(GenClangTypeReader, "gen-clang-type-reader",
172d505e57cSJohn McCall "Generate Clang AbstractTypeReader class"),
173d505e57cSJohn McCall clEnumValN(GenClangTypeWriter, "gen-clang-type-writer",
174d505e57cSJohn McCall "Generate Clang AbstractTypeWriter class"),
175950b70dcSNandor Licker clEnumValN(GenClangOpcodes, "gen-clang-opcodes",
176950b70dcSNandor Licker "Generate Clang constexpr interpreter opcodes"),
177bee583fdSPeter Collingbourne clEnumValN(GenClangSACheckers, "gen-clang-sa-checkers",
178bee583fdSPeter Collingbourne "Generate Clang Static Analyzer checkers"),
179454579e4SSam McCall clEnumValN(GenClangSyntaxNodeList, "gen-clang-syntax-node-list",
180454579e4SSam McCall "Generate list of Clang Syntax Tree node types"),
18198aa0671SSam McCall clEnumValN(GenClangSyntaxNodeClasses, "gen-clang-syntax-node-classes",
18298aa0671SSam McCall "Generate definitions of Clang Syntax Tree node clasess"),
183d3f8b1f2SRafael Espindola clEnumValN(GenClangCommentHTMLTags, "gen-clang-comment-html-tags",
1843ca956f7SDmitri Gribenko "Generate efficient matchers for HTML tag "
1853ca956f7SDmitri Gribenko "names that are used in documentation comments"),
1863ca956f7SDmitri Gribenko clEnumValN(GenClangCommentHTMLTagsProperties,
1873ca956f7SDmitri Gribenko "gen-clang-comment-html-tags-properties",
1883ca956f7SDmitri Gribenko "Generate efficient matchers for HTML tag "
1893ca956f7SDmitri Gribenko "properties"),
19028800da1SDmitri Gribenko clEnumValN(GenClangCommentHTMLNamedCharacterReferences,
19128800da1SDmitri Gribenko "gen-clang-comment-html-named-character-references",
19228800da1SDmitri Gribenko "Generate function to translate named character "
19328800da1SDmitri Gribenko "references to UTF-8 sequences"),
194d3f8b1f2SRafael Espindola clEnumValN(GenClangCommentCommandInfo, "gen-clang-comment-command-info",
1952e72dd4aSDmitri Gribenko "Generate command properties for commands that "
1962e72dd4aSDmitri Gribenko "are used in documentation comments"),
197d3f8b1f2SRafael Espindola clEnumValN(GenClangCommentCommandList, "gen-clang-comment-command-list",
1987acbf00fSDmitri Gribenko "Generate list of commands that are used in "
1997acbf00fSDmitri Gribenko "documentation comments"),
20079a222fcSSven van Haastregt clEnumValN(GenClangOpenCLBuiltins, "gen-clang-opencl-builtins",
20179a222fcSSven van Haastregt "Generate OpenCL builtin declaration handlers"),
2028866793bSSven van Haastregt clEnumValN(GenClangOpenCLBuiltinTests, "gen-clang-opencl-builtin-tests",
2038866793bSSven van Haastregt "Generate OpenCL builtin declaration tests"),
204d3f8b1f2SRafael Espindola clEnumValN(GenArmNeon, "gen-arm-neon", "Generate arm_neon.h for clang"),
205ce8746d1SAbderrazek Zaafrani clEnumValN(GenArmFP16, "gen-arm-fp16", "Generate arm_fp16.h for clang"),
206a6fcf5caSTies Stuij clEnumValN(GenArmBF16, "gen-arm-bf16", "Generate arm_bf16.h for clang"),
207bee583fdSPeter Collingbourne clEnumValN(GenArmNeonSema, "gen-arm-neon-sema",
208bee583fdSPeter Collingbourne "Generate ARM NEON sema support for clang"),
209bee583fdSPeter Collingbourne clEnumValN(GenArmNeonTest, "gen-arm-neon-test",
210bee583fdSPeter Collingbourne "Generate ARM NEON tests for clang"),
2115087ace6SSander de Smalen clEnumValN(GenArmSveHeader, "gen-arm-sve-header",
2125087ace6SSander de Smalen "Generate arm_sve.h for clang"),
213c5b81466SSander de Smalen clEnumValN(GenArmSveBuiltins, "gen-arm-sve-builtins",
214c5b81466SSander de Smalen "Generate arm_sve_builtins.inc for clang"),
215c5b81466SSander de Smalen clEnumValN(GenArmSveBuiltinCG, "gen-arm-sve-builtin-codegen",
216c5b81466SSander de Smalen "Generate arm_sve_builtin_cg_map.inc for clang"),
217c5b81466SSander de Smalen clEnumValN(GenArmSveTypeFlags, "gen-arm-sve-typeflags",
218c5b81466SSander de Smalen "Generate arm_sve_typeflags.inc for clang"),
219c8a5b30bSSander de Smalen clEnumValN(GenArmSveRangeChecks, "gen-arm-sve-sema-rangechecks",
220c8a5b30bSSander de Smalen "Generate arm_sve_sema_rangechecks.inc for clang"),
22108074cc9SSimon Tatham clEnumValN(GenArmMveHeader, "gen-arm-mve-header",
22208074cc9SSimon Tatham "Generate arm_mve.h for clang"),
22308074cc9SSimon Tatham clEnumValN(GenArmMveBuiltinDef, "gen-arm-mve-builtin-def",
22408074cc9SSimon Tatham "Generate ARM MVE builtin definitions for clang"),
22508074cc9SSimon Tatham clEnumValN(GenArmMveBuiltinSema, "gen-arm-mve-builtin-sema",
22608074cc9SSimon Tatham "Generate ARM MVE builtin sema checks for clang"),
22708074cc9SSimon Tatham clEnumValN(GenArmMveBuiltinCG, "gen-arm-mve-builtin-codegen",
22808074cc9SSimon Tatham "Generate ARM MVE builtin code-generator for clang"),
22908074cc9SSimon Tatham clEnumValN(GenArmMveBuiltinAliases, "gen-arm-mve-builtin-aliases",
23008074cc9SSimon Tatham "Generate list of valid ARM MVE builtin aliases for clang"),
23147edf5baSMikhail Maltsev clEnumValN(GenArmCdeHeader, "gen-arm-cde-header",
23247edf5baSMikhail Maltsev "Generate arm_cde.h for clang"),
23347edf5baSMikhail Maltsev clEnumValN(GenArmCdeBuiltinDef, "gen-arm-cde-builtin-def",
23447edf5baSMikhail Maltsev "Generate ARM CDE builtin definitions for clang"),
23547edf5baSMikhail Maltsev clEnumValN(GenArmCdeBuiltinSema, "gen-arm-cde-builtin-sema",
23647edf5baSMikhail Maltsev "Generate ARM CDE builtin sema checks for clang"),
23747edf5baSMikhail Maltsev clEnumValN(GenArmCdeBuiltinCG, "gen-arm-cde-builtin-codegen",
23847edf5baSMikhail Maltsev "Generate ARM CDE builtin code-generator for clang"),
23947edf5baSMikhail Maltsev clEnumValN(GenArmCdeBuiltinAliases, "gen-arm-cde-builtin-aliases",
24047edf5baSMikhail Maltsev "Generate list of valid ARM CDE builtin aliases for clang"),
241d6a0560bSZakk Chen clEnumValN(GenRISCVVectorHeader, "gen-riscv-vector-header",
242d6a0560bSZakk Chen "Generate riscv_vector.h for clang"),
243d6a0560bSZakk Chen clEnumValN(GenRISCVVectorBuiltins, "gen-riscv-vector-builtins",
244d6a0560bSZakk Chen "Generate riscv_vector_builtins.inc for clang"),
245d6a0560bSZakk Chen clEnumValN(GenRISCVVectorBuiltinCG, "gen-riscv-vector-builtin-codegen",
246d6a0560bSZakk Chen "Generate riscv_vector_builtin_cg.inc for clang"),
247*7a5cb15eSKito Cheng clEnumValN(GenRISCVVectorBuiltinSema, "gen-riscv-vector-builtin-sema",
248*7a5cb15eSKito Cheng "Generate riscv_vector_builtin_sema.inc for clang"),
24997dba048SAaron Ballman clEnumValN(GenAttrDocs, "gen-attr-docs",
25097dba048SAaron Ballman "Generate attribute documentation"),
251b6a3b4baSRichard Smith clEnumValN(GenDiagDocs, "gen-diag-docs",
252081ad4d3SRichard Smith "Generate diagnostic documentation"),
2539e7bf161SAlex Lorenz clEnumValN(GenOptDocs, "gen-opt-docs", "Generate option documentation"),
2541509da08SJohannes Altmanninger clEnumValN(GenDataCollectors, "gen-clang-data-collectors",
2551509da08SJohannes Altmanninger "Generate data collectors for AST nodes"),
2569e7bf161SAlex Lorenz clEnumValN(GenTestPragmaAttributeSupportedAttributes,
2579e7bf161SAlex Lorenz "gen-clang-test-pragma-attribute-supported-attributes",
2589e7bf161SAlex Lorenz "Generate a list of attributes supported by #pragma clang "
2599e7bf161SAlex Lorenz "attribute for testing purposes")));
260bee583fdSPeter Collingbourne
261bee583fdSPeter Collingbourne cl::opt<std::string>
262bee583fdSPeter Collingbourne ClangComponent("clang-component",
263bee583fdSPeter Collingbourne cl::desc("Only use warnings from specified component"),
264bee583fdSPeter Collingbourne cl::value_desc("component"), cl::Hidden);
265bee583fdSPeter Collingbourne
ClangTableGenMain(raw_ostream & OS,RecordKeeper & Records)266f85f39dfSSean Silva bool ClangTableGenMain(raw_ostream &OS, RecordKeeper &Records) {
267bee583fdSPeter Collingbourne switch (Action) {
268b092da8cSSimon Tatham case PrintRecords:
269b092da8cSSimon Tatham OS << Records; // No argument, dump all contents
270b092da8cSSimon Tatham break;
271b092da8cSSimon Tatham case DumpJSON:
272b092da8cSSimon Tatham EmitJSON(Records, OS);
273b092da8cSSimon Tatham break;
274bee583fdSPeter Collingbourne case GenClangAttrClasses:
275995e0e13SJakob Stoklund Olesen EmitClangAttrClass(Records, OS);
276bee583fdSPeter Collingbourne break;
27735db2b3dSAaron Ballman case GenClangAttrParserStringSwitches:
27835db2b3dSAaron Ballman EmitClangAttrParserStringSwitches(Records, OS);
2794768b317SAaron Ballman break;
2809e7bf161SAlex Lorenz case GenClangAttrSubjectMatchRulesParserStringSwitches:
2819e7bf161SAlex Lorenz EmitClangAttrSubjectMatchRulesParserStringSwitches(Records, OS);
2829e7bf161SAlex Lorenz break;
283bee583fdSPeter Collingbourne case GenClangAttrImpl:
284995e0e13SJakob Stoklund Olesen EmitClangAttrImpl(Records, OS);
285bee583fdSPeter Collingbourne break;
286bee583fdSPeter Collingbourne case GenClangAttrList:
287995e0e13SJakob Stoklund Olesen EmitClangAttrList(Records, OS);
288bee583fdSPeter Collingbourne break;
28918f9e25cSSam McCall case GenClangAttrDocTable:
29018f9e25cSSam McCall EmitClangAttrDocTable(Records, OS);
29118f9e25cSSam McCall break;
2929e7bf161SAlex Lorenz case GenClangAttrSubjectMatchRuleList:
2939e7bf161SAlex Lorenz EmitClangAttrSubjectMatchRuleList(Records, OS);
2949e7bf161SAlex Lorenz break;
295bee583fdSPeter Collingbourne case GenClangAttrPCHRead:
296995e0e13SJakob Stoklund Olesen EmitClangAttrPCHRead(Records, OS);
297bee583fdSPeter Collingbourne break;
298bee583fdSPeter Collingbourne case GenClangAttrPCHWrite:
299995e0e13SJakob Stoklund Olesen EmitClangAttrPCHWrite(Records, OS);
300bee583fdSPeter Collingbourne break;
3012fbf9942SAaron Ballman case GenClangAttrHasAttributeImpl:
3022fbf9942SAaron Ballman EmitClangAttrHasAttrImpl(Records, OS);
303bee583fdSPeter Collingbourne break;
30499315932SMichael Han case GenClangAttrSpellingListIndex:
30599315932SMichael Han EmitClangAttrSpellingListIndex(Records, OS);
30699315932SMichael Han break;
307c4a82438SDeLesley Hutchins case GenClangAttrASTVisitor:
308c4a82438SDeLesley Hutchins EmitClangAttrASTVisitor(Records, OS);
309c4a82438SDeLesley Hutchins break;
310ceec3063SDeLesley Hutchins case GenClangAttrTemplateInstantiate:
311995e0e13SJakob Stoklund Olesen EmitClangAttrTemplateInstantiate(Records, OS);
312ceec3063SDeLesley Hutchins break;
3134a045173SMichael Han case GenClangAttrParsedAttrList:
314995e0e13SJakob Stoklund Olesen EmitClangAttrParsedAttrList(Records, OS);
3154a045173SMichael Han break;
3168ee40b72SAaron Ballman case GenClangAttrParsedAttrImpl:
3178ee40b72SAaron Ballman EmitClangAttrParsedAttrImpl(Records, OS);
3188ee40b72SAaron Ballman break;
3194a045173SMichael Han case GenClangAttrParsedAttrKinds:
320995e0e13SJakob Stoklund Olesen EmitClangAttrParsedAttrKinds(Records, OS);
3214a045173SMichael Han break;
322db8fac14SStephen Kelly case GenClangAttrTextNodeDump:
323db8fac14SStephen Kelly EmitClangAttrTextNodeDump(Records, OS);
324db8fac14SStephen Kelly break;
325db8fac14SStephen Kelly case GenClangAttrNodeTraverse:
326db8fac14SStephen Kelly EmitClangAttrNodeTraverse(Records, OS);
3275bc364ebSAlexander Kornienko break;
328bee583fdSPeter Collingbourne case GenClangDiagsDefs:
329995e0e13SJakob Stoklund Olesen EmitClangDiagsDefs(Records, OS, ClangComponent);
330bee583fdSPeter Collingbourne break;
331bee583fdSPeter Collingbourne case GenClangDiagGroups:
332995e0e13SJakob Stoklund Olesen EmitClangDiagGroups(Records, OS);
333bee583fdSPeter Collingbourne break;
334bee583fdSPeter Collingbourne case GenClangDiagsIndexName:
335995e0e13SJakob Stoklund Olesen EmitClangDiagsIndexName(Records, OS);
336bee583fdSPeter Collingbourne break;
337ec92531cSDmitri Gribenko case GenClangCommentNodes:
338baf91d02SJohn McCall EmitClangASTNodes(Records, OS, CommentNodeClassName, "");
339ec92531cSDmitri Gribenko break;
340bee583fdSPeter Collingbourne case GenClangDeclNodes:
341baf91d02SJohn McCall EmitClangASTNodes(Records, OS, DeclNodeClassName, "Decl");
342995e0e13SJakob Stoklund Olesen EmitClangDeclContext(Records, OS);
343bee583fdSPeter Collingbourne break;
344bee583fdSPeter Collingbourne case GenClangStmtNodes:
345baf91d02SJohn McCall EmitClangASTNodes(Records, OS, StmtNodeClassName, "");
346bee583fdSPeter Collingbourne break;
347a82d2fe9SJohn McCall case GenClangTypeNodes:
348a82d2fe9SJohn McCall EmitClangTypeNodes(Records, OS);
349a82d2fe9SJohn McCall break;
350d505e57cSJohn McCall case GenClangTypeReader:
351d505e57cSJohn McCall EmitClangTypeReader(Records, OS);
352d505e57cSJohn McCall break;
353d505e57cSJohn McCall case GenClangTypeWriter:
354d505e57cSJohn McCall EmitClangTypeWriter(Records, OS);
355d505e57cSJohn McCall break;
3566404bd23SJohn McCall case GenClangBasicReader:
3576404bd23SJohn McCall EmitClangBasicReader(Records, OS);
3586404bd23SJohn McCall break;
3596404bd23SJohn McCall case GenClangBasicWriter:
3606404bd23SJohn McCall EmitClangBasicWriter(Records, OS);
3616404bd23SJohn McCall break;
362950b70dcSNandor Licker case GenClangOpcodes:
363950b70dcSNandor Licker EmitClangOpcodes(Records, OS);
364950b70dcSNandor Licker break;
365bee583fdSPeter Collingbourne case GenClangSACheckers:
366995e0e13SJakob Stoklund Olesen EmitClangSACheckers(Records, OS);
367bee583fdSPeter Collingbourne break;
3683ca956f7SDmitri Gribenko case GenClangCommentHTMLTags:
3693ca956f7SDmitri Gribenko EmitClangCommentHTMLTags(Records, OS);
3703ca956f7SDmitri Gribenko break;
3713ca956f7SDmitri Gribenko case GenClangCommentHTMLTagsProperties:
3723ca956f7SDmitri Gribenko EmitClangCommentHTMLTagsProperties(Records, OS);
3733ca956f7SDmitri Gribenko break;
37428800da1SDmitri Gribenko case GenClangCommentHTMLNamedCharacterReferences:
37528800da1SDmitri Gribenko EmitClangCommentHTMLNamedCharacterReferences(Records, OS);
37628800da1SDmitri Gribenko break;
3777acbf00fSDmitri Gribenko case GenClangCommentCommandInfo:
3787acbf00fSDmitri Gribenko EmitClangCommentCommandInfo(Records, OS);
3797acbf00fSDmitri Gribenko break;
3802e72dd4aSDmitri Gribenko case GenClangCommentCommandList:
3812e72dd4aSDmitri Gribenko EmitClangCommentCommandList(Records, OS);
3822e72dd4aSDmitri Gribenko break;
38379a222fcSSven van Haastregt case GenClangOpenCLBuiltins:
38479a222fcSSven van Haastregt EmitClangOpenCLBuiltins(Records, OS);
38579a222fcSSven van Haastregt break;
3868866793bSSven van Haastregt case GenClangOpenCLBuiltinTests:
3878866793bSSven van Haastregt EmitClangOpenCLBuiltinTests(Records, OS);
3888866793bSSven van Haastregt break;
389454579e4SSam McCall case GenClangSyntaxNodeList:
390454579e4SSam McCall EmitClangSyntaxNodeList(Records, OS);
391454579e4SSam McCall break;
39298aa0671SSam McCall case GenClangSyntaxNodeClasses:
39398aa0671SSam McCall EmitClangSyntaxNodeClasses(Records, OS);
39498aa0671SSam McCall break;
395bee583fdSPeter Collingbourne case GenArmNeon:
396995e0e13SJakob Stoklund Olesen EmitNeon(Records, OS);
397bee583fdSPeter Collingbourne break;
398ce8746d1SAbderrazek Zaafrani case GenArmFP16:
399ce8746d1SAbderrazek Zaafrani EmitFP16(Records, OS);
400ce8746d1SAbderrazek Zaafrani break;
401a6fcf5caSTies Stuij case GenArmBF16:
402a6fcf5caSTies Stuij EmitBF16(Records, OS);
403a6fcf5caSTies Stuij break;
404bee583fdSPeter Collingbourne case GenArmNeonSema:
405995e0e13SJakob Stoklund Olesen EmitNeonSema(Records, OS);
406bee583fdSPeter Collingbourne break;
407bee583fdSPeter Collingbourne case GenArmNeonTest:
408995e0e13SJakob Stoklund Olesen EmitNeonTest(Records, OS);
409bee583fdSPeter Collingbourne break;
41008074cc9SSimon Tatham case GenArmMveHeader:
41108074cc9SSimon Tatham EmitMveHeader(Records, OS);
41208074cc9SSimon Tatham break;
41308074cc9SSimon Tatham case GenArmMveBuiltinDef:
41408074cc9SSimon Tatham EmitMveBuiltinDef(Records, OS);
41508074cc9SSimon Tatham break;
41608074cc9SSimon Tatham case GenArmMveBuiltinSema:
41708074cc9SSimon Tatham EmitMveBuiltinSema(Records, OS);
41808074cc9SSimon Tatham break;
41908074cc9SSimon Tatham case GenArmMveBuiltinCG:
42008074cc9SSimon Tatham EmitMveBuiltinCG(Records, OS);
42108074cc9SSimon Tatham break;
42208074cc9SSimon Tatham case GenArmMveBuiltinAliases:
42308074cc9SSimon Tatham EmitMveBuiltinAliases(Records, OS);
42408074cc9SSimon Tatham break;
4255087ace6SSander de Smalen case GenArmSveHeader:
4265087ace6SSander de Smalen EmitSveHeader(Records, OS);
4275087ace6SSander de Smalen break;
428c5b81466SSander de Smalen case GenArmSveBuiltins:
429c5b81466SSander de Smalen EmitSveBuiltins(Records, OS);
430c5b81466SSander de Smalen break;
431c5b81466SSander de Smalen case GenArmSveBuiltinCG:
432c5b81466SSander de Smalen EmitSveBuiltinCG(Records, OS);
433c5b81466SSander de Smalen break;
434c5b81466SSander de Smalen case GenArmSveTypeFlags:
435c5b81466SSander de Smalen EmitSveTypeFlags(Records, OS);
436c5b81466SSander de Smalen break;
437c8a5b30bSSander de Smalen case GenArmSveRangeChecks:
438c8a5b30bSSander de Smalen EmitSveRangeChecks(Records, OS);
439c8a5b30bSSander de Smalen break;
44047edf5baSMikhail Maltsev case GenArmCdeHeader:
44147edf5baSMikhail Maltsev EmitCdeHeader(Records, OS);
44247edf5baSMikhail Maltsev break;
44347edf5baSMikhail Maltsev case GenArmCdeBuiltinDef:
44447edf5baSMikhail Maltsev EmitCdeBuiltinDef(Records, OS);
44547edf5baSMikhail Maltsev break;
44647edf5baSMikhail Maltsev case GenArmCdeBuiltinSema:
44747edf5baSMikhail Maltsev EmitCdeBuiltinSema(Records, OS);
44847edf5baSMikhail Maltsev break;
44947edf5baSMikhail Maltsev case GenArmCdeBuiltinCG:
45047edf5baSMikhail Maltsev EmitCdeBuiltinCG(Records, OS);
45147edf5baSMikhail Maltsev break;
45247edf5baSMikhail Maltsev case GenArmCdeBuiltinAliases:
45347edf5baSMikhail Maltsev EmitCdeBuiltinAliases(Records, OS);
45447edf5baSMikhail Maltsev break;
455d6a0560bSZakk Chen case GenRISCVVectorHeader:
456d6a0560bSZakk Chen EmitRVVHeader(Records, OS);
457d6a0560bSZakk Chen break;
458d6a0560bSZakk Chen case GenRISCVVectorBuiltins:
459d6a0560bSZakk Chen EmitRVVBuiltins(Records, OS);
460d6a0560bSZakk Chen break;
461d6a0560bSZakk Chen case GenRISCVVectorBuiltinCG:
462d6a0560bSZakk Chen EmitRVVBuiltinCG(Records, OS);
463d6a0560bSZakk Chen break;
464*7a5cb15eSKito Cheng case GenRISCVVectorBuiltinSema:
465*7a5cb15eSKito Cheng EmitRVVBuiltinSema(Records, OS);
466*7a5cb15eSKito Cheng break;
46797dba048SAaron Ballman case GenAttrDocs:
46897dba048SAaron Ballman EmitClangAttrDocs(Records, OS);
46997dba048SAaron Ballman break;
470b6a3b4baSRichard Smith case GenDiagDocs:
471b6a3b4baSRichard Smith EmitClangDiagDocs(Records, OS);
472b6a3b4baSRichard Smith break;
473081ad4d3SRichard Smith case GenOptDocs:
474081ad4d3SRichard Smith EmitClangOptDocs(Records, OS);
475081ad4d3SRichard Smith break;
4761509da08SJohannes Altmanninger case GenDataCollectors:
4771509da08SJohannes Altmanninger EmitClangDataCollectors(Records, OS);
4781509da08SJohannes Altmanninger break;
4799e7bf161SAlex Lorenz case GenTestPragmaAttributeSupportedAttributes:
4809e7bf161SAlex Lorenz EmitTestPragmaAttributeSupportedAttributes(Records, OS);
4819e7bf161SAlex Lorenz break;
482bee583fdSPeter Collingbourne }
483bee583fdSPeter Collingbourne
484bee583fdSPeter Collingbourne return false;
485bee583fdSPeter Collingbourne }
486ab9db510SAlexander Kornienko }
487bee583fdSPeter Collingbourne
main(int argc,char ** argv)488bee583fdSPeter Collingbourne int main(int argc, char **argv) {
4896f773205SNico Weber sys::PrintStackTraceOnErrorSignal(argv[0]);
4906f773205SNico Weber PrettyStackTraceProgram X(argc, argv);
491bee583fdSPeter Collingbourne cl::ParseCommandLineOptions(argc, argv);
492bee583fdSPeter Collingbourne
493d3dfa14aSCraig Topper llvm_shutdown_obj Y;
494d3dfa14aSCraig Topper
495f85f39dfSSean Silva return TableGenMain(argv[0], &ClangTableGenMain);
496bee583fdSPeter Collingbourne }
497a6afef7aSKostya Serebryany
498317e2c49SKostya Serebryany #ifdef __has_feature
499317e2c49SKostya Serebryany #if __has_feature(address_sanitizer)
500317e2c49SKostya Serebryany #include <sanitizer/lsan_interface.h>
501a6afef7aSKostya Serebryany // Disable LeakSanitizer for this binary as it has too many leaks that are not
502317e2c49SKostya Serebryany // very interesting to fix. See compiler-rt/include/sanitizer/lsan_interface.h .
__lsan_is_turned_off()503317e2c49SKostya Serebryany int __lsan_is_turned_off() { return 1; }
504317e2c49SKostya Serebryany #endif // __has_feature(address_sanitizer)
505317e2c49SKostya Serebryany #endif // defined(__has_feature)
506