aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJeroen van Rijn <Kelimion@users.noreply.github.com>2025-10-15 16:04:02 +0200
committerGitHub <noreply@github.com>2025-10-15 16:04:02 +0200
commit4b8751bebdbf40528c2af8ff5a4ef38c1ab429cc (patch)
tree25b7599645caf76ebe9136da51e5114006ab93f4 /src
parent596066aa0453752f24cc2fa5087fafe2c4686536 (diff)
parent4dd6bb2e871e9b8583a89e62ce36a98d02d48cc3 (diff)
Merge pull request #5810 from LeonardoTemperanza/master
Fix: #load(<string-path>, <type>) produces unaligned accesses
Diffstat (limited to 'src')
-rw-r--r--src/llvm_backend_general.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp
index 003278b82..aa6f7e014 100644
--- a/src/llvm_backend_general.cpp
+++ b/src/llvm_backend_general.cpp
@@ -2999,7 +2999,11 @@ gb_internal lbValue lb_find_or_add_entity_string_byte_slice_with_type(lbModule *
Type *bt = base_type(slice_type);
Type *elem = bt->Slice.elem;
i64 sz = type_size_of(elem);
+ i64 align = type_align_of(elem);
GB_ASSERT(sz > 0);
+ GB_ASSERT(align > 0);
+
+ LLVMSetAlignment(global_data, (u32)align);
ptr = LLVMConstPointerCast(ptr, lb_type(m, alloc_type_pointer(elem)));
data_len /= sz;
}
@@ -3054,7 +3058,11 @@ gb_internal lbValue lb_find_or_add_entity_string16_slice_with_type(lbModule *m,
Type *bt = base_type(slice_type);
Type *elem = bt->Slice.elem;
i64 sz = type_size_of(elem);
+ i64 align = type_align_of(elem);
GB_ASSERT(sz > 0);
+ GB_ASSERT(align > 0);
+
+ LLVMSetAlignment(global_data, (u32)align);
ptr = LLVMConstPointerCast(ptr, lb_type(m, alloc_type_pointer(elem)));
data_len /= sz;
}