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 9092 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
|