From 7bd30423d3cd8ed7e0dbd33a9b2500b4ba0a78b5 Mon Sep 17 00:00:00 2001 From: Vitaly Buka Date: Wed, 15 Oct 2025 18:20:25 -0700 Subject: [PATCH] =?UTF-8?q?[=F0=9D=98=80=F0=9D=97=BD=F0=9D=97=BF]=20change?= =?UTF-8?q?s=20to=20main=20this=20commit=20is=20based=20on?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Created using spr 1.3.6 [skip ci] --- compiler-rt/lib/asan/asan_fake_stack.cpp | 16 ++++++++++++---- compiler-rt/lib/asan/asan_fake_stack.h | 2 +- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/compiler-rt/lib/asan/asan_fake_stack.cpp b/compiler-rt/lib/asan/asan_fake_stack.cpp index 5034ea2a0e459..d243b5739a309 100644 --- a/compiler-rt/lib/asan/asan_fake_stack.cpp +++ b/compiler-rt/lib/asan/asan_fake_stack.cpp @@ -231,17 +231,25 @@ static FakeStack* GetFakeStack() { } static FakeStack* GetFakeStackFast() { - if (FakeStack* fs = GetTLSFakeStack()) + FakeStack* fs = GetTLSFakeStack(); + if (LIKELY(fs)) return fs; if (!__asan_option_detect_stack_use_after_return) return nullptr; - return GetFakeStack(); + fs = GetFakeStack(); + if (LIKELY(fs)) + SetTLSFakeStack(fs); + return fs; } static FakeStack* GetFakeStackFastAlways() { - if (FakeStack* fs = GetTLSFakeStack()) + FakeStack* fs = GetTLSFakeStack(); + if (LIKELY(fs)) return fs; - return GetFakeStack(); + fs = GetFakeStack(); + if (LIKELY(fs)) + SetTLSFakeStack(fs); + return fs; } static ALWAYS_INLINE uptr OnMalloc(uptr class_id, uptr size) { diff --git a/compiler-rt/lib/asan/asan_fake_stack.h b/compiler-rt/lib/asan/asan_fake_stack.h index ec772c3299f00..7dedb29809d22 100644 --- a/compiler-rt/lib/asan/asan_fake_stack.h +++ b/compiler-rt/lib/asan/asan_fake_stack.h @@ -195,7 +195,7 @@ class FakeStack { void *true_start; }; -void SetTLSFakeStack(FakeStack *fs); +void SetTLSFakeStack(FakeStack* fs); } // namespace __asan