aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend.cpp
diff options
context:
space:
mode:
authorBarinzaya <barinzaya@gmail.com>2025-04-24 14:15:22 -0400
committerBarinzaya <barinzaya@gmail.com>2025-04-24 14:21:21 -0400
commitb41a776027b0b4796edc85217c5c607e5498035d (patch)
treea5d494f72254c1590b8c28cca85b3234055a3649 /src/llvm_backend.cpp
parentcfb478808e7dae48f3a40fe7e40927c5e38a5d1d (diff)
Correctly align global and static variables.
This can be important if matrices or SIMD vectors are being used in global or static variables, as otherwise it may result in crashes due to aligned instructions accessing misaligned variables.
Diffstat (limited to 'src/llvm_backend.cpp')
-rw-r--r--src/llvm_backend.cpp1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/llvm_backend.cpp b/src/llvm_backend.cpp
index 083a1d90e..1ada1c070 100644
--- a/src/llvm_backend.cpp
+++ b/src/llvm_backend.cpp
@@ -2598,6 +2598,7 @@ gb_internal bool lb_generate_code(lbGenerator *gen) {
LLVMSetLinkage(g.value, USE_SEPARATE_MODULES ? LLVMWeakAnyLinkage : LLVMInternalLinkage);
}
lb_set_linkage_from_entity_flags(m, g.value, e->flags);
+ LLVMSetAlignment(g.value, type_align_of(e->type));
if (e->Variable.link_section.len > 0) {
LLVMSetSection(g.value, alloc_cstring(permanent_allocator(), e->Variable.link_section));