commit 50af5c83371703016f759abfdc0dc654ae888b84 Author: Alexandre Julliard julliard@winehq.org Date: Mon May 6 03:41:07 2019 -0500
winefile: Explicitly mark qsort() callback funtions cdecl.
Signed-off-by: Alexandre Julliard julliard@winehq.org
includes the following snippet:
-static int (*sortFunctions[])(const void* arg1, const void* arg2) = { +static int (CDECL *sortFunctions[])(const void* arg1, const void* arg2) = {
Now include/windef.h #defines CDECL as __cdecl, and include/msvcrt/corecrt.h then #defines __cdecl as __attribute__((__cdecl__)) __attribute__((__force_align_arg_pointer__)).
However, the __force_align_arg_pointer__ attribute only applies to functions, not pointers, and clang 7.0.1 (system compiler on FreeBSD) warns about this:
winefile.c:937:13: warning: '__force_align_arg_pointer__' attribute only applies to functions [-Wignored-attributes]
Is there an easy way around?
(I know we're focusing on GCC, and that's what I usually do, but more often than not GCC has been adding the same warnings that clang already had. Or should we consider this a clang bug?)
Gerald