687 lines · cpp
1//===-- TableGen.cpp - Top-Level TableGen implementation for Clang --------===//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-exception6//7//===----------------------------------------------------------------------===//8//9// This file contains the main function for Clang's TableGen.10//11//===----------------------------------------------------------------------===//12 13#include "ASTTableGen.h"14#include "TableGenBackends.h" // Declares all backends.15#include "llvm/Support/CommandLine.h"16#include "llvm/Support/ManagedStatic.h"17#include "llvm/Support/PrettyStackTrace.h"18#include "llvm/Support/Signals.h"19#include "llvm/TableGen/Main.h"20#include "llvm/TableGen/Record.h"21 22using namespace llvm;23using namespace clang;24 25enum ActionType {26 PrintRecords,27 DumpJSON,28 GenCIRLowering,29 GenClangAttrClasses,30 GenClangAttrParserStringSwitches,31 GenClangAttrSubjectMatchRulesParserStringSwitches,32 GenClangAttrImpl,33 GenClangAttrList,34 GenClangAttrDocTable,35 GenClangAttrSubjectMatchRuleList,36 GenClangAttrPCHRead,37 GenClangAttrPCHWrite,38 GenClangRegularKeywordAttributeInfo,39 GenClangAttrHasAttributeImpl,40 GenClangAttrSpellingListIndex,41 GenClangAttrASTVisitor,42 GenClangAttrTemplateInstantiate,43 GenClangAttrParsedAttrList,44 GenClangAttrParsedAttrImpl,45 GenClangAttrParsedAttrKinds,46 GenClangAttrIsTypeDependent,47 GenClangAttrTextNodeDump,48 GenClangAttrNodeTraverse,49 GenClangBasicReader,50 GenClangBasicWriter,51 GenClangBuiltins,52 GenClangBuiltinTemplates,53 GenClangDiagsCompatIDs,54 GenClangDiagsDefs,55 GenClangDiagsEnums,56 GenClangDiagGroups,57 GenClangDiagsIndexName,58 GenClangDiagsInterface,59 GenClangCommentNodes,60 GenClangDeclNodes,61 GenClangStmtNodes,62 GenClangTypeNodes,63 GenClangTypeReader,64 GenClangTypeWriter,65 GenClangOpcodes,66 GenClangSACheckers,67 GenClangSyntaxNodeList,68 GenClangSyntaxNodeClasses,69 GenClangCommentHTMLTags,70 GenClangCommentHTMLTagsProperties,71 GenClangCommentHTMLNamedCharacterReferences,72 GenClangCommentCommandInfo,73 GenClangCommentCommandList,74 GenClangOpenCLBuiltins,75 GenClangOpenCLBuiltinHeader,76 GenClangOpenCLBuiltinTests,77 GenCXX11AttributeInfo,78 GenAttributeSpellingList,79 GenArmNeon,80 GenArmFP16,81 GenArmBF16,82 GenArmVectorType,83 GenArmNeonSema,84 GenArmNeonTest,85 GenArmImmCheckTypes,86 GenArmMveHeader,87 GenArmMveBuiltinDef,88 GenArmMveBuiltinSema,89 GenArmMveBuiltinCG,90 GenArmMveBuiltinAliases,91 GenArmSveHeader,92 GenArmSveBuiltins,93 GenArmSveBuiltinsJSON,94 GenArmSveBuiltinCG,95 GenArmSveTypeFlags,96 GenArmSveRangeChecks,97 GenArmSveStreamingAttrs,98 GenArmSmeHeader,99 GenArmSmeBuiltins,100 GenArmSmeBuiltinsJSON,101 GenArmSmeBuiltinCG,102 GenArmSmeRangeChecks,103 GenArmSmeStreamingAttrs,104 GenArmSmeBuiltinZAState,105 GenArmCdeHeader,106 GenArmCdeBuiltinDef,107 GenArmCdeBuiltinSema,108 GenArmCdeBuiltinCG,109 GenArmCdeBuiltinAliases,110 GenRISCVVectorHeader,111 GenRISCVVectorBuiltins,112 GenRISCVVectorBuiltinCG,113 GenRISCVVectorBuiltinSema,114 GenRISCVSiFiveVectorBuiltins,115 GenRISCVSiFiveVectorBuiltinCG,116 GenRISCVSiFiveVectorBuiltinSema,117 GenRISCVAndesVectorBuiltins,118 GenRISCVAndesVectorBuiltinCG,119 GenRISCVAndesVectorBuiltinSema,120 GenAttrDocs,121 GenDiagDocs,122 GenOptDocs,123 GenDataCollectors,124 GenTestPragmaAttributeSupportedAttributes125};126 127namespace {128cl::opt<ActionType> Action(129 cl::desc("Action to perform:"),130 cl::values(131 clEnumValN(PrintRecords, "print-records",132 "Print all records to stdout (default)"),133 clEnumValN(DumpJSON, "dump-json",134 "Dump all records as machine-readable JSON"),135 clEnumValN(GenCIRLowering, "gen-cir-lowering",136 "Generate CIR operation lowering patterns"),137 clEnumValN(GenClangAttrClasses, "gen-clang-attr-classes",138 "Generate clang attribute clases"),139 clEnumValN(GenClangAttrParserStringSwitches,140 "gen-clang-attr-parser-string-switches",141 "Generate all parser-related attribute string switches"),142 clEnumValN(GenClangAttrSubjectMatchRulesParserStringSwitches,143 "gen-clang-attr-subject-match-rules-parser-string-switches",144 "Generate all parser-related attribute subject match rule"145 "string switches"),146 clEnumValN(GenClangAttrImpl, "gen-clang-attr-impl",147 "Generate clang attribute implementations"),148 clEnumValN(GenClangAttrList, "gen-clang-attr-list",149 "Generate a clang attribute list"),150 clEnumValN(GenClangAttrDocTable, "gen-clang-attr-doc-table",151 "Generate a table of attribute documentation"),152 clEnumValN(GenClangAttrSubjectMatchRuleList,153 "gen-clang-attr-subject-match-rule-list",154 "Generate a clang attribute subject match rule list"),155 clEnumValN(GenClangAttrPCHRead, "gen-clang-attr-pch-read",156 "Generate clang PCH attribute reader"),157 clEnumValN(GenClangAttrPCHWrite, "gen-clang-attr-pch-write",158 "Generate clang PCH attribute writer"),159 clEnumValN(GenClangRegularKeywordAttributeInfo,160 "gen-clang-regular-keyword-attr-info",161 "Generate a list of regular keyword attributes with info "162 "about their arguments"),163 clEnumValN(GenClangAttrHasAttributeImpl,164 "gen-clang-attr-has-attribute-impl",165 "Generate a clang attribute spelling list"),166 clEnumValN(GenClangAttrSpellingListIndex,167 "gen-clang-attr-spelling-index",168 "Generate a clang attribute spelling index"),169 clEnumValN(GenClangAttrASTVisitor, "gen-clang-attr-ast-visitor",170 "Generate a recursive AST visitor for clang attributes"),171 clEnumValN(GenClangAttrTemplateInstantiate,172 "gen-clang-attr-template-instantiate",173 "Generate a clang template instantiate code"),174 clEnumValN(GenClangAttrParsedAttrList,175 "gen-clang-attr-parsed-attr-list",176 "Generate a clang parsed attribute list"),177 clEnumValN(GenClangAttrParsedAttrImpl,178 "gen-clang-attr-parsed-attr-impl",179 "Generate the clang parsed attribute helpers"),180 clEnumValN(GenClangAttrParsedAttrKinds,181 "gen-clang-attr-parsed-attr-kinds",182 "Generate a clang parsed attribute kinds"),183 clEnumValN(GenClangAttrIsTypeDependent,184 "gen-clang-attr-is-type-dependent",185 "Generate clang is type dependent attribute code"),186 clEnumValN(GenClangAttrTextNodeDump, "gen-clang-attr-text-node-dump",187 "Generate clang attribute text node dumper"),188 clEnumValN(GenClangAttrNodeTraverse, "gen-clang-attr-node-traverse",189 "Generate clang attribute traverser"),190 clEnumValN(GenClangBuiltins, "gen-clang-builtins",191 "Generate clang builtins list"),192 clEnumValN(GenClangBuiltinTemplates, "gen-clang-builtin-templates",193 "Generate clang builtins list"),194 clEnumValN(GenClangDiagsCompatIDs, "gen-clang-diags-compat-ids",195 "Generate Clang diagnostic compatibility ids"),196 clEnumValN(GenClangDiagsDefs, "gen-clang-diags-defs",197 "Generate Clang diagnostics definitions"),198 clEnumValN(GenClangDiagsEnums, "gen-clang-diags-enums",199 "Generate Clang diagnostic enums for selects"),200 clEnumValN(GenClangDiagGroups, "gen-clang-diag-groups",201 "Generate Clang diagnostic groups"),202 clEnumValN(GenClangDiagsIndexName, "gen-clang-diags-index-name",203 "Generate Clang diagnostic name index"),204 clEnumValN(GenClangDiagsInterface, "gen-clang-diags-iface",205 "Generate Clang diagnostic interface headers"),206 clEnumValN(GenClangBasicReader, "gen-clang-basic-reader",207 "Generate Clang BasicReader classes"),208 clEnumValN(GenClangBasicWriter, "gen-clang-basic-writer",209 "Generate Clang BasicWriter classes"),210 clEnumValN(GenClangCommentNodes, "gen-clang-comment-nodes",211 "Generate Clang AST comment nodes"),212 clEnumValN(GenClangDeclNodes, "gen-clang-decl-nodes",213 "Generate Clang AST declaration nodes"),214 clEnumValN(GenClangStmtNodes, "gen-clang-stmt-nodes",215 "Generate Clang AST statement nodes"),216 clEnumValN(GenClangTypeNodes, "gen-clang-type-nodes",217 "Generate Clang AST type nodes"),218 clEnumValN(GenClangTypeReader, "gen-clang-type-reader",219 "Generate Clang AbstractTypeReader class"),220 clEnumValN(GenClangTypeWriter, "gen-clang-type-writer",221 "Generate Clang AbstractTypeWriter class"),222 clEnumValN(GenClangOpcodes, "gen-clang-opcodes",223 "Generate Clang constexpr interpreter opcodes"),224 clEnumValN(GenClangSACheckers, "gen-clang-sa-checkers",225 "Generate Clang Static Analyzer checkers"),226 clEnumValN(GenClangSyntaxNodeList, "gen-clang-syntax-node-list",227 "Generate list of Clang Syntax Tree node types"),228 clEnumValN(GenClangSyntaxNodeClasses, "gen-clang-syntax-node-classes",229 "Generate definitions of Clang Syntax Tree node clasess"),230 clEnumValN(GenClangCommentHTMLTags, "gen-clang-comment-html-tags",231 "Generate efficient matchers for HTML tag "232 "names that are used in documentation comments"),233 clEnumValN(GenClangCommentHTMLTagsProperties,234 "gen-clang-comment-html-tags-properties",235 "Generate efficient matchers for HTML tag "236 "properties"),237 clEnumValN(GenClangCommentHTMLNamedCharacterReferences,238 "gen-clang-comment-html-named-character-references",239 "Generate function to translate named character "240 "references to UTF-8 sequences"),241 clEnumValN(GenClangCommentCommandInfo, "gen-clang-comment-command-info",242 "Generate command properties for commands that "243 "are used in documentation comments"),244 clEnumValN(GenClangCommentCommandList, "gen-clang-comment-command-list",245 "Generate list of commands that are used in "246 "documentation comments"),247 clEnumValN(GenClangOpenCLBuiltins, "gen-clang-opencl-builtins",248 "Generate OpenCL builtin declaration handlers"),249 clEnumValN(GenClangOpenCLBuiltinHeader,250 "gen-clang-opencl-builtin-header",251 "Generate OpenCL builtin header"),252 clEnumValN(GenClangOpenCLBuiltinTests, "gen-clang-opencl-builtin-tests",253 "Generate OpenCL builtin declaration tests"),254 clEnumValN(GenCXX11AttributeInfo, "gen-cxx11-attribute-info",255 "Generate CXX11 attributes info"),256 clEnumValN(GenAttributeSpellingList, "gen-attribute-spelling-list",257 "Generate attribute spelling list"),258 clEnumValN(GenArmNeon, "gen-arm-neon", "Generate arm_neon.h for clang"),259 clEnumValN(GenArmFP16, "gen-arm-fp16", "Generate arm_fp16.h for clang"),260 clEnumValN(GenArmBF16, "gen-arm-bf16", "Generate arm_bf16.h for clang"),261 clEnumValN(GenArmVectorType, "gen-arm-vector-type",262 "Generate arm_vector_types.h for clang"),263 clEnumValN(GenArmNeonSema, "gen-arm-neon-sema",264 "Generate ARM NEON sema support for clang"),265 clEnumValN(GenArmNeonTest, "gen-arm-neon-test",266 "Generate ARM NEON tests for clang"),267 clEnumValN(268 GenArmImmCheckTypes, "gen-arm-immcheck-types",269 "Generate arm_immcheck_types.inc (immediate range check types)"270 " for clang"),271 clEnumValN(GenArmSveHeader, "gen-arm-sve-header",272 "Generate arm_sve.h for clang"),273 clEnumValN(GenArmSveBuiltins, "gen-arm-sve-builtins",274 "Generate arm_sve_builtins.inc for clang"),275 clEnumValN(GenArmSveBuiltinsJSON, "gen-arm-sve-builtins-json",276 "Generate arm_sve_buitins.json"),277 clEnumValN(GenArmSveBuiltinCG, "gen-arm-sve-builtin-codegen",278 "Generate arm_sve_builtin_cg_map.inc for clang"),279 clEnumValN(GenArmSveTypeFlags, "gen-arm-sve-typeflags",280 "Generate arm_sve_typeflags.inc for clang"),281 clEnumValN(GenArmSveRangeChecks, "gen-arm-sve-sema-rangechecks",282 "Generate arm_sve_sema_rangechecks.inc for clang"),283 clEnumValN(GenArmSveStreamingAttrs, "gen-arm-sve-streaming-attrs",284 "Generate arm_sve_streaming_attrs.inc for clang"),285 clEnumValN(GenArmSmeHeader, "gen-arm-sme-header",286 "Generate arm_sme.h for clang"),287 clEnumValN(GenArmSmeBuiltins, "gen-arm-sme-builtins",288 "Generate arm_sme_builtins.inc for clang"),289 clEnumValN(GenArmSmeBuiltinsJSON, "gen-arm-sme-builtins-json",290 "Generate arm_sme_buitins.json"),291 clEnumValN(GenArmSmeBuiltinCG, "gen-arm-sme-builtin-codegen",292 "Generate arm_sme_builtin_cg_map.inc for clang"),293 clEnumValN(GenArmSmeRangeChecks, "gen-arm-sme-sema-rangechecks",294 "Generate arm_sme_sema_rangechecks.inc for clang"),295 clEnumValN(GenArmSmeStreamingAttrs, "gen-arm-sme-streaming-attrs",296 "Generate arm_sme_streaming_attrs.inc for clang"),297 clEnumValN(GenArmSmeBuiltinZAState, "gen-arm-sme-builtin-za-state",298 "Generate arm_sme_builtins_za_state.inc for clang"),299 clEnumValN(GenArmMveHeader, "gen-arm-mve-header",300 "Generate arm_mve.h for clang"),301 clEnumValN(GenArmMveBuiltinDef, "gen-arm-mve-builtin-def",302 "Generate ARM MVE builtin definitions for clang"),303 clEnumValN(GenArmMveBuiltinSema, "gen-arm-mve-builtin-sema",304 "Generate ARM MVE builtin sema checks for clang"),305 clEnumValN(GenArmMveBuiltinCG, "gen-arm-mve-builtin-codegen",306 "Generate ARM MVE builtin code-generator for clang"),307 clEnumValN(GenArmMveBuiltinAliases, "gen-arm-mve-builtin-aliases",308 "Generate list of valid ARM MVE builtin aliases for clang"),309 clEnumValN(GenArmCdeHeader, "gen-arm-cde-header",310 "Generate arm_cde.h for clang"),311 clEnumValN(GenArmCdeBuiltinDef, "gen-arm-cde-builtin-def",312 "Generate ARM CDE builtin definitions for clang"),313 clEnumValN(GenArmCdeBuiltinSema, "gen-arm-cde-builtin-sema",314 "Generate ARM CDE builtin sema checks for clang"),315 clEnumValN(GenArmCdeBuiltinCG, "gen-arm-cde-builtin-codegen",316 "Generate ARM CDE builtin code-generator for clang"),317 clEnumValN(GenArmCdeBuiltinAliases, "gen-arm-cde-builtin-aliases",318 "Generate list of valid ARM CDE builtin aliases for clang"),319 clEnumValN(GenRISCVVectorHeader, "gen-riscv-vector-header",320 "Generate riscv_vector.h for clang"),321 clEnumValN(GenRISCVVectorBuiltins, "gen-riscv-vector-builtins",322 "Generate riscv_vector_builtins.inc for clang"),323 clEnumValN(GenRISCVVectorBuiltinCG, "gen-riscv-vector-builtin-codegen",324 "Generate riscv_vector_builtin_cg.inc for clang"),325 clEnumValN(GenRISCVVectorBuiltinSema, "gen-riscv-vector-builtin-sema",326 "Generate riscv_vector_builtin_sema.inc for clang"),327 clEnumValN(GenRISCVSiFiveVectorBuiltins,328 "gen-riscv-sifive-vector-builtins",329 "Generate riscv_sifive_vector_builtins.inc for clang"),330 clEnumValN(GenRISCVSiFiveVectorBuiltinCG,331 "gen-riscv-sifive-vector-builtin-codegen",332 "Generate riscv_sifive_vector_builtin_cg.inc for clang"),333 clEnumValN(GenRISCVSiFiveVectorBuiltinSema,334 "gen-riscv-sifive-vector-builtin-sema",335 "Generate riscv_sifive_vector_builtin_sema.inc for clang"),336 clEnumValN(GenRISCVAndesVectorBuiltins,337 "gen-riscv-andes-vector-builtins",338 "Generate riscv_andes_vector_builtins.inc for clang"),339 clEnumValN(GenRISCVAndesVectorBuiltinCG,340 "gen-riscv-andes-vector-builtin-codegen",341 "Generate riscv_andes_vector_builtin_cg.inc for clang"),342 clEnumValN(GenRISCVAndesVectorBuiltinSema,343 "gen-riscv-andes-vector-builtin-sema",344 "Generate riscv_andes_vector_builtin_sema.inc for clang"),345 clEnumValN(GenAttrDocs, "gen-attr-docs",346 "Generate attribute documentation"),347 clEnumValN(GenDiagDocs, "gen-diag-docs",348 "Generate diagnostic documentation"),349 clEnumValN(GenOptDocs, "gen-opt-docs", "Generate option documentation"),350 clEnumValN(GenDataCollectors, "gen-clang-data-collectors",351 "Generate data collectors for AST nodes"),352 clEnumValN(GenTestPragmaAttributeSupportedAttributes,353 "gen-clang-test-pragma-attribute-supported-attributes",354 "Generate a list of attributes supported by #pragma clang "355 "attribute for testing purposes")));356 357cl::opt<std::string>358ClangComponent("clang-component",359 cl::desc("Only use warnings from specified component"),360 cl::value_desc("component"), cl::Hidden);361 362bool ClangTableGenMain(raw_ostream &OS, const RecordKeeper &Records) {363 switch (Action) {364 case PrintRecords:365 OS << Records; // No argument, dump all contents366 break;367 case DumpJSON:368 EmitJSON(Records, OS);369 break;370 case GenCIRLowering:371 EmitCIRLowering(Records, OS);372 break;373 case GenClangAttrClasses:374 EmitClangAttrClass(Records, OS);375 break;376 case GenClangAttrParserStringSwitches:377 EmitClangAttrParserStringSwitches(Records, OS);378 break;379 case GenClangAttrSubjectMatchRulesParserStringSwitches:380 EmitClangAttrSubjectMatchRulesParserStringSwitches(Records, OS);381 break;382 case GenCXX11AttributeInfo:383 EmitCXX11AttributeInfo(Records, OS);384 break;385 case GenAttributeSpellingList:386 EmitAttributeSpellingList(Records, OS);387 break;388 case GenClangAttrImpl:389 EmitClangAttrImpl(Records, OS);390 break;391 case GenClangAttrList:392 EmitClangAttrList(Records, OS);393 break;394 case GenClangAttrDocTable:395 EmitClangAttrDocTable(Records, OS);396 break;397 case GenClangAttrSubjectMatchRuleList:398 EmitClangAttrSubjectMatchRuleList(Records, OS);399 break;400 case GenClangAttrPCHRead:401 EmitClangAttrPCHRead(Records, OS);402 break;403 case GenClangAttrPCHWrite:404 EmitClangAttrPCHWrite(Records, OS);405 break;406 case GenClangRegularKeywordAttributeInfo:407 EmitClangRegularKeywordAttributeInfo(Records, OS);408 break;409 case GenClangAttrHasAttributeImpl:410 EmitClangAttrHasAttrImpl(Records, OS);411 break;412 case GenClangAttrSpellingListIndex:413 EmitClangAttrSpellingListIndex(Records, OS);414 break;415 case GenClangAttrASTVisitor:416 EmitClangAttrASTVisitor(Records, OS);417 break;418 case GenClangAttrTemplateInstantiate:419 EmitClangAttrTemplateInstantiate(Records, OS);420 break;421 case GenClangAttrParsedAttrList:422 EmitClangAttrParsedAttrList(Records, OS);423 break;424 case GenClangAttrParsedAttrImpl:425 EmitClangAttrParsedAttrImpl(Records, OS);426 break;427 case GenClangAttrParsedAttrKinds:428 EmitClangAttrParsedAttrKinds(Records, OS);429 break;430 case GenClangAttrIsTypeDependent:431 EmitClangAttrIsTypeDependent(Records, OS);432 break;433 case GenClangAttrTextNodeDump:434 EmitClangAttrTextNodeDump(Records, OS);435 break;436 case GenClangAttrNodeTraverse:437 EmitClangAttrNodeTraverse(Records, OS);438 break;439 case GenClangBuiltins:440 EmitClangBuiltins(Records, OS);441 break;442 case GenClangBuiltinTemplates:443 EmitClangBuiltinTemplates(Records, OS);444 break;445 case GenClangDiagsCompatIDs:446 EmitClangDiagsCompatIDs(Records, OS, ClangComponent);447 break;448 case GenClangDiagsDefs:449 EmitClangDiagsDefs(Records, OS, ClangComponent);450 break;451 case GenClangDiagsEnums:452 EmitClangDiagsEnums(Records, OS, ClangComponent);453 break;454 case GenClangDiagGroups:455 EmitClangDiagGroups(Records, OS);456 break;457 case GenClangDiagsIndexName:458 EmitClangDiagsIndexName(Records, OS);459 break;460 case GenClangDiagsInterface:461 EmitClangDiagsInterface(OS, ClangComponent);462 break;463 case GenClangCommentNodes:464 EmitClangASTNodes(Records, OS, CommentNodeClassName, "");465 break;466 case GenClangDeclNodes:467 EmitClangASTNodes(Records, OS, DeclNodeClassName, "Decl",468 DeclContextNodeClassName);469 EmitClangDeclContext(Records, OS);470 break;471 case GenClangStmtNodes:472 EmitClangASTNodes(Records, OS, StmtNodeClassName, "");473 break;474 case GenClangTypeNodes:475 EmitClangTypeNodes(Records, OS);476 break;477 case GenClangTypeReader:478 EmitClangTypeReader(Records, OS);479 break;480 case GenClangTypeWriter:481 EmitClangTypeWriter(Records, OS);482 break;483 case GenClangBasicReader:484 EmitClangBasicReader(Records, OS);485 break;486 case GenClangBasicWriter:487 EmitClangBasicWriter(Records, OS);488 break;489 case GenClangOpcodes:490 EmitClangOpcodes(Records, OS);491 break;492 case GenClangSACheckers:493 EmitClangSACheckers(Records, OS);494 break;495 case GenClangCommentHTMLTags:496 EmitClangCommentHTMLTags(Records, OS);497 break;498 case GenClangCommentHTMLTagsProperties:499 EmitClangCommentHTMLTagsProperties(Records, OS);500 break;501 case GenClangCommentHTMLNamedCharacterReferences:502 EmitClangCommentHTMLNamedCharacterReferences(Records, OS);503 break;504 case GenClangCommentCommandInfo:505 EmitClangCommentCommandInfo(Records, OS);506 break;507 case GenClangCommentCommandList:508 EmitClangCommentCommandList(Records, OS);509 break;510 case GenClangOpenCLBuiltins:511 EmitClangOpenCLBuiltins(Records, OS);512 break;513 case GenClangOpenCLBuiltinHeader:514 EmitClangOpenCLBuiltinHeader(Records, OS);515 break;516 case GenClangOpenCLBuiltinTests:517 EmitClangOpenCLBuiltinTests(Records, OS);518 break;519 case GenClangSyntaxNodeList:520 EmitClangSyntaxNodeList(Records, OS);521 break;522 case GenClangSyntaxNodeClasses:523 EmitClangSyntaxNodeClasses(Records, OS);524 break;525 case GenArmNeon:526 EmitNeon(Records, OS);527 break;528 case GenArmFP16:529 EmitFP16(Records, OS);530 break;531 case GenArmVectorType:532 EmitVectorTypes(Records, OS);533 break;534 case GenArmBF16:535 EmitBF16(Records, OS);536 break;537 case GenArmNeonSema:538 EmitNeonSema(Records, OS);539 break;540 case GenArmNeonTest:541 EmitNeonTest(Records, OS);542 break;543 case GenArmImmCheckTypes:544 EmitImmCheckTypes(Records, OS);545 break;546 case GenArmMveHeader:547 EmitMveHeader(Records, OS);548 break;549 case GenArmMveBuiltinDef:550 EmitMveBuiltinDef(Records, OS);551 break;552 case GenArmMveBuiltinSema:553 EmitMveBuiltinSema(Records, OS);554 break;555 case GenArmMveBuiltinCG:556 EmitMveBuiltinCG(Records, OS);557 break;558 case GenArmMveBuiltinAliases:559 EmitMveBuiltinAliases(Records, OS);560 break;561 case GenArmSveHeader:562 EmitSveHeader(Records, OS);563 break;564 case GenArmSveBuiltins:565 EmitSveBuiltins(Records, OS);566 break;567 case GenArmSveBuiltinsJSON:568 EmitSveBuiltinsJSON(Records, OS);569 break;570 case GenArmSveBuiltinCG:571 EmitSveBuiltinCG(Records, OS);572 break;573 case GenArmSveTypeFlags:574 EmitSveTypeFlags(Records, OS);575 break;576 case GenArmSveRangeChecks:577 EmitSveRangeChecks(Records, OS);578 break;579 case GenArmSveStreamingAttrs:580 EmitSveStreamingAttrs(Records, OS);581 break;582 case GenArmSmeHeader:583 EmitSmeHeader(Records, OS);584 break;585 case GenArmSmeBuiltins:586 EmitSmeBuiltins(Records, OS);587 break;588 case GenArmSmeBuiltinsJSON:589 EmitSmeBuiltinsJSON(Records, OS);590 break;591 case GenArmSmeBuiltinCG:592 EmitSmeBuiltinCG(Records, OS);593 break;594 case GenArmSmeRangeChecks:595 EmitSmeRangeChecks(Records, OS);596 break;597 case GenArmSmeStreamingAttrs:598 EmitSmeStreamingAttrs(Records, OS);599 break;600 case GenArmSmeBuiltinZAState:601 EmitSmeBuiltinZAState(Records, OS);602 break;603 case GenArmCdeHeader:604 EmitCdeHeader(Records, OS);605 break;606 case GenArmCdeBuiltinDef:607 EmitCdeBuiltinDef(Records, OS);608 break;609 case GenArmCdeBuiltinSema:610 EmitCdeBuiltinSema(Records, OS);611 break;612 case GenArmCdeBuiltinCG:613 EmitCdeBuiltinCG(Records, OS);614 break;615 case GenArmCdeBuiltinAliases:616 EmitCdeBuiltinAliases(Records, OS);617 break;618 case GenRISCVVectorHeader:619 EmitRVVHeader(Records, OS);620 break;621 case GenRISCVVectorBuiltins:622 EmitRVVBuiltins(Records, OS);623 break;624 case GenRISCVVectorBuiltinCG:625 EmitRVVBuiltinCG(Records, OS);626 break;627 case GenRISCVVectorBuiltinSema:628 EmitRVVBuiltinSema(Records, OS);629 break;630 case GenRISCVSiFiveVectorBuiltins:631 EmitRVVBuiltins(Records, OS);632 break;633 case GenRISCVSiFiveVectorBuiltinCG:634 EmitRVVBuiltinCG(Records, OS);635 break;636 case GenRISCVSiFiveVectorBuiltinSema:637 EmitRVVBuiltinSema(Records, OS);638 break;639 case GenRISCVAndesVectorBuiltins:640 EmitRVVBuiltins(Records, OS);641 break;642 case GenRISCVAndesVectorBuiltinCG:643 EmitRVVBuiltinCG(Records, OS);644 break;645 case GenRISCVAndesVectorBuiltinSema:646 EmitRVVBuiltinSema(Records, OS);647 break;648 case GenAttrDocs:649 EmitClangAttrDocs(Records, OS);650 break;651 case GenDiagDocs:652 EmitClangDiagDocs(Records, OS);653 break;654 case GenOptDocs:655 EmitClangOptDocs(Records, OS);656 break;657 case GenDataCollectors:658 EmitClangDataCollectors(Records, OS);659 break;660 case GenTestPragmaAttributeSupportedAttributes:661 EmitTestPragmaAttributeSupportedAttributes(Records, OS);662 break;663 }664 665 return false;666}667}668 669int main(int argc, char **argv) {670 sys::PrintStackTraceOnErrorSignal(argv[0]);671 PrettyStackTraceProgram X(argc, argv);672 cl::ParseCommandLineOptions(argc, argv);673 674 llvm_shutdown_obj Y;675 676 return TableGenMain(argv[0], &ClangTableGenMain);677}678 679#ifdef __has_feature680#if __has_feature(address_sanitizer)681#include <sanitizer/lsan_interface.h>682// Disable LeakSanitizer for this binary as it has too many leaks that are not683// very interesting to fix. See compiler-rt/include/sanitizer/lsan_interface.h .684int __lsan_is_turned_off() { return 1; }685#endif // __has_feature(address_sanitizer)686#endif // defined(__has_feature)687