mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-06 15:48:51 +00:00
Generate the global type info member values even if the count is 0
This commit is contained in:
+50
-52
@@ -2273,65 +2273,63 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (count > 0) {
|
{
|
||||||
{
|
char const *name = LB_TYPE_INFO_TYPES_NAME;
|
||||||
char const *name = LB_TYPE_INFO_TYPES_NAME;
|
Type *t = alloc_type_array(t_type_info_ptr, count);
|
||||||
Type *t = alloc_type_array(t_type_info_ptr, count);
|
LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
|
||||||
LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
|
LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
|
||||||
LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
|
LLVMSetLinkage(g, LLVMInternalLinkage);
|
||||||
LLVMSetLinkage(g, LLVMInternalLinkage);
|
if (LB_USE_GIANT_PACKED_STRUCT) {
|
||||||
if (LB_USE_GIANT_PACKED_STRUCT) {
|
lb_make_global_private_const(g);
|
||||||
lb_make_global_private_const(g);
|
}
|
||||||
}
|
lb_global_type_info_member_types = 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);
|
||||||
}
|
}
|
||||||
{
|
lb_global_type_info_member_names = 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);
|
char const *name = LB_TYPE_INFO_OFFSETS_NAME;
|
||||||
LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
|
Type *t = alloc_type_array(t_uintptr, count);
|
||||||
LLVMSetLinkage(g, LLVMInternalLinkage);
|
LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
|
||||||
if (LB_USE_GIANT_PACKED_STRUCT) {
|
LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
|
||||||
lb_make_global_private_const(g);
|
LLVMSetLinkage(g, LLVMInternalLinkage);
|
||||||
}
|
if (LB_USE_GIANT_PACKED_STRUCT) {
|
||||||
lb_global_type_info_member_names = lb_addr({g, alloc_type_pointer(t)});
|
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_offsets = lb_addr({g, alloc_type_pointer(t)});
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char const *name = LB_TYPE_INFO_USINGS_NAME;
|
char const *name = LB_TYPE_INFO_USINGS_NAME;
|
||||||
Type *t = alloc_type_array(t_bool, count);
|
Type *t = alloc_type_array(t_bool, count);
|
||||||
LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
|
LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
|
||||||
LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
|
LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
|
||||||
LLVMSetLinkage(g, LLVMInternalLinkage);
|
LLVMSetLinkage(g, LLVMInternalLinkage);
|
||||||
if (LB_USE_GIANT_PACKED_STRUCT) {
|
if (LB_USE_GIANT_PACKED_STRUCT) {
|
||||||
lb_make_global_private_const(g);
|
lb_make_global_private_const(g);
|
||||||
}
|
|
||||||
lb_global_type_info_member_usings = lb_addr({g, alloc_type_pointer(t)});
|
|
||||||
}
|
}
|
||||||
|
lb_global_type_info_member_usings = lb_addr({g, alloc_type_pointer(t)});
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
char const *name = LB_TYPE_INFO_TAGS_NAME;
|
char const *name = LB_TYPE_INFO_TAGS_NAME;
|
||||||
Type *t = alloc_type_array(t_string, count);
|
Type *t = alloc_type_array(t_string, count);
|
||||||
LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
|
LLVMValueRef g = LLVMAddGlobal(m->mod, lb_type(m, t), name);
|
||||||
LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
|
LLVMSetInitializer(g, LLVMConstNull(lb_type(m, t)));
|
||||||
LLVMSetLinkage(g, LLVMInternalLinkage);
|
LLVMSetLinkage(g, LLVMInternalLinkage);
|
||||||
if (LB_USE_GIANT_PACKED_STRUCT) {
|
if (LB_USE_GIANT_PACKED_STRUCT) {
|
||||||
lb_make_global_private_const(g);
|
lb_make_global_private_const(g);
|
||||||
}
|
|
||||||
lb_global_type_info_member_tags = lb_addr({g, alloc_type_pointer(t)});
|
|
||||||
}
|
}
|
||||||
|
lb_global_type_info_member_tags = lb_addr({g, alloc_type_pointer(t)});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user