Edit: Oh right, you're talking about x86-64 and I'm blind. The preceding only applies to i386.
Um.
Well, I was actually trying to talk about both architectures, and potentially others. I was in fact under the impression that stdcall was the default, so I'm surprised to learn otherwise.
From some quick regex-based searches, I can't easily find an example in the Microsoft headers of a documented function that's declared without a calling convention. (There are few I could easily find that aren't documented, but that's it). I can however find plenty of cases of *callbacks* that are declared without calling conventions. I haven't tried to test any of these to see if Windows will handle cdecl and stdcall versions, but the results may not be interesting even if I do.
At least two of these examples are declared with stdcall in Wine headers (MFPERIODICCALLBACK, LPFNADDPROPSHEETPAGE). There are almost certainly others. I was aware of this discrepancy and assumed that all callbacks should have that stdcall decoration. If you're right, then these callbacks are wrong, and we should probably do a holistic check to find any other such cases.
Since gcc defaults to cdecl, we use -mabi=ms on x86_64, and I think ARM has an identical ABI across machines, I think we just want to omit the decorations, rather than explicitly writing __cdecl?