aboutsummaryrefslogtreecommitdiff
path: root/src/llvm_backend_general.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2024-06-29 16:18:07 +0100
committergingerBill <bill@gingerbill.org>2024-06-29 16:18:07 +0100
commita935ade0d2a6a1cc7936f3ff8f45aaf8aca7df94 (patch)
treeffac8505c886f3841e8778d8e8cc1caac3ae2350 /src/llvm_backend_general.cpp
parentff2d04231389742e3f78bacc1c5e065d87a180fa (diff)
Keep `-sanitize:address` happy with `bit_field` loads
Diffstat (limited to 'src/llvm_backend_general.cpp')
-rw-r--r--src/llvm_backend_general.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/src/llvm_backend_general.cpp b/src/llvm_backend_general.cpp
index 03d0f8b32..ebf721691 100644
--- a/src/llvm_backend_general.cpp
+++ b/src/llvm_backend_general.cpp
@@ -791,6 +791,7 @@ gb_internal void lb_addr_store(lbProcedure *p, lbAddr addr, lbValue value) {
lb_emit_runtime_call(p, "__write_bits", args);
} else if ((addr.bitfield.bit_offset % 8) == 0 &&
(addr.bitfield.bit_size % 8) == 0) {
+ gb_printf_err("Here!\n");
lbValue src = lb_address_from_load_or_generate_local(p, value);
lbValue byte_offset = lb_const_int(p->module, t_uintptr, addr.bitfield.bit_offset/8);
@@ -1162,7 +1163,7 @@ gb_internal lbValue lb_addr_load(lbProcedure *p, lbAddr const &addr) {
lbValue copy_size = byte_size;
lbValue src_offset = lb_emit_conv(p, src, t_u8_ptr);
src_offset = lb_emit_ptr_offset(p, src_offset, byte_offset);
- if (addr.bitfield.bit_offset + dst_byte_size <= total_bitfield_bit_size) {
+ if (addr.bitfield.bit_offset + 8*dst_byte_size <= total_bitfield_bit_size) {
do_mask = true;
copy_size = lb_const_int(p->module, t_uintptr, dst_byte_size);
}