From 5de4ba76f5f676704f1686c8060e79922e0ad869 Mon Sep 17 00:00:00 2001 From: David Gonzalez Martin Date: Fri, 23 May 2025 19:55:59 -0600 Subject: [PATCH] Self-referential struct --- src/compiler.cpp | 2 +- src/emitter.cpp | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/compiler.cpp b/src/compiler.cpp index 45584e3..f85712e 100644 --- a/src/compiler.cpp +++ b/src/compiler.cpp @@ -306,7 +306,7 @@ global_variable String names[] = string_literal("noreturn_macro"), string_literal("generic_pointer_array"), - // string_literal("self_referential_struct"), // TODO + string_literal("self_referential_struct"), // TODO // string_literal("forward_declared_type"), }; diff --git a/src/emitter.cpp b/src/emitter.cpp index 0471cc3..6ffb0ee 100644 --- a/src/emitter.cpp +++ b/src/emitter.cpp @@ -956,6 +956,7 @@ fn void resolve_type_in_place_debug(Module* module, Type* type) { LLVMDIFlags flags = {}; auto forward_declaration = LLVMDIBuilderCreateReplaceableCompositeType(module->llvm.di_builder, module->llvm.debug_tag, (char*)type->name.pointer, type->name.length, module->scope.llvm, module->llvm.file, type->structure.line, 0, type->structure.byte_size * 8, type->structure.byte_alignment * 8, flags, (char*)type->name.pointer, type->name.length); + type->llvm.debug = forward_declaration; module->llvm.debug_tag += 1; LLVMMetadataRef llvm_type_buffer[64];