Skip to content

Commit 15127a3

Browse files
SC llvm teamSC llvm team
SC llvm team
authored and
SC llvm team
committed
Merged main:6f215ca680fd into amd-gfx:e4c95cb9a7ae
Local branch amd-gfx e4c95cb Merged main:9df0568b0733 into amd-gfx:e66d351d8224 Remote branch main 6f215ca [SelectionDAG] Add support to widen ISD::STEP_VECTOR operations.
2 parents e4c95cb + 6f215ca commit 15127a3

File tree

108 files changed

+867
-507
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

108 files changed

+867
-507
lines changed

clang/lib/Analysis/FlowSensitive/DataflowEnvironment.cpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -239,9 +239,6 @@ bool Environment::equivalentTo(const Environment &Other,
239239
if (ExprToLoc != Other.ExprToLoc)
240240
return false;
241241

242-
if (MemberLocToStruct != Other.MemberLocToStruct)
243-
return false;
244-
245242
// Compare the contents for the intersection of their domains.
246243
for (auto &Entry : LocToVal) {
247244
const StorageLocation *Loc = Entry.first;

clang/lib/Analysis/FlowSensitive/TypeErasedDataflowAnalysis.cpp

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//
1212
//===----------------------------------------------------------------------===//
1313

14+
#include <algorithm>
1415
#include <memory>
1516
#include <system_error>
1617
#include <utility>
@@ -330,10 +331,17 @@ runTypeErasedDataflowAnalysis(const ControlFlowContext &CFCtx,
330331
// converging. To limit the damage (infinite loops) that these bugs can cause,
331332
// limit the number of iterations.
332333
// FIXME: Consider making the maximum number of iterations configurable.
334+
// FIXME: Consider restricting the number of backedges followed, rather than
335+
// iterations.
333336
// FIXME: Set up statistics (see llvm/ADT/Statistic.h) to count average number
334337
// of iterations, number of functions that time out, etc.
338+
static constexpr uint32_t MaxAverageVisitsPerBlock = 4;
339+
static constexpr uint32_t AbsoluteMaxIterations = 1 << 16;
340+
const uint32_t RelativeMaxIterations =
341+
MaxAverageVisitsPerBlock * BlockStates.size();
342+
const uint32_t MaxIterations =
343+
std::min(RelativeMaxIterations, AbsoluteMaxIterations);
335344
uint32_t Iterations = 0;
336-
static constexpr uint32_t MaxIterations = 1 << 16;
337345
while (const CFGBlock *Block = Worklist.dequeue()) {
338346
if (++Iterations > MaxIterations) {
339347
return llvm::createStringError(std::errc::timed_out,

clang/test/Index/index-concept-kind.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: c-index-test -index-file %s -std=gnu++20 | FileCheck %s
2-
2+
// UNSUPPORTED: aix
33
template <typename T>
44
concept LargeType = sizeof(T) > 8;
55
// CHECK: [indexDeclaration]: kind: concept | name: LargeType | USR: c:@CT@LargeType | lang: C | cursor: ConceptDecl=LargeType:[[@LINE-1]]:9 (Definition) | loc: [[@LINE-1]]:9 | semantic-container: [TU] | lexical-container: [TU] | isRedecl: 0 | isDef: 1 | isContainer: 0 | isImplicit: 0

clang/test/Index/index-concepts.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
// RUN: c-index-test -test-load-source all %s -std=gnu++20 -fno-delayed-template-parsing | FileCheck %s
2-
2+
// UNSUPPORTED: aix
33
template<class T>
44
struct type_trait {
55
const static bool value = false;

clang/unittests/Analysis/FlowSensitive/TransferTest.cpp

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3120,4 +3120,59 @@ TEST_F(TransferTest, LoopWithReferenceAssignmentConverges) {
31203120
});
31213121
}
31223122

3123+
TEST_F(TransferTest, LoopWithStructReferenceAssignmentConverges) {
3124+
std::string Code = R"(
3125+
struct Lookup {
3126+
int x;
3127+
};
3128+
3129+
void target(Lookup val, bool b) {
3130+
const Lookup* l = nullptr;
3131+
while (b) {
3132+
l = &val;
3133+
/*[[p-inner]]*/
3134+
}
3135+
(void)0;
3136+
/*[[p-outer]]*/
3137+
}
3138+
)";
3139+
// The key property that we are verifying is implicit in `runDataflow` --
3140+
// namely, that the analysis succeeds, rather than hitting the maximum number
3141+
// of iterations.
3142+
runDataflow(
3143+
Code, [](llvm::ArrayRef<
3144+
std::pair<std::string, DataflowAnalysisState<NoopLattice>>>
3145+
Results,
3146+
ASTContext &ASTCtx) {
3147+
ASSERT_THAT(Results,
3148+
ElementsAre(Pair("p-outer", _), Pair("p-inner", _)));
3149+
const Environment &OuterEnv = Results[0].second.Env;
3150+
const Environment &InnerEnv = Results[1].second.Env;
3151+
3152+
const ValueDecl *ValDecl = findValueDecl(ASTCtx, "val");
3153+
ASSERT_THAT(ValDecl, NotNull());
3154+
3155+
const ValueDecl *LDecl = findValueDecl(ASTCtx, "l");
3156+
ASSERT_THAT(LDecl, NotNull());
3157+
3158+
// Inner.
3159+
auto *LVal = dyn_cast<IndirectionValue>(
3160+
InnerEnv.getValue(*LDecl, SkipPast::None));
3161+
ASSERT_THAT(LVal, NotNull());
3162+
3163+
EXPECT_EQ(&LVal->getPointeeLoc(),
3164+
InnerEnv.getStorageLocation(*ValDecl, SkipPast::Reference));
3165+
3166+
// Outer.
3167+
LVal = dyn_cast<IndirectionValue>(
3168+
OuterEnv.getValue(*LDecl, SkipPast::None));
3169+
ASSERT_THAT(LVal, NotNull());
3170+
3171+
// The loop body may not have been executed, so we should not conclude
3172+
// that `l` points to `val`.
3173+
EXPECT_NE(&LVal->getPointeeLoc(),
3174+
OuterEnv.getStorageLocation(*ValDecl, SkipPast::Reference));
3175+
});
3176+
}
3177+
31233178
} // namespace

compiler-rt/lib/asan/asan_flags.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ void InitializeFlags() {
8787
RegisterCommonFlags(&ubsan_parser);
8888
#endif
8989

90-
if (SANITIZER_MAC) {
90+
if (SANITIZER_APPLE) {
9191
// Support macOS MallocScribble and MallocPreScribble:
9292
// <https://developer.apple.com/library/content/documentation/Performance/
9393
// Conceptual/ManagingMemory/Articles/MallocDebug.html>

compiler-rt/lib/asan/asan_flags.inc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@ ASAN_FLAG(bool, poison_array_cookie, true,
122122
// https://github.com/google/sanitizers/issues/309
123123
// TODO(glider,timurrrr): Fix known issues and enable this back.
124124
ASAN_FLAG(bool, alloc_dealloc_mismatch,
125-
!SANITIZER_MAC && !SANITIZER_WINDOWS && !SANITIZER_ANDROID,
125+
!SANITIZER_APPLE && !SANITIZER_WINDOWS && !SANITIZER_ANDROID,
126126
"Report errors on malloc/delete, new/free, new/delete[], etc.")
127127

128128
ASAN_FLAG(bool, new_delete_type_mismatch, true,

compiler-rt/lib/asan/asan_interceptors.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ DECLARE_REAL_AND_INTERCEPTOR(void, free, void *)
103103
do { \
104104
if (asan_init_is_running) \
105105
return REAL(func)(__VA_ARGS__); \
106-
if (SANITIZER_MAC && UNLIKELY(!asan_inited)) \
106+
if (SANITIZER_APPLE && UNLIKELY(!asan_inited)) \
107107
return REAL(func)(__VA_ARGS__); \
108108
ENSURE_ASAN_INITED(); \
109109
} while (false)
@@ -355,7 +355,7 @@ INTERCEPTOR(_Unwind_Reason_Code, _Unwind_SjLj_RaiseException,
355355
INTERCEPTOR(char*, index, const char *string, int c)
356356
ALIAS(WRAPPER_NAME(strchr));
357357
# else
358-
# if SANITIZER_MAC
358+
# if SANITIZER_APPLE
359359
DECLARE_REAL(char*, index, const char *string, int c)
360360
OVERRIDE_FUNCTION(index, strchr);
361361
# else
@@ -409,7 +409,7 @@ INTERCEPTOR(char*, strncat, char *to, const char *from, uptr size) {
409409
INTERCEPTOR(char *, strcpy, char *to, const char *from) {
410410
void *ctx;
411411
ASAN_INTERCEPTOR_ENTER(ctx, strcpy);
412-
#if SANITIZER_MAC
412+
#if SANITIZER_APPLE
413413
if (UNLIKELY(!asan_inited))
414414
return REAL(strcpy)(to, from);
415415
#endif
@@ -489,7 +489,7 @@ INTERCEPTOR(long, strtol, const char *nptr, char **endptr, int base) {
489489
INTERCEPTOR(int, atoi, const char *nptr) {
490490
void *ctx;
491491
ASAN_INTERCEPTOR_ENTER(ctx, atoi);
492-
#if SANITIZER_MAC
492+
#if SANITIZER_APPLE
493493
if (UNLIKELY(!asan_inited)) return REAL(atoi)(nptr);
494494
#endif
495495
ENSURE_ASAN_INITED();
@@ -510,7 +510,7 @@ INTERCEPTOR(int, atoi, const char *nptr) {
510510
INTERCEPTOR(long, atol, const char *nptr) {
511511
void *ctx;
512512
ASAN_INTERCEPTOR_ENTER(ctx, atol);
513-
#if SANITIZER_MAC
513+
#if SANITIZER_APPLE
514514
if (UNLIKELY(!asan_inited)) return REAL(atol)(nptr);
515515
#endif
516516
ENSURE_ASAN_INITED();
@@ -563,7 +563,7 @@ static void AtCxaAtexit(void *unused) {
563563
#if ASAN_INTERCEPT___CXA_ATEXIT
564564
INTERCEPTOR(int, __cxa_atexit, void (*func)(void *), void *arg,
565565
void *dso_handle) {
566-
#if SANITIZER_MAC
566+
#if SANITIZER_APPLE
567567
if (UNLIKELY(!asan_inited)) return REAL(__cxa_atexit)(func, arg, dso_handle);
568568
#endif
569569
ENSURE_ASAN_INITED();

compiler-rt/lib/asan/asan_interceptors.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ DECLARE_REAL(char*, strncpy, char *to, const char *from, uptr size)
133133
DECLARE_REAL(uptr, strnlen, const char *s, uptr maxlen)
134134
DECLARE_REAL(char*, strstr, const char *s1, const char *s2)
135135

136-
# if !SANITIZER_MAC
136+
# if !SANITIZER_APPLE
137137
# define ASAN_INTERCEPT_FUNC(name) \
138138
do { \
139139
if (!INTERCEPT_FUNCTION(name)) \
@@ -156,7 +156,7 @@ DECLARE_REAL(char*, strstr, const char *s1, const char *s2)
156156
# else
157157
// OS X interceptors don't need to be initialized with INTERCEPT_FUNCTION.
158158
# define ASAN_INTERCEPT_FUNC(name)
159-
# endif // SANITIZER_MAC
159+
# endif // SANITIZER_APPLE
160160

161161
#endif // !SANITIZER_FUCHSIA
162162

compiler-rt/lib/asan/asan_mac.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "sanitizer_common/sanitizer_platform.h"
15-
#if SANITIZER_MAC
15+
#if SANITIZER_APPLE
1616

1717
#include "asan_interceptors.h"
1818
#include "asan_internal.h"
@@ -296,4 +296,4 @@ INTERCEPTOR(void, dispatch_source_set_event_handler,
296296
}
297297
#endif
298298

299-
#endif // SANITIZER_MAC
299+
#endif // SANITIZER_APPLE

compiler-rt/lib/asan/asan_malloc_mac.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
//===----------------------------------------------------------------------===//
1313

1414
#include "sanitizer_common/sanitizer_platform.h"
15-
#if SANITIZER_MAC
15+
#if SANITIZER_APPLE
1616

1717
#include "asan_interceptors.h"
1818
#include "asan_report.h"

compiler-rt/lib/asan/asan_mapping.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,7 @@
174174
#else
175175
# if SANITIZER_IOS
176176
# define ASAN_SHADOW_OFFSET_DYNAMIC
177-
# elif SANITIZER_MAC && defined(__aarch64__)
177+
# elif SANITIZER_APPLE && defined(__aarch64__)
178178
# define ASAN_SHADOW_OFFSET_DYNAMIC
179179
# elif SANITIZER_RISCV64
180180
# define ASAN_SHADOW_OFFSET_CONST 0x0000000d55550000
@@ -188,7 +188,7 @@
188188
# define ASAN_SHADOW_OFFSET_CONST 0x0000400000000000
189189
# elif SANITIZER_NETBSD
190190
# define ASAN_SHADOW_OFFSET_CONST 0x0000400000000000
191-
# elif SANITIZER_MAC
191+
# elif SANITIZER_APPLE
192192
# define ASAN_SHADOW_OFFSET_CONST 0x0000100000000000
193193
# elif defined(__mips64)
194194
# define ASAN_SHADOW_OFFSET_CONST 0x0000002000000000

compiler-rt/lib/asan/asan_new_delete.cpp

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ enum class align_val_t: size_t {};
8989
// delete.
9090
// To make sure that C++ allocation/deallocation operators are overridden on
9191
// OS X we need to intercept them using their mangled names.
92-
#if !SANITIZER_MAC
92+
#if !SANITIZER_APPLE
9393
CXX_OPERATOR_ATTRIBUTE
9494
void *operator new(size_t size)
9595
{ OPERATOR_NEW_BODY(FROM_NEW, false /*nothrow*/); }
@@ -115,7 +115,7 @@ CXX_OPERATOR_ATTRIBUTE
115115
void *operator new[](size_t size, std::align_val_t align, std::nothrow_t const&)
116116
{ OPERATOR_NEW_BODY_ALIGN(FROM_NEW_BR, true /*nothrow*/); }
117117

118-
#else // SANITIZER_MAC
118+
#else // SANITIZER_APPLE
119119
INTERCEPTOR(void *, _Znwm, size_t size) {
120120
OPERATOR_NEW_BODY(FROM_NEW, false /*nothrow*/);
121121
}
@@ -128,7 +128,7 @@ INTERCEPTOR(void *, _ZnwmRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
128128
INTERCEPTOR(void *, _ZnamRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
129129
OPERATOR_NEW_BODY(FROM_NEW_BR, true /*nothrow*/);
130130
}
131-
#endif // !SANITIZER_MAC
131+
#endif // !SANITIZER_APPLE
132132

133133
#define OPERATOR_DELETE_BODY(type) \
134134
GET_STACK_TRACE_FREE; \
@@ -146,7 +146,7 @@ INTERCEPTOR(void *, _ZnamRKSt9nothrow_t, size_t size, std::nothrow_t const&) {
146146
GET_STACK_TRACE_FREE; \
147147
asan_delete(ptr, size, static_cast<uptr>(align), &stack, type);
148148

149-
#if !SANITIZER_MAC
149+
#if !SANITIZER_APPLE
150150
CXX_OPERATOR_ATTRIBUTE
151151
void operator delete(void *ptr) NOEXCEPT
152152
{ OPERATOR_DELETE_BODY(FROM_NEW); }
@@ -184,7 +184,7 @@ CXX_OPERATOR_ATTRIBUTE
184184
void operator delete[](void *ptr, size_t size, std::align_val_t align) NOEXCEPT
185185
{ OPERATOR_DELETE_BODY_SIZE_ALIGN(FROM_NEW_BR); }
186186

187-
#else // SANITIZER_MAC
187+
#else // SANITIZER_APPLE
188188
INTERCEPTOR(void, _ZdlPv, void *ptr)
189189
{ OPERATOR_DELETE_BODY(FROM_NEW); }
190190
INTERCEPTOR(void, _ZdaPv, void *ptr)
@@ -193,4 +193,4 @@ INTERCEPTOR(void, _ZdlPvRKSt9nothrow_t, void *ptr, std::nothrow_t const&)
193193
{ OPERATOR_DELETE_BODY(FROM_NEW); }
194194
INTERCEPTOR(void, _ZdaPvRKSt9nothrow_t, void *ptr, std::nothrow_t const&)
195195
{ OPERATOR_DELETE_BODY(FROM_NEW_BR); }
196-
#endif // !SANITIZER_MAC
196+
#endif // !SANITIZER_APPLE

compiler-rt/lib/asan/tests/asan_noinst_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,7 +282,7 @@ TEST(AddressSanitizer, LoadStoreCallbacks) {
282282
}
283283

284284
#if defined(__x86_64__) && \
285-
!(defined(SANITIZER_MAC) || defined(SANITIZER_WINDOWS))
285+
!(defined(SANITIZER_APPLE) || defined(SANITIZER_WINDOWS))
286286
// clang-format off
287287

288288
#define CALL_ASAN_MEMORY_ACCESS_CALLBACK_ADD(s, reg, op) \

compiler-rt/lib/asan/tests/asan_test_main.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414

1515
// Default ASAN_OPTIONS for the unit tests.
1616
extern "C" const char* __asan_default_options() {
17-
#if SANITIZER_MAC
17+
#if SANITIZER_APPLE
1818
// On Darwin, we default to `abort_on_error=1`, which would make tests run
1919
// much slower. Let's override this and run lit tests with 'abort_on_error=0'
2020
// and make sure we do not overwhelm the syslog while testing. Also, let's
@@ -35,7 +35,7 @@ extern "C" const char* __asan_default_options() {
3535

3636
namespace __sanitizer {
3737
bool ReexecDisabled() {
38-
#if __has_feature(address_sanitizer) && SANITIZER_MAC
38+
#if __has_feature(address_sanitizer) && SANITIZER_APPLE
3939
// Allow re-exec in instrumented unit tests on Darwin. Technically, we only
4040
// need this for 10.10 and below, where re-exec is required for the
4141
// interceptors to work, but to avoid duplicating the version detection logic,

compiler-rt/lib/interception/interception.h

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616

1717
#include "sanitizer_common/sanitizer_internal_defs.h"
1818

19-
#if !SANITIZER_LINUX && !SANITIZER_FREEBSD && !SANITIZER_MAC && \
19+
#if !SANITIZER_LINUX && !SANITIZER_FREEBSD && !SANITIZER_APPLE && \
2020
!SANITIZER_NETBSD && !SANITIZER_WINDOWS && !SANITIZER_FUCHSIA && \
2121
!SANITIZER_SOLARIS
2222
# error "Interception doesn't work on this operating system."
@@ -88,7 +88,7 @@ typedef __sanitizer::OFF64_T OFF64_T;
8888
// As it's decided at compile time which functions are to be intercepted on Mac,
8989
// INTERCEPT_FUNCTION() is effectively a no-op on this system.
9090

91-
#if SANITIZER_MAC
91+
#if SANITIZER_APPLE
9292
#include <sys/cdefs.h> // For __DARWIN_ALIAS_C().
9393

9494
// Just a pair of pointers.
@@ -157,7 +157,7 @@ const interpose_substitution substitution_##func_name[] \
157157
# define INTERCEPTOR_ATTRIBUTE __attribute__((visibility("default")))
158158
# define REAL(x) __unsanitized_##x
159159
# define DECLARE_REAL(ret_type, func, ...)
160-
#elif !SANITIZER_MAC
160+
#elif !SANITIZER_APPLE
161161
# define PTR_TO_REAL(x) real_##x
162162
# define REAL(x) __interception::PTR_TO_REAL(x)
163163
# define FUNC_TYPE(x) x##_type
@@ -168,12 +168,12 @@ const interpose_substitution substitution_##func_name[] \
168168
extern FUNC_TYPE(func) PTR_TO_REAL(func); \
169169
}
170170
# define ASSIGN_REAL(dst, src) REAL(dst) = REAL(src)
171-
#else // SANITIZER_MAC
171+
#else // SANITIZER_APPLE
172172
# define REAL(x) x
173173
# define DECLARE_REAL(ret_type, func, ...) \
174174
extern "C" ret_type func(__VA_ARGS__);
175175
# define ASSIGN_REAL(x, y)
176-
#endif // SANITIZER_MAC
176+
#endif // SANITIZER_APPLE
177177

178178
#if !SANITIZER_FUCHSIA
179179
# define DECLARE_REAL_AND_INTERCEPTOR(ret_type, func, ...) \
@@ -193,7 +193,7 @@ const interpose_substitution substitution_##func_name[] \
193193
// macros does its job. In exceptional cases you may need to call REAL(foo)
194194
// without defining INTERCEPTOR(..., foo, ...). For example, if you override
195195
// foo with an interceptor for other function.
196-
#if !SANITIZER_MAC && !SANITIZER_FUCHSIA
196+
#if !SANITIZER_APPLE && !SANITIZER_FUCHSIA
197197
# define DEFINE_REAL(ret_type, func, ...) \
198198
typedef ret_type (*FUNC_TYPE(func))(__VA_ARGS__); \
199199
namespace __interception { \
@@ -213,7 +213,7 @@ const interpose_substitution substitution_##func_name[] \
213213
__interceptor_##func(__VA_ARGS__); \
214214
extern "C" INTERCEPTOR_ATTRIBUTE ret_type func(__VA_ARGS__)
215215

216-
#elif !SANITIZER_MAC
216+
#elif !SANITIZER_APPLE
217217

218218
#define INTERCEPTOR(ret_type, func, ...) \
219219
DEFINE_REAL(ret_type, func, __VA_ARGS__) \
@@ -226,7 +226,7 @@ const interpose_substitution substitution_##func_name[] \
226226
#define INTERCEPTOR_WITH_SUFFIX(ret_type, func, ...) \
227227
INTERCEPTOR(ret_type, func, __VA_ARGS__)
228228

229-
#else // SANITIZER_MAC
229+
#else // SANITIZER_APPLE
230230

231231
#define INTERCEPTOR_ZZZ(suffix, ret_type, func, ...) \
232232
extern "C" ret_type func(__VA_ARGS__) suffix; \
@@ -278,7 +278,7 @@ typedef unsigned long uptr;
278278
# define INTERCEPT_FUNCTION(func) INTERCEPT_FUNCTION_LINUX_OR_FREEBSD(func)
279279
# define INTERCEPT_FUNCTION_VER(func, symver) \
280280
INTERCEPT_FUNCTION_VER_LINUX_OR_FREEBSD(func, symver)
281-
#elif SANITIZER_MAC
281+
#elif SANITIZER_APPLE
282282
# include "interception_mac.h"
283283
# define INTERCEPT_FUNCTION(func) INTERCEPT_FUNCTION_MAC(func)
284284
# define INTERCEPT_FUNCTION_VER(func, symver) \

0 commit comments

Comments
 (0)