aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--base/runtime/internal.odin4
-rw-r--r--src/llvm_backend_stmt.cpp20
2 files changed, 9 insertions, 15 deletions
diff --git a/base/runtime/internal.odin b/base/runtime/internal.odin
index 5d8c5a4de..bff5b8380 100644
--- a/base/runtime/internal.odin
+++ b/base/runtime/internal.odin
@@ -1107,11 +1107,9 @@ __read_bits :: proc "contextless" (dst, src: [^]byte, offset: uintptr, size: uin
}
}
-@(no_sanitize_address)
-__asan_unpoison_memory_region :: #force_inline proc "contextless" (address: rawptr, size: uint) {
+when .Address in ODIN_SANITIZER_FLAGS {
foreign {
__asan_unpoison_memory_region :: proc "system" (address: rawptr, size: uint) ---
}
- __asan_unpoison_memory_region(address, size)
}
diff --git a/src/llvm_backend_stmt.cpp b/src/llvm_backend_stmt.cpp
index d5e3e4c75..89737a454 100644
--- a/src/llvm_backend_stmt.cpp
+++ b/src/llvm_backend_stmt.cpp
@@ -2918,20 +2918,16 @@ gb_internal void lb_emit_defer_stmts(lbProcedure *p, lbDeferExitKind kind, lbBlo
defer (p->branch_location_pos = prev_token_pos);
// TODO(lucas): In LLVM 21 use the 'use-after-scope' asan option which does this for us.
- #if LLVM_VERSION_MAJOR < 21
- if (kind == lbDeferExit_Return) {
- for_array(i, p->asan_stack_locals) {
- lbValue local = p->asan_stack_locals[i];
+ if (kind == lbDeferExit_Return) {
+ for_array(i, p->asan_stack_locals) {
+ lbValue local = p->asan_stack_locals[i];
- auto args = array_make<lbValue>(temporary_allocator(), 2);
- args[0] = lb_emit_conv(p, local, t_rawptr);
- args[1] = lb_const_int(p->module, t_int, type_size_of(local.type->Pointer.elem));
- lb_emit_runtime_call(p, "__asan_unpoison_memory_region", args);
- }
+ auto args = array_make<lbValue>(temporary_allocator(), 2);
+ args[0] = lb_emit_conv(p, local, t_rawptr);
+ args[1] = lb_const_int(p->module, t_int, type_size_of(local.type->Pointer.elem));
+ lb_emit_runtime_call(p, "__asan_unpoison_memory_region", args);
}
- #else
- #error "Need to implement LLVM 21 'use-after-scope' asan option"
- #endif
+ }
isize count = p->defer_stmts.count;
isize i = count;