From c23d2793df60ec156f3fd8fe46d40fc5fd9b3893 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sun, 15 Mar 2026 15:45:29 +0000 Subject: [PATCH] Fix `lb_convert_struct_index` for FCD arrays --- src/llvm_backend_utility.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/llvm_backend_utility.cpp b/src/llvm_backend_utility.cpp index 349e8c85b..ed0b14273 100644 --- a/src/llvm_backend_utility.cpp +++ b/src/llvm_backend_utility.cpp @@ -1061,6 +1061,17 @@ gb_internal i32 lb_convert_struct_index(lbModule *m, Type *t, i32 index) { break; } } + if (t->kind == Type_FixedCapacityDynamicArray) { + switch (index) { + case 0: return 0; // data + case 1: + if (t->FixedCapacityDynamicArray.padding_needed > 0) { + return 2; + } + return 1; + } + } + return index; } @@ -1404,6 +1415,12 @@ gb_internal lbValue lb_emit_struct_ev(lbProcedure *p, lbValue s, i32 index) { } break; + case Type_FixedCapacityDynamicArray: + switch (index) { + case 0: result_type = alloc_type_array(t->FixedCapacityDynamicArray.elem, t->FixedCapacityDynamicArray.capacity); break; + case 1: result_type = t_int; break; + } + case Type_Map: { init_map_internal_debug_types(t);