aboutsummaryrefslogtreecommitdiff
path: root/clang/lib/CodeGen/CGDebugInfo.cpp
diff options
context:
space:
mode:
authorPaulo Matos <pmatos@igalia.com>2023-02-17 18:38:58 -0800
committerVitaly Buka <vitalybuka@google.com>2023-02-17 18:48:48 -0800
commit890146b19206827bc48ee1ae1dc1534ff2ff18d7 (patch)
treeb945a429708a5af6128a2a797fb0cc28a29c0dc8 /clang/lib/CodeGen/CGDebugInfo.cpp
parente2069be83ea88837e1d3bb710aff17cd84ee7b7e (diff)
downloadllvm-890146b19206827bc48ee1ae1dc1534ff2ff18d7.zip
llvm-890146b19206827bc48ee1ae1dc1534ff2ff18d7.tar.gz
llvm-890146b19206827bc48ee1ae1dc1534ff2ff18d7.tar.bz2
[WebAssembly] Initial support for reference type externref in clang
This patch introduces a new type __externref_t that denotes a WebAssembly opaque reference type. It also implements builtin __builtin_wasm_ref_null_extern(), that returns a null value of __externref_t. This lays the ground work for further builtins and reference types. Reviewed By: aaron.ballman Differential Revision: https://reviews.llvm.org/D122215
Diffstat (limited to 'clang/lib/CodeGen/CGDebugInfo.cpp')
-rw-r--r--clang/lib/CodeGen/CGDebugInfo.cpp11
1 files changed, 11 insertions, 0 deletions
diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp
index bb9a11e0..bb91b51 100644
--- a/clang/lib/CodeGen/CGDebugInfo.cpp
+++ b/clang/lib/CodeGen/CGDebugInfo.cpp
@@ -817,6 +817,17 @@ llvm::DIType *CGDebugInfo::CreateType(const BuiltinType *BT) {
return DBuilder.createVectorType(/*Size=*/0, Align, ElemTy,
SubscriptArray);
}
+
+#define WASM_REF_TYPE(Name, MangledName, Id, SingletonId, AS) \
+ case BuiltinType::Id: { \
+ if (!SingletonId) \
+ SingletonId = \
+ DBuilder.createForwardDecl(llvm::dwarf::DW_TAG_structure_type, \
+ MangledName, TheCU, TheCU->getFile(), 0); \
+ return SingletonId; \
+ }
+#include "clang/Basic/WebAssemblyReferenceTypes.def"
+
case BuiltinType::UChar:
case BuiltinType::Char_U:
Encoding = llvm::dwarf::DW_ATE_unsigned_char;