|
@@ -782,9 +782,12 @@ gb_internal lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, lb
|
|
|
lbValue res = {};
|
|
|
res.type = default_type(original_type);
|
|
|
|
|
|
+ isize len = value.value_string.len;
|
|
|
+
|
|
|
if (is_type_string16(res.type) || is_type_cstring16(res.type)) {
|
|
|
TEMPORARY_ALLOCATOR_GUARD();
|
|
|
String16 s16 = string_to_string16(temporary_allocator(), value.value_string);
|
|
|
+ len = s16.len;
|
|
|
ptr = lb_find_or_add_entity_string16_ptr(m, s16, custom_link_section);
|
|
|
} else {
|
|
|
ptr = lb_find_or_add_entity_string_ptr(m, value.value_string, custom_link_section);
|
|
@@ -797,10 +800,14 @@ gb_internal lbValue lb_const_value(lbModule *m, Type *type, ExactValue value, lb
|
|
|
if (is_type_cstring(res.type) || is_type_cstring16(res.type)) {
|
|
|
res.value = ptr;
|
|
|
} else {
|
|
|
- if (value.value_string.len == 0) {
|
|
|
- ptr = LLVMConstNull(lb_type(m, t_u8_ptr));
|
|
|
+ if (len == 0) {
|
|
|
+ if (is_type_string16(res.type)) {
|
|
|
+ ptr = LLVMConstNull(lb_type(m, t_u16_ptr));
|
|
|
+ } else {
|
|
|
+ ptr = LLVMConstNull(lb_type(m, t_u8_ptr));
|
|
|
+ }
|
|
|
}
|
|
|
- LLVMValueRef str_len = LLVMConstInt(lb_type(m, t_int), value.value_string.len, true);
|
|
|
+ LLVMValueRef str_len = LLVMConstInt(lb_type(m, t_int), len, true);
|
|
|
GB_ASSERT(is_type_string(original_type));
|
|
|
|
|
|
if (is_type_string16(res.type)) {
|