From 01183d746dec877aac6caf204b7beac2c67ee26c Mon Sep 17 00:00:00 2001 From: Chris Eibl <138194463+chris-eibl@users.noreply.github.com> Date: Sun, 9 Mar 2025 11:50:25 +0100 Subject: [PATCH 1/4] Enable XML_ATTR_MALLOC and XML_ATTR_ALLOC_SIZE for clang-cl on Windows --- Modules/expat/expat_external.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/expat/expat_external.h b/Modules/expat/expat_external.h index 567872b09836e1..8fc0e653e409c5 100644 --- a/Modules/expat/expat_external.h +++ b/Modules/expat/expat_external.h @@ -112,14 +112,14 @@ # define XMLIMPORT #endif -#if defined(__GNUC__) \ +#if defined(__clang__) || defined(__GNUC__) \ && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) # define XML_ATTR_MALLOC __attribute__((__malloc__)) #else # define XML_ATTR_MALLOC #endif -#if defined(__GNUC__) \ +#if defined(__clang__) || defined(__GNUC__) \ && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) # define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) #else From 16a7f4607e8af9934a627d26eff299700ec40a6f Mon Sep 17 00:00:00 2001 From: Chris Eibl <138194463+chris-eibl@users.noreply.github.com> Date: Sun, 9 Mar 2025 11:53:57 +0100 Subject: [PATCH 2/4] Enable UNLIKELY and LIKELY for clang-cl on Windows --- Objects/obmalloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c index 33fca3abfb3509..b18dddb6ecbc22 100644 --- a/Objects/obmalloc.c +++ b/Objects/obmalloc.c @@ -1457,7 +1457,7 @@ PyObject_Free(void *ptr) /* If we're using GCC, use __builtin_expect() to reduce overhead of the valgrind checks */ -#if defined(__GNUC__) && (__GNUC__ > 2) && defined(__OPTIMIZE__) +#if (defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 2))) && defined(__OPTIMIZE__) # define UNLIKELY(value) __builtin_expect((value), 0) # define LIKELY(value) __builtin_expect((value), 1) #else From 1c4a55d9a75fcea3c88ea489f50c1527a30d996a Mon Sep 17 00:00:00 2001 From: Chris Eibl <138194463+chris-eibl@users.noreply.github.com> Date: Mon, 10 Mar 2025 09:33:38 +0100 Subject: [PATCH 3/4] Revert "Enable XML_ATTR_MALLOC and XML_ATTR_ALLOC_SIZE " This reverts commit 01183d746dec877aac6caf204b7beac2c67ee26c. --- Modules/expat/expat_external.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Modules/expat/expat_external.h b/Modules/expat/expat_external.h index 8fc0e653e409c5..567872b09836e1 100644 --- a/Modules/expat/expat_external.h +++ b/Modules/expat/expat_external.h @@ -112,14 +112,14 @@ # define XMLIMPORT #endif -#if defined(__clang__) || defined(__GNUC__) \ +#if defined(__GNUC__) \ && (__GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 96)) # define XML_ATTR_MALLOC __attribute__((__malloc__)) #else # define XML_ATTR_MALLOC #endif -#if defined(__clang__) || defined(__GNUC__) \ +#if defined(__GNUC__) \ && ((__GNUC__ > 4) || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)) # define XML_ATTR_ALLOC_SIZE(x) __attribute__((__alloc_size__(x))) #else From 577bba7155e0cd83bef4e1c37739a4860ec3231f Mon Sep 17 00:00:00 2001 From: Chris Eibl <138194463+chris-eibl@users.noreply.github.com> Date: Mon, 25 Aug 2025 22:04:39 +0200 Subject: [PATCH 4/4] update comment --- Objects/obmalloc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Objects/obmalloc.c b/Objects/obmalloc.c index b18dddb6ecbc22..5a3224016253af 100644 --- a/Objects/obmalloc.c +++ b/Objects/obmalloc.c @@ -1455,7 +1455,7 @@ PyObject_Free(void *ptr) } -/* If we're using GCC, use __builtin_expect() to reduce overhead of +/* Use __builtin_expect() where available to reduce overhead of the valgrind checks */ #if (defined(__clang__) || (defined(__GNUC__) && (__GNUC__ > 2))) && defined(__OPTIMIZE__) # define UNLIKELY(value) __builtin_expect((value), 0)