This is a patch for bug 10645, which adds ABI support for MSVC's
thiscall calling convention.  Though Microsoft doesn't document this,
the observed behavior is that *all* byval struct returns for thiscall
methods are passed through the hidden pointer in EAX, and
callee-cleaned.  This happens even for small structures which would
normally be returned by EAX or EAX/EDX.

There are two parts to this -- one in llvm's x86 calling convention
tablegen (so that the hidden parameter is not passed in ecx), and the
other is in clang (so that all byval structure return types for
thiscall are returned by hidden pointer when in MS mode).

I've got a few questions though:

Should I have the tablegen only change for MS compatibility?  If so,
I'm not certain of how to do that from the td file.

I'm not certain what the testcase should look like and where it should
live (llvm or clang or both?), or is none needed for this?

Thanks!

~Aaron

Attachment: msvc thiscall clang.patch
Description: Binary data

Attachment: msvc thiscall llvm.patch
Description: Binary data

_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits

Reply via email to