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.
Paths
| Differential D3618
MS ABI: Pass 'sret' as the second parameter of instance methods ClosedPublic Authored by rnk on May 5 2014, 5:54 PM.
Details Summary MSVC always passes 'sret' after 'this', unlike GCC. This required This fixes win64 MSVC ABI compatibility for methods returning structs.
Diff Detail
Event TimelineThis revision is now accepted and ready to land.May 9 2014, 11:41 AM
Revision Contents
Diff 9557 cfe/trunk/include/clang/CodeGen/CGFunctionInfo.h
cfe/trunk/lib/CodeGen/CGCXXABI.h
cfe/trunk/lib/CodeGen/CGCall.cpp
cfe/trunk/lib/CodeGen/CodeGenFunction.cpp
cfe/trunk/lib/CodeGen/MicrosoftCXXABI.cpp
cfe/trunk/lib/CodeGen/TargetInfo.cpp
cfe/trunk/test/CodeGenCXX/microsoft-abi-cdecl-method-sret.cpp
cfe/trunk/test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp
cfe/trunk/test/CodeGenCXX/microsoft-abi-virtual-member-pointers.cpp
|