diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2025-11-04 20:56:49 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-11-04 20:56:49 +0000 |
| commit | 12d8572d439d40d030b12e8fc98210ed255405d7 (patch) | |
| tree | bdcdac4db3ca857ed5515492c348617ff4d3d536 /src/llvm_backend_stmt.cpp | |
| parent | f70454c237a74b8ead76bf1cd6d3fb94e30d2e8a (diff) | |
| parent | 3ef063632498a59bd6df3de5d34e92bf6b6102d8 (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.cpp | 13 |
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); |