From 0c9aaed9f741c3b96c63e0cbc9e4e11f4510248a Mon Sep 17 00:00:00 2001 From: gingerBill Date: Wed, 7 Sep 2022 11:09:22 +0100 Subject: Fix #2029 Eumerated array of procs literal crashes the compiler with an llvm error --- src/llvm_backend_const.cpp | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'src/llvm_backend_const.cpp') diff --git a/src/llvm_backend_const.cpp b/src/llvm_backend_const.cpp index 2d14070e2..5826dbaec 100644 --- a/src/llvm_backend_const.cpp +++ b/src/llvm_backend_const.cpp @@ -297,12 +297,16 @@ LLVMValueRef lb_build_constant_array_values(lbModule *m, Type *type, Type *elem_ } if (!is_const) { + LLVMTypeRef llvm_elem_type = lb_type(m, elem_type); lbProcedure *p = m->curr_procedure; GB_ASSERT(p != nullptr); lbAddr v = lb_add_local_generated(p, type, false); lbValue ptr = lb_addr_get_ptr(p, v); for (isize i = 0; i < count; i++) { lbValue elem = lb_emit_array_epi(p, ptr, i); + if (is_type_proc(elem_type)) { + values[i] = LLVMConstPointerCast(values[i], llvm_elem_type); + } LLVMBuildStore(p->builder, values[i], elem.value); } return lb_addr_load(p, v).value; -- cgit v1.2.3