aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2023-09-27 11:44:29 +0100
committergingerBill <bill@gingerbill.org>2023-09-27 11:44:29 +0100
commitc529b1b73ae33d2a1a69c7002ac02c34b8801866 (patch)
tree44e4ddf124f986bbe5ee2610ef2882cde41fe539 /src
parentacc29fbcebf4459b1c98c54d9cc565d363a4196a (diff)
Generate the global type info member values even if the count is `0`
Diffstat (limited to 'src')
-rw-r--r--src/llvm_backend.cpp102
1 files changed, 50 insertions, 52 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 8f838ea31..ceb4dc1de 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -2273,65 +2273,63 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
}
}
- if (count > 0) {
- {
- char const *name = LB_TYPE_INFO_TYPES_NAME;
- Type *t = alloc_type_array(t_type_info_ptr, count);
- LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
- LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
- LLVMSetLinkage(g, LLVMInternalLinkage);
- if (LB_USE_GIANT_PACKED_STRUCT) {
- lb_make_global_private_const(g);
- }
- lb_global_type_info_member_types = lb_addr({g, alloc_type_pointer(t)});
-
+ {
+ char const *name = LB_TYPE_INFO_TYPES_NAME;
+ Type *t = alloc_type_array(t_type_info_ptr, count);
+ LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
+ LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
+ LLVMSetLinkage(g, LLVMInternalLinkage);
+ if (LB_USE_GIANT_PACKED_STRUCT) {
+ lb_make_global_private_const(g);
}
- {
- char const *name = LB_TYPE_INFO_NAMES_NAME;
- Type *t = alloc_type_array(t_string, count);
- LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
- LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
- LLVMSetLinkage(g, LLVMInternalLinkage);
- if (LB_USE_GIANT_PACKED_STRUCT) {
- lb_make_global_private_const(g);
- }
- lb_global_type_info_member_names = lb_addr({g, alloc_type_pointer(t)});
+ lb_global_type_info_member_types = lb_addr({g, alloc_type_pointer(t)});
+
+ }
+ {
+ char const *name = LB_TYPE_INFO_NAMES_NAME;
+ Type *t = alloc_type_array(t_string, count);
+ LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
+ LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
+ LLVMSetLinkage(g, LLVMInternalLinkage);
+ if (LB_USE_GIANT_PACKED_STRUCT) {
+ lb_make_global_private_const(g);
}
- {
- char const *name = LB_TYPE_INFO_OFFSETS_NAME;
- Type *t = alloc_type_array(t_uintptr, count);
- LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
- LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
- LLVMSetLinkage(g, LLVMInternalLinkage);
- if (LB_USE_GIANT_PACKED_STRUCT) {
- lb_make_global_private_const(g);
- }
- lb_global_type_info_member_offsets = lb_addr({g, alloc_type_pointer(t)});
+ lb_global_type_info_member_names = lb_addr({g, alloc_type_pointer(t)});
+ }
+ {
+ char const *name = LB_TYPE_INFO_OFFSETS_NAME;
+ Type *t = alloc_type_array(t_uintptr, count);
+ LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
+ LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
+ LLVMSetLinkage(g, LLVMInternalLinkage);
+ if (LB_USE_GIANT_PACKED_STRUCT) {
+ lb_make_global_private_const(g);
}
+ lb_global_type_info_member_offsets = lb_addr({g, alloc_type_pointer(t)});
+ }
- {
- char const *name = LB_TYPE_INFO_USINGS_NAME;
- Type *t = alloc_type_array(t_bool, count);
- LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
- LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
- LLVMSetLinkage(g, LLVMInternalLinkage);
- if (LB_USE_GIANT_PACKED_STRUCT) {
- lb_make_global_private_const(g);
- }
- lb_global_type_info_member_usings = lb_addr({g, alloc_type_pointer(t)});
+ {
+ char const *name = LB_TYPE_INFO_USINGS_NAME;
+ Type *t = alloc_type_array(t_bool, count);
+ LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
+ LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
+ LLVMSetLinkage(g, LLVMInternalLinkage);
+ if (LB_USE_GIANT_PACKED_STRUCT) {
+ lb_make_global_private_const(g);
}
+ lb_global_type_info_member_usings = lb_addr({g, alloc_type_pointer(t)});
+ }
- {
- char const *name = LB_TYPE_INFO_TAGS_NAME;
- Type *t = alloc_type_array(t_string, count);
- LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
- LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
- LLVMSetLinkage(g, LLVMInternalLinkage);
- if (LB_USE_GIANT_PACKED_STRUCT) {
- lb_make_global_private_const(g);
- }
- lb_global_type_info_member_tags = lb_addr({g, alloc_type_pointer(t)});
+ {
+ char const *name = LB_TYPE_INFO_TAGS_NAME;
+ Type *t = alloc_type_array(t_string, count);
+ LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
+ LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
+ LLVMSetLinkage(g, LLVMInternalLinkage);
+ if (LB_USE_GIANT_PACKED_STRUCT) {
+ lb_make_global_private_const(g);
}
+ lb_global_type_info_member_tags = lb_addr({g, alloc_type_pointer(t)});
}
}
}