<div dir="ltr">Hello!<div><br></div><div style>This patch addresses the compatibility issue between explicitly specified default calling conventions and implicit ones in overload resolution.  As of now, such implicit conversions are only known in Microsoft ABI.  The corresponding CodeGen already knows about these implicit defaults, so the conversion kind could be just NoOp.</div>

<div style><br></div><div style>The patch covers:</div><div style>* pointers to free functions (__cdecl by default);</div><div style>* references to free functions;</div><div style>* pointers to static member functions and variadic member functions (__cdecl by default);</div>

<div style>* pointers to non-static non-variadic member functions (__thiscall by default);</div><div style>* simultaneous calling convention adjustment and base-to-derived implicit conversion for member functions.</div><div style>

<br></div><div style>The patch does not cover function templates, although the approach to this is exactly the same as for PR15291.</div><div style><br></div><div style>I suppose functions for determining calling convention compatibility could be moved somewhere in TargetCXXABI if needed in other places.</div>

<div style><br></div><div style>Please, review!</div><div style>Suggestions are welcome.</div><div style><br></div><div style>--</div><div style>Alex</div></div>