On Tue, Mar 1, 2022 at 1:57 PM Patchwork patchwork@emeril.freedesktop.org wrote:
== Series Details ==
Series: use dynamic-debug under drm.debug api (rev2) URL : https://patchwork.freedesktop.org/series/100289/ State : warning
== Summary ==
$ dim checkpatch origin/drm-tip c2ed9cc02d9c dyndbg: fix static_branch manipulation a8f6c71f283e dyndbg: add class_id field and query support -:141: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'id' - possible side-effects? #141: FILE: include/linux/dynamic_debug.h:142: +#define __dynamic_func_call_cls(id, cls, fmt, func, ...) do { \
DEFINE_DYNAMIC_DEBUG_METADATA_CLS(id, cls, fmt); \
if (DYNAMIC_DEBUG_BRANCH(id)) \
func(&id, ##__VA_ARGS__); \
} while (0)
-:151: CHECK:MACRO_ARG_REUSE: Macro argument reuse 'id' - possible side-effects? #151: FILE: include/linux/dynamic_debug.h:148: +#define __dynamic_func_call_no_desc_cls(id, cls, fmt, func, ...) do { \
DEFINE_DYNAMIC_DEBUG_METADATA_CLS(id, cls, fmt); \
if (DYNAMIC_DEBUG_BRANCH(id)) \
func(__VA_ARGS__); \
} while (0)
Can I get a pass on this ?
the usual approach doesnt work: + typeof(id) id = (id); \
it appears to be due to the outer / wrapping macro inserting the __UNIQUE_ID(ddebug) which gets expanded 2x, giving:
| ^~~~~~~~ /home/jimc/projects/lx/linux.git/include/linux/compiler-gcc.h:42:45: note: previous definition of ‘__UNIQUE_ID_ddebug437’ with type ‘int’ 42 | #define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__) | ^~~~~~~~~~~~ /home/jimc/projects/lx/linux.git/include/linux/dynamic_debug.h:230:20: note: in definition of macro ‘__dynamic_func_call_cls’ 230 | typeof(id) id = (id); \
Moreover, these 2 macros imitate existing macros, which would suffer the same WARNING.
My macro-fu is insufficient, can anyone suggest a clean way to fix this warning ?
tia Jim
dri-devel@lists.freedesktop.org