LLVM 24.0.0git
WasmYAML.h
Go to the documentation of this file.
1//===- WasmYAML.h - Wasm YAMLIO implementation ------------------*- C++ -*-===//
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/// \file
10/// This file declares classes for handling the YAML representation
11/// of wasm binaries.
12///
13//===----------------------------------------------------------------------===//
14
15#ifndef LLVM_OBJECTYAML_WASMYAML_H
16#define LLVM_OBJECTYAML_WASMYAML_H
17
18#include "llvm/ADT/StringRef.h"
22#include <cstdint>
23#include <memory>
24#include <vector>
25
26namespace llvm {
27namespace WasmYAML {
28
41LLVM_YAML_STRONG_TYPEDEF(uint32_t, FeaturePolicyPrefix)
42
43struct FileHeader {
44 yaml::Hex32 Version;
45};
46
47struct Limits {
48 LimitFlags Flags;
49 yaml::Hex32 Minimum;
50 yaml::Hex32 Maximum;
51 yaml::Hex32 PageSize;
52};
53
59
60struct Export {
62 ExportKind Kind;
64};
65
74
82
89
103
108
109struct Function {
111 std::vector<LocalDecl> Locals;
113};
114
116 RelocType Type;
118 // TODO(wvo): this would strictly be better as Hex64, but that will change
119 // all existing obj2yaml output.
120 yaml::Hex32 Offset;
121 int64_t Addend;
122};
123
131
136
138 std::string Name;
139 std::string Version;
140};
141
143 FeaturePolicyPrefix Prefix;
144 std::string Name;
145};
146
153
154struct Signature {
156 SignatureForm Form = wasm::WASM_TYPE_FUNC;
157 std::vector<ValueType> ParamTypes;
158 std::vector<ValueType> ReturnTypes;
159};
160
172
177
179 ComdatKind Kind;
181};
182
183struct Comdat {
185 std::vector<ComdatEntry> Entries;
186};
187
189 explicit Section(SectionType SecType) : Type(SecType) {}
190 virtual ~Section();
191
192 SectionType Type;
193 std::vector<Relocation> Relocations;
194 std::optional<uint8_t> HeaderSecSizeEncodingLen;
195};
196
199 : Section(wasm::WASM_SEC_CUSTOM), Name(Name) {}
200
201 static bool classof(const Section *S) {
202 return S->Type == wasm::WASM_SEC_CUSTOM;
203 }
204
207};
208
214
217 SymbolFlags Flags;
218};
219
221 DylinkSection() : CustomSection("dylink.0") {}
222
223 static bool classof(const Section *S) {
224 auto C = dyn_cast<CustomSection>(S);
225 return C && C->Name == "dylink.0";
226 }
227
232 std::vector<StringRef> Needed;
233 std::vector<DylinkImportInfo> ImportInfo;
234 std::vector<DylinkExportInfo> ExportInfo;
235 std::vector<StringRef> RuntimePath;
237};
238
241
242 static bool classof(const Section *S) {
243 auto C = dyn_cast<CustomSection>(S);
244 return C && C->Name == "name";
245 }
246
247 std::vector<NameEntry> FunctionNames;
248 std::vector<NameEntry> GlobalNames;
249 std::vector<NameEntry> DataSegmentNames;
250};
251
254
255 static bool classof(const Section *S) {
256 auto C = dyn_cast<CustomSection>(S);
257 return C && C->Name == "linking";
258 }
259
261 std::vector<SymbolInfo> SymbolTable;
262 std::vector<SegmentInfo> SegmentInfos;
263 std::vector<InitFunction> InitFunctions;
264 std::vector<Comdat> Comdats;
266};
267
269 ProducersSection() : CustomSection("producers") {}
270
271 static bool classof(const Section *S) {
272 auto C = dyn_cast<CustomSection>(S);
273 return C && C->Name == "producers";
274 }
275
276 std::vector<ProducerEntry> Languages;
277 std::vector<ProducerEntry> Tools;
278 std::vector<ProducerEntry> SDKs;
279};
280
282 TargetFeaturesSection() : CustomSection("target_features") {}
283
284 static bool classof(const Section *S) {
285 auto C = dyn_cast<CustomSection>(S);
286 return C && C->Name == "target_features";
287 }
288
289 std::vector<FeatureEntry> Features;
290};
291
293 TypeSection() : Section(wasm::WASM_SEC_TYPE) {}
294
295 static bool classof(const Section *S) {
296 return S->Type == wasm::WASM_SEC_TYPE;
297 }
298
299 std::vector<Signature> Signatures;
300};
301
303 ImportSection() : Section(wasm::WASM_SEC_IMPORT) {}
304
305 static bool classof(const Section *S) {
306 return S->Type == wasm::WASM_SEC_IMPORT;
307 }
308
309 std::vector<Import> Imports;
310};
311
313 FunctionSection() : Section(wasm::WASM_SEC_FUNCTION) {}
314
315 static bool classof(const Section *S) {
316 return S->Type == wasm::WASM_SEC_FUNCTION;
317 }
318
319 std::vector<uint32_t> FunctionTypes;
320};
321
323 TableSection() : Section(wasm::WASM_SEC_TABLE) {}
324
325 static bool classof(const Section *S) {
326 return S->Type == wasm::WASM_SEC_TABLE;
327 }
328
329 std::vector<Table> Tables;
330};
331
333 MemorySection() : Section(wasm::WASM_SEC_MEMORY) {}
334
335 static bool classof(const Section *S) {
336 return S->Type == wasm::WASM_SEC_MEMORY;
337 }
338
339 std::vector<Limits> Memories;
340};
341
343 TagSection() : Section(wasm::WASM_SEC_TAG) {}
344
345 static bool classof(const Section *S) {
346 return S->Type == wasm::WASM_SEC_TAG;
347 }
348
349 std::vector<uint32_t> TagTypes;
350};
351
353 GlobalSection() : Section(wasm::WASM_SEC_GLOBAL) {}
354
355 static bool classof(const Section *S) {
356 return S->Type == wasm::WASM_SEC_GLOBAL;
357 }
358
359 std::vector<Global> Globals;
360};
361
363 ExportSection() : Section(wasm::WASM_SEC_EXPORT) {}
364
365 static bool classof(const Section *S) {
366 return S->Type == wasm::WASM_SEC_EXPORT;
367 }
368
369 std::vector<Export> Exports;
370};
371
373 StartSection() : Section(wasm::WASM_SEC_START) {}
374
375 static bool classof(const Section *S) {
376 return S->Type == wasm::WASM_SEC_START;
377 }
378
380};
381
383 ElemSection() : Section(wasm::WASM_SEC_ELEM) {}
384
385 static bool classof(const Section *S) {
386 return S->Type == wasm::WASM_SEC_ELEM;
387 }
388
389 std::vector<ElemSegment> Segments;
390};
391
393 CodeSection() : Section(wasm::WASM_SEC_CODE) {}
394
395 static bool classof(const Section *S) {
396 return S->Type == wasm::WASM_SEC_CODE;
397 }
398
399 std::vector<Function> Functions;
400};
401
403 DataSection() : Section(wasm::WASM_SEC_DATA) {}
404
405 static bool classof(const Section *S) {
406 return S->Type == wasm::WASM_SEC_DATA;
407 }
408
409 std::vector<DataSegment> Segments;
410};
411
413 DataCountSection() : Section(wasm::WASM_SEC_DATACOUNT) {}
414
415 static bool classof(const Section *S) {
416 return S->Type == wasm::WASM_SEC_DATACOUNT;
417 }
418
420};
421
422struct Object {
424 std::vector<std::unique_ptr<Section>> Sections;
425};
426
427} // end namespace WasmYAML
428} // end namespace llvm
429
430LLVM_YAML_IS_SEQUENCE_VECTOR(std::unique_ptr<llvm::WasmYAML::Section>)
432LLVM_YAML_IS_SEQUENCE_VECTOR(llvm::WasmYAML::ValueType)
453
454namespace llvm {
455namespace yaml {
456
457template <> struct MappingTraits<WasmYAML::FileHeader> {
458 LLVM_ABI static void mapping(IO &IO, WasmYAML::FileHeader &FileHdr);
459};
460
461template <> struct MappingTraits<std::unique_ptr<WasmYAML::Section>> {
462 LLVM_ABI static void mapping(IO &IO,
463 std::unique_ptr<WasmYAML::Section> &Section);
464};
465
466template <> struct MappingTraits<WasmYAML::Object> {
467 LLVM_ABI static void mapping(IO &IO, WasmYAML::Object &Object);
468};
469
470template <> struct MappingTraits<WasmYAML::Import> {
472};
473
474template <> struct MappingTraits<WasmYAML::Export> {
476};
477
478template <> struct MappingTraits<WasmYAML::Global> {
480};
481
482template <> struct ScalarBitSetTraits<WasmYAML::LimitFlags> {
483 LLVM_ABI static void bitset(IO &IO, WasmYAML::LimitFlags &Value);
484};
485
486template <> struct ScalarBitSetTraits<WasmYAML::SymbolFlags> {
487 LLVM_ABI static void bitset(IO &IO, WasmYAML::SymbolFlags &Value);
488};
489
490template <> struct ScalarEnumerationTraits<WasmYAML::SymbolKind> {
491 LLVM_ABI static void enumeration(IO &IO, WasmYAML::SymbolKind &Kind);
492};
493
494template <> struct ScalarBitSetTraits<WasmYAML::SegmentFlags> {
495 LLVM_ABI static void bitset(IO &IO, WasmYAML::SegmentFlags &Value);
496};
497
498template <> struct ScalarEnumerationTraits<WasmYAML::SectionType> {
499 LLVM_ABI static void enumeration(IO &IO, WasmYAML::SectionType &Type);
500};
501
502template <> struct MappingTraits<WasmYAML::Signature> {
503 LLVM_ABI static void mapping(IO &IO, WasmYAML::Signature &Signature);
504};
505
506template <> struct MappingTraits<WasmYAML::Table> {
507 LLVM_ABI static void mapping(IO &IO, WasmYAML::Table &Table);
508};
509
510template <> struct MappingTraits<WasmYAML::Limits> {
511 LLVM_ABI static void mapping(IO &IO, WasmYAML::Limits &Limits);
512};
513
514template <> struct MappingTraits<WasmYAML::Function> {
516};
517
518template <> struct MappingTraits<WasmYAML::Relocation> {
519 LLVM_ABI static void mapping(IO &IO, WasmYAML::Relocation &Relocation);
520};
521
522template <> struct MappingTraits<WasmYAML::NameEntry> {
523 LLVM_ABI static void mapping(IO &IO, WasmYAML::NameEntry &NameEntry);
524};
525
526template <> struct MappingTraits<WasmYAML::ProducerEntry> {
527 LLVM_ABI static void mapping(IO &IO, WasmYAML::ProducerEntry &ProducerEntry);
528};
529
530template <> struct ScalarEnumerationTraits<WasmYAML::FeaturePolicyPrefix> {
531 LLVM_ABI static void enumeration(IO &IO,
532 WasmYAML::FeaturePolicyPrefix &Prefix);
533};
534
535template <> struct MappingTraits<WasmYAML::FeatureEntry> {
536 LLVM_ABI static void mapping(IO &IO, WasmYAML::FeatureEntry &FeatureEntry);
537};
538
539template <> struct MappingTraits<WasmYAML::SegmentInfo> {
540 LLVM_ABI static void mapping(IO &IO, WasmYAML::SegmentInfo &SegmentInfo);
541};
542
543template <> struct MappingTraits<WasmYAML::LocalDecl> {
544 LLVM_ABI static void mapping(IO &IO, WasmYAML::LocalDecl &LocalDecl);
545};
546
547template <> struct MappingTraits<WasmYAML::InitExpr> {
548 LLVM_ABI static void mapping(IO &IO, WasmYAML::InitExpr &Expr);
549};
550
551template <> struct MappingTraits<WasmYAML::DataSegment> {
552 LLVM_ABI static void mapping(IO &IO, WasmYAML::DataSegment &Segment);
553};
554
555template <> struct MappingTraits<WasmYAML::ElemSegment> {
556 LLVM_ABI static void mapping(IO &IO, WasmYAML::ElemSegment &Segment);
557};
558
559template <> struct MappingTraits<WasmYAML::SymbolInfo> {
560 LLVM_ABI static void mapping(IO &IO, WasmYAML::SymbolInfo &Info);
561};
562
563template <> struct MappingTraits<WasmYAML::InitFunction> {
565};
566
567template <> struct ScalarEnumerationTraits<WasmYAML::ComdatKind> {
568 LLVM_ABI static void enumeration(IO &IO, WasmYAML::ComdatKind &Kind);
569};
570
571template <> struct MappingTraits<WasmYAML::ComdatEntry> {
572 LLVM_ABI static void mapping(IO &IO, WasmYAML::ComdatEntry &ComdatEntry);
573};
574
575template <> struct MappingTraits<WasmYAML::Comdat> {
577};
578
580 LLVM_ABI static void enumeration(IO &IO, WasmYAML::ValueType &Type);
581};
582
583template <> struct ScalarEnumerationTraits<WasmYAML::ExportKind> {
584 LLVM_ABI static void enumeration(IO &IO, WasmYAML::ExportKind &Kind);
585};
586
587template <> struct ScalarEnumerationTraits<WasmYAML::TableType> {
588 LLVM_ABI static void enumeration(IO &IO, WasmYAML::TableType &Type);
589};
590
591template <> struct ScalarEnumerationTraits<WasmYAML::Opcode> {
592 LLVM_ABI static void enumeration(IO &IO, WasmYAML::Opcode &Opcode);
593};
594
595template <> struct ScalarEnumerationTraits<WasmYAML::RelocType> {
596 LLVM_ABI static void enumeration(IO &IO, WasmYAML::RelocType &Kind);
597};
598
599template <> struct MappingTraits<WasmYAML::DylinkImportInfo> {
600 LLVM_ABI static void mapping(IO &IO, WasmYAML::DylinkImportInfo &Info);
601};
602
603template <> struct MappingTraits<WasmYAML::DylinkExportInfo> {
604 LLVM_ABI static void mapping(IO &IO, WasmYAML::DylinkExportInfo &Info);
605};
606
607} // end namespace yaml
608} // end namespace llvm
609
610#endif // LLVM_OBJECTYAML_WASMYAML_H
static GCRegistry::Add< ShadowStackGC > C("shadow-stack", "Very portable GC for uncooperative code generators")
#define LLVM_ABI
Definition Compiler.h:215
#define LLVM_YAML_IS_SEQUENCE_VECTOR(type)
Utility for declaring that a std::vector of a particular type should be considered a YAML sequence.
#define LLVM_YAML_STRONG_TYPEDEF(_base, _type)
YAML I/O does conversion based on types. But often native data types are just a typedef of built in i...
Represent a constant reference to a string, i.e.
Definition StringRef.h:56
The instances of the Type class are immutable: once they are created, they are never changed.
Definition Type.h:46
LLVM Value Representation.
Definition Value.h:75
Specialized YAMLIO scalar type for representing a binary blob.
Definition YAML.h:64
@ WASM_TYPE_FUNC
Definition Wasm.h:75
@ WASM_SEC_CODE
Definition Wasm.h:47
@ WASM_SEC_MEMORY
Definition Wasm.h:42
@ WASM_SEC_IMPORT
Definition Wasm.h:39
@ WASM_SEC_EXPORT
Definition Wasm.h:44
@ WASM_SEC_DATACOUNT
Definition Wasm.h:49
@ WASM_SEC_CUSTOM
Definition Wasm.h:37
@ WASM_SEC_FUNCTION
Definition Wasm.h:40
@ WASM_SEC_ELEM
Definition Wasm.h:46
@ WASM_SEC_START
Definition Wasm.h:45
@ WASM_SEC_TABLE
Definition Wasm.h:41
@ WASM_SEC_TYPE
Definition Wasm.h:38
@ WASM_SEC_TAG
Definition Wasm.h:50
@ WASM_SEC_GLOBAL
Definition Wasm.h:43
@ WASM_SEC_DATA
Definition Wasm.h:48
This is an optimization pass for GlobalISel generic memory operations.
decltype(auto) dyn_cast(const From &Val)
dyn_cast<X> - Return the argument parameter cast to the specified type.
Definition Casting.h:643
@ Export
Export information to summary.
Definition IPO.h:40
@ Import
Import information from summary.
Definition IPO.h:39
@ Global
Append to llvm.global_dtors.
PointerUnion< const Value *, const PseudoSourceValue * > ValueType
Implement std::hash so that hash_code can be used in STL containers.
Definition BitVector.h:878
std::vector< Function > Functions
Definition WasmYAML.h:399
static bool classof(const Section *S)
Definition WasmYAML.h:395
std::vector< ComdatEntry > Entries
Definition WasmYAML.h:185
static bool classof(const Section *S)
Definition WasmYAML.h:201
CustomSection(StringRef Name)
Definition WasmYAML.h:198
static bool classof(const Section *S)
Definition WasmYAML.h:415
std::vector< DataSegment > Segments
Definition WasmYAML.h:409
static bool classof(const Section *S)
Definition WasmYAML.h:405
yaml::BinaryRef Content
Definition WasmYAML.h:129
std::vector< ElemSegment > Segments
Definition WasmYAML.h:389
static bool classof(const Section *S)
Definition WasmYAML.h:385
std::vector< uint32_t > Functions
Definition WasmYAML.h:80
static bool classof(const Section *S)
Definition WasmYAML.h:365
std::vector< Export > Exports
Definition WasmYAML.h:369
FeaturePolicyPrefix Prefix
Definition WasmYAML.h:143
std::vector< uint32_t > FunctionTypes
Definition WasmYAML.h:319
static bool classof(const Section *S)
Definition WasmYAML.h:315
std::vector< LocalDecl > Locals
Definition WasmYAML.h:111
yaml::BinaryRef Body
Definition WasmYAML.h:112
static bool classof(const Section *S)
Definition WasmYAML.h:355
std::vector< Global > Globals
Definition WasmYAML.h:359
std::vector< Import > Imports
Definition WasmYAML.h:309
static bool classof(const Section *S)
Definition WasmYAML.h:305
wasm::WasmInitExprMVP Inst
Definition WasmYAML.h:70
yaml::BinaryRef Body
Definition WasmYAML.h:71
yaml::Hex32 Minimum
Definition WasmYAML.h:49
yaml::Hex32 PageSize
Definition WasmYAML.h:51
yaml::Hex32 Maximum
Definition WasmYAML.h:50
std::vector< InitFunction > InitFunctions
Definition WasmYAML.h:263
std::vector< SymbolInfo > SymbolTable
Definition WasmYAML.h:261
std::vector< SegmentInfo > SegmentInfos
Definition WasmYAML.h:262
static bool classof(const Section *S)
Definition WasmYAML.h:255
std::vector< Comdat > Comdats
Definition WasmYAML.h:264
std::vector< Limits > Memories
Definition WasmYAML.h:339
static bool classof(const Section *S)
Definition WasmYAML.h:335
std::vector< NameEntry > DataSegmentNames
Definition WasmYAML.h:249
static bool classof(const Section *S)
Definition WasmYAML.h:242
std::vector< NameEntry > FunctionNames
Definition WasmYAML.h:247
std::vector< NameEntry > GlobalNames
Definition WasmYAML.h:248
std::vector< std::unique_ptr< Section > > Sections
Definition WasmYAML.h:424
static bool classof(const Section *S)
Definition WasmYAML.h:271
std::vector< ProducerEntry > Tools
Definition WasmYAML.h:277
std::vector< ProducerEntry > Languages
Definition WasmYAML.h:276
std::vector< ProducerEntry > SDKs
Definition WasmYAML.h:278
Section(SectionType SecType)
Definition WasmYAML.h:189
std::optional< uint8_t > HeaderSecSizeEncodingLen
Definition WasmYAML.h:194
std::vector< Relocation > Relocations
Definition WasmYAML.h:193
std::vector< ValueType > ReturnTypes
Definition WasmYAML.h:158
std::vector< ValueType > ParamTypes
Definition WasmYAML.h:157
static bool classof(const Section *S)
Definition WasmYAML.h:375
wasm::WasmDataReference DataRef
Definition WasmYAML.h:168
wasm::WasmCommonReference CommonRef
Definition WasmYAML.h:169
static bool classof(const Section *S)
Definition WasmYAML.h:325
std::vector< Table > Tables
Definition WasmYAML.h:329
std::vector< uint32_t > TagTypes
Definition WasmYAML.h:349
static bool classof(const Section *S)
Definition WasmYAML.h:345
std::vector< FeatureEntry > Features
Definition WasmYAML.h:289
static bool classof(const Section *S)
Definition WasmYAML.h:284
static bool classof(const Section *S)
Definition WasmYAML.h:295
std::vector< Signature > Signatures
Definition WasmYAML.h:299
static LLVM_ABI void mapping(IO &IO, WasmYAML::ComdatEntry &ComdatEntry)
Definition WasmYAML.cpp:499
static LLVM_ABI void mapping(IO &IO, WasmYAML::Comdat &Comdat)
Definition WasmYAML.cpp:505
static LLVM_ABI void mapping(IO &IO, WasmYAML::DataSegment &Segment)
Definition WasmYAML.cpp:466
static LLVM_ABI void mapping(IO &IO, WasmYAML::DylinkExportInfo &Info)
Definition WasmYAML.cpp:554
static LLVM_ABI void mapping(IO &IO, WasmYAML::DylinkImportInfo &Info)
Definition WasmYAML.cpp:547
static LLVM_ABI void mapping(IO &IO, WasmYAML::ElemSegment &Segment)
Definition WasmYAML.cpp:382
static LLVM_ABI void mapping(IO &IO, WasmYAML::Export &Export)
Definition WasmYAML.cpp:417
static LLVM_ABI void mapping(IO &IO, WasmYAML::FeatureEntry &FeatureEntry)
Definition WasmYAML.cpp:352
static LLVM_ABI void mapping(IO &IO, WasmYAML::FileHeader &FileHdr)
Definition WasmYAML.cpp:32
static LLVM_ABI void mapping(IO &IO, WasmYAML::Function &Function)
Definition WasmYAML.cpp:317
static LLVM_ABI void mapping(IO &IO, WasmYAML::Global &Global)
Definition WasmYAML.cpp:424
static LLVM_ABI void mapping(IO &IO, WasmYAML::Import &Import)
Definition WasmYAML.cpp:397
static LLVM_ABI void mapping(IO &IO, WasmYAML::InitExpr &Expr)
Definition WasmYAML.cpp:432
static LLVM_ABI void mapping(IO &IO, WasmYAML::InitFunction &Init)
Definition WasmYAML.cpp:484
static LLVM_ABI void mapping(IO &IO, WasmYAML::Limits &Limits)
Definition WasmYAML.cpp:372
static LLVM_ABI void mapping(IO &IO, WasmYAML::LocalDecl &LocalDecl)
Definition WasmYAML.cpp:366
static LLVM_ABI void mapping(IO &IO, WasmYAML::NameEntry &NameEntry)
Definition WasmYAML.cpp:332
static LLVM_ABI void mapping(IO &IO, WasmYAML::Object &Object)
Definition WasmYAML.cpp:37
static LLVM_ABI void mapping(IO &IO, WasmYAML::ProducerEntry &ProducerEntry)
Definition WasmYAML.cpp:338
static LLVM_ABI void mapping(IO &IO, WasmYAML::Relocation &Relocation)
Definition WasmYAML.cpp:324
static LLVM_ABI void mapping(IO &IO, WasmYAML::SegmentInfo &SegmentInfo)
Definition WasmYAML.cpp:358
static LLVM_ABI void mapping(IO &IO, WasmYAML::Signature &Signature)
Definition WasmYAML.cpp:304
static LLVM_ABI void mapping(IO &IO, WasmYAML::SymbolInfo &Info)
Definition WasmYAML.cpp:511
static LLVM_ABI void mapping(IO &IO, WasmYAML::Table &Table)
Definition WasmYAML.cpp:311
static LLVM_ABI void mapping(IO &IO, std::unique_ptr< WasmYAML::Section > &Section)
Definition WasmYAML.cpp:170
This class should be specialized by any type that needs to be converted to/from a YAML mapping.
Definition YAMLTraits.h:63
static LLVM_ABI void bitset(IO &IO, WasmYAML::LimitFlags &Value)
Definition WasmYAML.cpp:560
static LLVM_ABI void bitset(IO &IO, WasmYAML::SegmentFlags &Value)
Definition WasmYAML.cpp:570
static LLVM_ABI void bitset(IO &IO, WasmYAML::SymbolFlags &Value)
Definition WasmYAML.cpp:579
This class should be specialized by any integer type that is a union of bit values and the YAML repre...
Definition YAMLTraits.h:124
static LLVM_ABI void enumeration(IO &IO, WasmYAML::ComdatKind &Kind)
Definition WasmYAML.cpp:490
static LLVM_ABI void enumeration(IO &IO, WasmYAML::ExportKind &Kind)
Definition WasmYAML.cpp:626
static LLVM_ABI void enumeration(IO &IO, WasmYAML::FeaturePolicyPrefix &Prefix)
Definition WasmYAML.cpp:344
static LLVM_ABI void enumeration(IO &IO, WasmYAML::Opcode &Opcode)
Definition WasmYAML.cpp:637
static LLVM_ABI void enumeration(IO &IO, WasmYAML::RelocType &Kind)
Definition WasmYAML.cpp:661
static LLVM_ABI void enumeration(IO &IO, WasmYAML::SectionType &Type)
Definition WasmYAML.cpp:284
static LLVM_ABI void enumeration(IO &IO, WasmYAML::SymbolKind &Kind)
Definition WasmYAML.cpp:598
static LLVM_ABI void enumeration(IO &IO, WasmYAML::TableType &Type)
Definition WasmYAML.cpp:650
static LLVM_ABI void enumeration(IO &IO, WasmYAML::ValueType &Type)
Definition WasmYAML.cpp:610
This class should be specialized by any integral type that converts to/from a YAML scalar where there...
Definition YAMLTraits.h:108