summaryrefslogtreecommitdiff
path: root/lib/ObjectYAML
diff options
context:
space:
mode:
authorSam Clegg <sbc@chromium.org>2017-12-13 22:02:25 +0000
committerSam Clegg <sbc@chromium.org>2017-12-13 22:02:25 +0000
commit8764e8a22791f99e6756cd3fbe89c24e87bb0044 (patch)
tree29a3937147b2764d37c6f4ce55ce5baede6307e5 /lib/ObjectYAML
parentd76ae1215ccdb4f901847c9c22e2945ebfe27531 (diff)
[WebAssembly] Use bitfield types in wasm YAML representation
Differential Revision: https://reviews.llvm.org/D41202 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@320642 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/ObjectYAML')
-rw-r--r--lib/ObjectYAML/WasmYAML.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/ObjectYAML/WasmYAML.cpp b/lib/ObjectYAML/WasmYAML.cpp
index 2f961cf68a0..c206a682b83 100644
--- a/lib/ObjectYAML/WasmYAML.cpp
+++ b/lib/ObjectYAML/WasmYAML.cpp
@@ -365,6 +365,28 @@ void MappingTraits<WasmYAML::SymbolInfo>::mapping(IO &IO,
IO.mapRequired("Flags", Info.Flags);
}
+void ScalarBitSetTraits<WasmYAML::LimitFlags>::bitset(
+ IO &IO, WasmYAML::LimitFlags &Value) {
+#define BCase(X) IO.bitSetCase(Value, #X, wasm::WASM_LIMITS_FLAG_##X)
+ BCase(HAS_MAX);
+#undef BCase
+}
+
+void ScalarBitSetTraits<WasmYAML::SegmentFlags>::bitset(
+ IO &IO, WasmYAML::SegmentFlags &Value) {
+}
+
+void ScalarBitSetTraits<WasmYAML::SymbolFlags>::bitset(
+ IO &IO, WasmYAML::SymbolFlags &Value) {
+#define BCaseMask(M, X) IO.maskedBitSetCase(Value, #X, wasm::WASM_SYMBOL_##X, wasm::WASM_SYMBOL_##M)
+ //BCaseMask(BINDING_MASK, BINDING_GLOBAL);
+ BCaseMask(BINDING_MASK, BINDING_WEAK);
+ BCaseMask(BINDING_MASK, BINDING_LOCAL);
+ //BCaseMask(VISIBILITY_MASK, VISIBILITY_DEFAULT);
+ BCaseMask(VISIBILITY_MASK, VISIBILITY_HIDDEN);
+#undef BCaseMask
+}
+
void ScalarEnumerationTraits<WasmYAML::ValueType>::enumeration(
IO &IO, WasmYAML::ValueType &Type) {
#define ECase(X) IO.enumCase(Type, #X, wasm::WASM_TYPE_##X);