[ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs
authorSanjin Sijaric <ssijaric@codeaurora.org>
Thu, 26 Jul 2018 22:18:28 +0000 (22:18 +0000)
committerSanjin Sijaric <ssijaric@codeaurora.org>
Thu, 26 Jul 2018 22:18:28 +0000 (22:18 +0000)
commit56391d6f848013d3b2847d2e4366165296901981
tree43a757d9f88699dbb010fee9724d41b7c3996f45
parent23df1319ca76f867a83634d74ba78377569e29b1
[ARM64] [Windows] Follow MS X86_64 C++ ABI when passing structs

Summary: Microsoft's C++ object model for ARM64 is the same as that for X86_64.
For example, small structs with non-trivial copy constructors or virtual
function tables are passed indirectly.  Currently, they are passed in registers
when compiled with clang.

Reviewers: rnk, mstorsjo, TomTan, haripul, javed.absar

Reviewed By: rnk, mstorsjo

Subscribers: kristof.beyls, chrib, llvm-commits, cfe-commits

Differential Revision: https://reviews.llvm.org/D49770

llvm-svn: 338076
clang/include/clang/Basic/TargetInfo.h
clang/lib/Basic/Targets/AArch64.cpp
clang/lib/Basic/Targets/AArch64.h
clang/lib/Basic/Targets/X86.h
clang/lib/CodeGen/MicrosoftCXXABI.cpp
clang/lib/Sema/SemaDeclCXX.cpp
clang/test/CodeGenCXX/microsoft-abi-sret-and-byval.cpp