[PATCH] MS ABI: Pass 'sret' as the second parameter of instance methods

Reid Kleckner rnk at google.com
Mon May 5 17:54:35 PDT 2014


Hi rsmith, majnemer,

MSVC always passes 'sret' after 'this', unlike GCC.  This required
changing a number of places in Clang that assumed the sret parameter was
always first in LLVM IR.

This fixes win64 MSVC ABI compatibility for methods returning structs.

http://reviews.llvm.org/D3618

Files:
  include/clang/CodeGen/CGFunctionInfo.h
  lib/CodeGen/CGCXXABI.h
  lib/CodeGen/CGCall.cpp
  lib/CodeGen/CodeGenFunction.cpp
  lib/CodeGen/MicrosoftCXXABI.cpp
  lib/CodeGen/TargetInfo.cpp
  test/CodeGenCXX/microsoft-abi-cdecl-method-sret.cpp
  test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp
  test/CodeGenCXX/microsoft-abi-virtual-member-pointers.cpp
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D3618.9092.patch
Type: text/x-patch
Size: 18112 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20140506/f10ee190/attachment.bin>


More information about the cfe-commits mailing list