aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_stmt.cpp
diff options
context:
space:
mode:
authorgingerBill <gingerBill@users.noreply.github.com>2025-11-04 20:56:49 +0000
committerGitHub <noreply@github.com>2025-11-04 20:56:49 +0000
commit12d8572d439d40d030b12e8fc98210ed255405d7 (patch)
treebdcdac4db3ca857ed5515492c348617ff4d3d536 /src/llvm_backend_stmt.cpp
parentf70454c237a74b8ead76bf1cd6d3fb94e30d2e8a (diff)
parent3ef063632498a59bd6df3de5d34e92bf6b6102d8 (diff)
Merge pull request #5886 from laytan/32bit-typeid-fixes
fixes for 32bit with regards to typeid
Diffstat (limited to 'src/llvm_backend_stmt.cpp')
-rw-r--r--src/llvm_backend_stmt.cpp13
1 files changed, 8 insertions, 5 deletions
diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp
index f247fa2a7..3dbcea4fb 100644
--- a/src/llvm_backend_stmt.cpp
+++ b/src/llvm_backend_stmt.cpp
@@ -2178,11 +2178,14 @@ gb_internal void lb_build_static_variables(lbProcedure *p, AstValueDecl *vd) {
LLVMSetLinkage(var_global_ref, LLVMInternalLinkage);
}
- LLVMValueRef vals[2] = {
- lb_emit_conv(p, var_global.addr, t_rawptr).value,
- lb_typeid(p->module, var_type).value,
- };
- LLVMValueRef init = llvm_const_named_struct(p->module, e->type, vals, gb_count_of(vals));
+ auto vals = array_make<LLVMValueRef>(temporary_allocator(), 0, 3);
+ array_add(&vals, lb_emit_conv(p, var_global.addr, t_rawptr).value);
+ if (build_context.metrics.ptr_size == 4) {
+ array_add(&vals, LLVMConstNull(lb_type_padding_filler(p->module, 4, 4)));
+ }
+ array_add(&vals, lb_typeid(p->module, var_type).value);
+
+ LLVMValueRef init = llvm_const_named_struct(p->module, e->type, vals.data, vals.count);
LLVMSetInitializer(global, init);
} else {
LLVMSetInitializer(global, value.value);