From de5ce90fa70c8ae4b859b50704dd0ffacbeedb1e Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 7 May 2024 15:28:09 +0100 Subject: Add metadata to packed structs field accesses to state it is packed --- src/llvm_backend_general.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/llvm_backend_general.cpp') diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 15cbb7c71..22ffbd89c 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -1107,6 +1107,12 @@ gb_internal lbValue lb_emit_load(lbProcedure *p, lbValue value) { GB_ASSERT(is_type_pointer(value.type)); Type *t = type_deref(value.type); LLVMValueRef v = LLVMBuildLoad2(p->builder, lb_type(p->module, t), value.value, ""); + + u64 is_packed = lb_get_metadata_custom_u64(p->module, v, ODIN_METADATA_IS_PACKED); + if (is_packed != 0) { + LLVMSetAlignment(v, 1); + } + return lbValue{v, t}; } -- cgit v1.2.3 From 1d3c061add30bf517bd7bffbbdfc0a7900bef2fd Mon Sep 17 00:00:00 2001 From: gingerBill Date: Tue, 7 May 2024 15:52:13 +0100 Subject: Fix typo --- src/llvm_backend_general.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/llvm_backend_general.cpp') diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index 22ffbd89c..9caddfb51 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -1108,7 +1108,7 @@ gb_internal lbValue lb_emit_load(lbProcedure *p, lbValue value) { Type *t = type_deref(value.type); LLVMValueRef v = LLVMBuildLoad2(p->builder, lb_type(p->module, t), value.value, ""); - u64 is_packed = lb_get_metadata_custom_u64(p->module, v, ODIN_METADATA_IS_PACKED); + u64 is_packed = lb_get_metadata_custom_u64(p->module, value.value, ODIN_METADATA_IS_PACKED); if (is_packed != 0) { LLVMSetAlignment(v, 1); } -- cgit v1.2.3