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
msvc thiscall clang.patch
Description: Binary data
msvc thiscall llvm.patch
Description: Binary data
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
