|
@@ -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;
|