From 3505c1d790ee0f05ed14e6b96121f16e6ffb75f4 Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 19 Sep 2023 15:12:44 +0100 Subject: Fix constant literals using the wrong type --- src/llvm_backend_const.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/llvm_backend_const.cpp') diff --git a/src/llvm_backend_const.cpp b/src/llvm_backend_const.cpp index 01b0528d0..fc7d4e2f7 100644 --- a/src/llvm_backend_const.cpp +++ b/src/llvm_backend_const.cpp @@ -467,7 +467,7 @@ gb_internal lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bo } if (value.kind == ExactValue_Invalid) { - return lb_const_nil(m, type); + return lb_const_nil(m, original_type); } if (value.kind == ExactValue_Procedure) { @@ -1052,13 +1052,14 @@ gb_internal lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bo i32 index = field_remapping[f->Variable.field_index]; if (elem_type_can_be_constant(f->type)) { if (sel.index.count == 1) { - values[index] = lb_const_value(m, f->type, tav.value, allow_local).value; + values[index] = lb_const_value(m, f->type, tav.value, allow_local).value; visited[index] = true; } else { if (!visited[index]) { - values[index] = lb_const_value(m, f->type, {}, false).value; + values[index] = lb_const_value(m, f->type, {}, false).value; visited[index] = true; } + unsigned idx_list_len = cast(unsigned)sel.index.count-1; unsigned *idx_list = gb_alloc_array(temporary_allocator(), unsigned, idx_list_len); @@ -1171,7 +1172,6 @@ gb_internal lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, bo } } return lb_addr_load(p, v); - } } else if (is_type_bit_set(type)) { ast_node(cl, CompoundLit, value.value_compound); -- cgit v1.2.3