1//===- TableGenBackends.h - Declarations for Clang TableGen Backends ------===//
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//
9// This file contains the declarations for all of the Clang TableGen
10// backends. A "TableGen backend" is just a function. See
11// "$LLVM_ROOT/utils/TableGen/TableGenBackends.h" for more info.
12//
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_CLANG_UTILS_TABLEGEN_TABLEGENBACKENDS_H
16#define LLVM_CLANG_UTILS_TABLEGEN_TABLEGENBACKENDS_H
17
18#include <string>
19
20namespace llvm {
21class raw_ostream;
22class RecordKeeper;
23} // namespace llvm
24
25namespace clang {
26
27void EmitClangDeclContext(const llvm::RecordKeeper &RK, llvm::raw_ostream &OS);
28/**
29 @param PriorizeIfSubclassOf These classes should be prioritized in the output.
30 This is useful to force enum generation/jump tables/lookup tables to be more
31 compact in both size and surrounding code in hot functions. An example use is
32 in Decl for classes that inherit from DeclContext, for functions like
33 castFromDeclContext.
34 */
35void EmitClangASTNodes(const llvm::RecordKeeper &RK, llvm::raw_ostream &OS,
36 const std::string &N, const std::string &S,
37 std::string_view PriorizeIfSubclassOf = "");
38void EmitClangBasicReader(const llvm::RecordKeeper &Records,
39 llvm::raw_ostream &OS);
40void EmitClangBasicWriter(const llvm::RecordKeeper &Records,
41 llvm::raw_ostream &OS);
42void EmitClangTypeNodes(const llvm::RecordKeeper &Records,
43 llvm::raw_ostream &OS);
44void EmitClangTypeReader(const llvm::RecordKeeper &Records,
45 llvm::raw_ostream &OS);
46void EmitClangTypeWriter(const llvm::RecordKeeper &Records,
47 llvm::raw_ostream &OS);
48void EmitClangAttrParserStringSwitches(const llvm::RecordKeeper &Records,
49 llvm::raw_ostream &OS);
50void EmitClangAttrSubjectMatchRulesParserStringSwitches(
51 const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
52void EmitCXX11AttributeInfo(const llvm::RecordKeeper &Records,
53 llvm::raw_ostream &OS);
54void EmitAttributeSpellingList(const llvm::RecordKeeper &Records,
55 llvm::raw_ostream &OS);
56void EmitClangAttrClass(const llvm::RecordKeeper &Records,
57 llvm::raw_ostream &OS);
58void EmitClangAttrImpl(const llvm::RecordKeeper &Records,
59 llvm::raw_ostream &OS);
60void EmitClangAttrList(const llvm::RecordKeeper &Records,
61 llvm::raw_ostream &OS);
62void EmitClangAttrSubjectMatchRuleList(const llvm::RecordKeeper &Records,
63 llvm::raw_ostream &OS);
64void EmitClangAttrPCHRead(const llvm::RecordKeeper &Records,
65 llvm::raw_ostream &OS);
66void EmitClangAttrPCHWrite(const llvm::RecordKeeper &Records,
67 llvm::raw_ostream &OS);
68void EmitClangRegularKeywordAttributeInfo(const llvm::RecordKeeper &Records,
69 llvm::raw_ostream &OS);
70void EmitClangAttrHasAttrImpl(const llvm::RecordKeeper &Records,
71 llvm::raw_ostream &OS);
72void EmitClangAttrSpellingListIndex(const llvm::RecordKeeper &Records,
73 llvm::raw_ostream &OS);
74void EmitClangAttrASTVisitor(const llvm::RecordKeeper &Records,
75 llvm::raw_ostream &OS);
76void EmitClangAttrTemplateInstantiate(const llvm::RecordKeeper &Records,
77 llvm::raw_ostream &OS);
78void EmitClangAttrParsedAttrList(const llvm::RecordKeeper &Records,
79 llvm::raw_ostream &OS);
80void EmitClangAttrParsedAttrImpl(const llvm::RecordKeeper &Records,
81 llvm::raw_ostream &OS);
82void EmitClangAttrParsedAttrKinds(const llvm::RecordKeeper &Records,
83 llvm::raw_ostream &OS);
84void EmitClangAttrTextNodeDump(const llvm::RecordKeeper &Records,
85 llvm::raw_ostream &OS);
86void EmitClangAttrNodeTraverse(const llvm::RecordKeeper &Records,
87 llvm::raw_ostream &OS);
88void EmitClangAttrDocTable(const llvm::RecordKeeper &Records,
89 llvm::raw_ostream &OS);
90
91void EmitClangBuiltins(const llvm::RecordKeeper &Records,
92 llvm::raw_ostream &OS);
93void EmitClangBuiltinTemplates(const llvm::RecordKeeper &Records,
94 llvm::raw_ostream &OS);
95
96void EmitClangDiagsCompatIDs(const llvm::RecordKeeper &Records,
97 llvm::raw_ostream &OS,
98 const std::string &Component);
99void EmitClangDiagsDefs(const llvm::RecordKeeper &Records,
100 llvm::raw_ostream &OS, const std::string &Component);
101void EmitClangDiagsEnums(const llvm::RecordKeeper &Records,
102 llvm::raw_ostream &OS, const std::string &Component);
103void EmitClangDiagGroups(const llvm::RecordKeeper &Records,
104 llvm::raw_ostream &OS);
105void EmitClangDiagsIndexName(const llvm::RecordKeeper &Records,
106 llvm::raw_ostream &OS);
107void EmitClangDiagsInterface(llvm::raw_ostream &OS,
108 const std::string &Component);
109
110void EmitClangSACheckers(const llvm::RecordKeeper &Records,
111 llvm::raw_ostream &OS);
112
113void EmitClangCommentHTMLTags(const llvm::RecordKeeper &Records,
114 llvm::raw_ostream &OS);
115void EmitClangCommentHTMLTagsProperties(const llvm::RecordKeeper &Records,
116 llvm::raw_ostream &OS);
117void EmitClangCommentHTMLNamedCharacterReferences(
118 const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
119
120void EmitClangCommentCommandInfo(const llvm::RecordKeeper &Records,
121 llvm::raw_ostream &OS);
122void EmitClangCommentCommandList(const llvm::RecordKeeper &Records,
123 llvm::raw_ostream &OS);
124void EmitClangOpcodes(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
125
126void EmitClangSyntaxNodeList(const llvm::RecordKeeper &Records,
127 llvm::raw_ostream &OS);
128void EmitClangSyntaxNodeClasses(const llvm::RecordKeeper &Records,
129 llvm::raw_ostream &OS);
130
131void EmitNeon(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
132void EmitFP16(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
133void EmitBF16(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
134void EmitNeonSema(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
135void EmitVectorTypes(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
136void EmitNeonTest(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
137
138void EmitImmCheckTypes(const llvm::RecordKeeper &Records,
139 llvm::raw_ostream &OS);
140void EmitSveHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
141void EmitSveBuiltins(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
142void EmitSveBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
143void EmitSveTypeFlags(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
144void EmitSveRangeChecks(const llvm::RecordKeeper &Records,
145 llvm::raw_ostream &OS);
146void EmitSveStreamingAttrs(const llvm::RecordKeeper &Records,
147 llvm::raw_ostream &OS);
148
149void EmitSmeHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
150void EmitSmeBuiltins(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
151void EmitSmeBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
152void EmitSmeRangeChecks(const llvm::RecordKeeper &Records,
153 llvm::raw_ostream &OS);
154void EmitSmeStreamingAttrs(const llvm::RecordKeeper &Records,
155 llvm::raw_ostream &OS);
156void EmitSmeBuiltinZAState(const llvm::RecordKeeper &Records,
157 llvm::raw_ostream &OS);
158
159void EmitMveHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
160void EmitMveBuiltinDef(const llvm::RecordKeeper &Records,
161 llvm::raw_ostream &OS);
162void EmitMveBuiltinSema(const llvm::RecordKeeper &Records,
163 llvm::raw_ostream &OS);
164void EmitMveBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
165void EmitMveBuiltinAliases(const llvm::RecordKeeper &Records,
166 llvm::raw_ostream &OS);
167
168void EmitRVVHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
169void EmitRVVBuiltins(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
170void EmitRVVBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
171void EmitRVVBuiltinSema(const llvm::RecordKeeper &Records,
172 llvm::raw_ostream &OS);
173
174void EmitCdeHeader(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
175void EmitCdeBuiltinDef(const llvm::RecordKeeper &Records,
176 llvm::raw_ostream &OS);
177void EmitCdeBuiltinSema(const llvm::RecordKeeper &Records,
178 llvm::raw_ostream &OS);
179void EmitCdeBuiltinCG(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
180void EmitCdeBuiltinAliases(const llvm::RecordKeeper &Records,
181 llvm::raw_ostream &OS);
182
183void EmitClangAttrDocs(const llvm::RecordKeeper &Records,
184 llvm::raw_ostream &OS);
185void EmitClangDiagDocs(const llvm::RecordKeeper &Records,
186 llvm::raw_ostream &OS);
187void EmitClangOptDocs(const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
188
189void EmitClangOpenCLBuiltins(const llvm::RecordKeeper &Records,
190 llvm::raw_ostream &OS);
191void EmitClangOpenCLBuiltinHeader(const llvm::RecordKeeper &Records,
192 llvm::raw_ostream &OS);
193void EmitClangOpenCLBuiltinTests(const llvm::RecordKeeper &Records,
194 llvm::raw_ostream &OS);
195
196void EmitClangDataCollectors(const llvm::RecordKeeper &Records,
197 llvm::raw_ostream &OS);
198
199void EmitTestPragmaAttributeSupportedAttributes(
200 const llvm::RecordKeeper &Records, llvm::raw_ostream &OS);
201
202} // end namespace clang
203
204#endif
205

Provided by KDAB

Privacy Policy
Update your C++ knowledge – Modern C++11/14/17 Training
Find out more

source code of clang/utils/TableGen/TableGenBackends.h