clang 20.1.8+21.1.1: __stdcall__ warning only from Cygwin version
Jeremy Drake
cygwin@jdrake.com
Sat Sep 13 00:14:00 GMT 2025
On 2025年9月12日, Jeremy Drake via Cygwin wrote:
> On 2025年9月12日, Christian Franke via Cygwin wrote:
>> > First of all: thanks for providing recent clang packages!
> >
> > Testcase:
> >
> > $ cat winapi.c
> > #include <windows.h>
> > int WINAPI SomeDllFunction(int, int, int, int, int);
> >
> > int call_it()
> > {
> > return SomeDllFunction(1, 2, 3, 4, 5);
> > }
> >
> > $ clang -S winapi.c # with 20.1.8 and 21.1.1
> > winapi.c:2:5: warning: '__stdcall__' calling convention is not supported
> > for this target
> > [-Wignored-attributes]
> > 2 | int WINAPI SomeDllFunction(int, int, int, int, int);
> > | ^
> > /usr/include/w32api/minwindef.h:98:16: note: expanded from macro 'WINAPI'
> > 98 | #define WINAPI __stdcall
> > | ^
> > <built-in>:400:34: note: expanded from macro '__stdcall'
> > 400 | #define __stdcall __attribute__((__stdcall__))
> > | ^
> > 1 warning generated.
> >
>> I was wondering about this one when trying to figure out what Windows
> behaviors should be enabled for Cygwin. It is a fact that x86_64 doesn't
> support stdcall/thiscall/fastcall, but for Windows targets those calling
> conventions are silently ignored rather than warned about.
>> Another thing that's got me confused in that vicinity is sysv_abi vs
> ms_abi calling convention attribute. I think Cygwin defaults to ms_abi
> so should allow __attribute__((sysv_abi)) to override, but I think it
> would warn about that.
https://github.com/llvm/llvm-project/pull/158385 if you're interested in
following it.
More information about the Cygwin
mailing list