From b3a9843cd19039808a812ca11206881c94c64e3b Mon Sep 17 00:00:00 2001 From: Victor Stinner Date: Fri, 24 May 2019 15:16:08 +0200 Subject: Support Py_UNUSED() on clang (GH-13544) --- Doc/c-api/intro.rst | 2 +- Include/pymacro.h | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/Doc/c-api/intro.rst b/Doc/c-api/intro.rst index b003bba..672936a 100644 --- a/Doc/c-api/intro.rst +++ b/Doc/c-api/intro.rst @@ -156,7 +156,7 @@ complete listing. .. c:macro:: Py_UNUSED(arg) Use this for unused arguments in a function definition to silence compiler - warnings, e.g. ``PyObject* func(PyObject *Py_UNUSED(ignored))``. + warnings. Example: ``int func(int a, int Py_UNUSED(b)) { return a; }``. .. versionadded:: 3.4 diff --git a/Include/pymacro.h b/Include/pymacro.h index 546f9c6..1890619 100644 --- a/Include/pymacro.h +++ b/Include/pymacro.h @@ -89,10 +89,15 @@ /* Check if pointer "p" is aligned to "a"-bytes boundary. */ #define _Py_IS_ALIGNED(p, a) (!((uintptr_t)(p) & (uintptr_t)((a) - 1))) -#ifdef __GNUC__ -#define Py_UNUSED(name) _unused_ ## name __attribute__((unused)) +/* Use this for unused arguments in a function definition to silence compiler + * warnings. Example: + * + * int func(int a, int Py_UNUSED(b)) { return a; } + */ +#if defined(__GNUC__) || defined(__clang__) +# define Py_UNUSED(name) _unused_ ## name __attribute__((unused)) #else -#define Py_UNUSED(name) _unused_ ## name +# define Py_UNUSED(name) _unused_ ## name #endif #define Py_UNREACHABLE() abort() -- cgit v0.12