diff options
| author | gingerBill <gingerBill@users.noreply.github.com> | 2025-10-22 11:27:18 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-22 11:27:18 +0100 |
| commit | 7c2101ea3d0f2dcc0eee433e02c278f9ace45ff8 (patch) | |
| tree | 0bea8abd4f3061fa17c5dbb457e810276b92653d /src | |
| parent | 61424cfbf8d9169d2f68b8c646020114a281c65b (diff) | |
| parent | faa9222fefc831963dd258e3c040333e6d580bb0 (diff) | |
Merge pull request #5812 from Kelimion/data-alignment
Set minimum #load(file, type) alignment to 16 bytes
Diffstat (limited to 'src')
| -rw-r--r-- | src/llvm_backend_general.cpp | 6 | ||||
| -rw-r--r-- | src/types.cpp | 3 |
2 files changed, 7 insertions, 2 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp index aa6f7e014..4ebb40d96 100644 --- a/src/llvm_backend_general.cpp +++ b/src/llvm_backend_general.cpp @@ -2995,11 +2995,12 @@ gb_internal lbValue lb_find_or_add_entity_string_byte_slice_with_type(lbModule * } else { ptr = LLVMConstNull(lb_type(m, t_u8_ptr)); } + i64 align = MINIMUM_SLICE_ALIGNMENT; if (!is_type_u8_slice(slice_type)) { Type *bt = base_type(slice_type); Type *elem = bt->Slice.elem; i64 sz = type_size_of(elem); - i64 align = type_align_of(elem); + align = gb_max(type_align_of(elem), align); GB_ASSERT(sz > 0); GB_ASSERT(align > 0); @@ -3054,11 +3055,12 @@ gb_internal lbValue lb_find_or_add_entity_string16_slice_with_type(lbModule *m, } else { ptr = LLVMConstNull(lb_type(m, t_u8_ptr)); } + i64 align = MINIMUM_SLICE_ALIGNMENT; if (!is_type_u16_slice(slice_type)) { Type *bt = base_type(slice_type); Type *elem = bt->Slice.elem; i64 sz = type_size_of(elem); - i64 align = type_align_of(elem); + align = gb_max(type_align_of(elem), align); GB_ASSERT(sz > 0); GB_ASSERT(align > 0); diff --git a/src/types.cpp b/src/types.cpp index cb830d08d..bf668e5f6 100644 --- a/src/types.cpp +++ b/src/types.cpp @@ -2,6 +2,9 @@ struct Ast; struct Scope; struct Entity; +// NOTE(Jeroen): Minimum alignment for #load(file, <type>) slices +#define MINIMUM_SLICE_ALIGNMENT 16 + enum BasicKind { Basic_Invalid, |