summaryrefslogtreecommitdiffstats
path: root/clang/lib/Basic/Targets/AArch64.cpp
diff options
context:
space:
mode:
authorSanjin Sijaric <ssijaric@codeaurora.org>2018-07-26 22:18:28 +0000
committerSanjin Sijaric <ssijaric@codeaurora.org>2018-07-26 22:18:28 +0000
commit56391d6f848013d3b2847d2e4366165296901981 (patch)
tree43a757d9f88699dbb010fee9724d41b7c3996f45 /clang/lib/Basic/Targets/AArch64.cpp
parent23df1319ca76f867a83634d74ba78377569e29b1 (diff)
downloadbcm5719-llvm-56391d6f848013d3b2847d2e4366165296901981.tar.gz
bcm5719-llvm-56391d6f848013d3b2847d2e4366165296901981.zip
[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
Diffstat (limited to 'clang/lib/Basic/Targets/AArch64.cpp')
-rw-r--r--clang/lib/Basic/Targets/AArch64.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp
index 1665a214354..3444591ac59 100644
--- a/clang/lib/Basic/Targets/AArch64.cpp
+++ b/clang/lib/Basic/Targets/AArch64.cpp
@@ -533,6 +533,11 @@ void MicrosoftARM64TargetInfo::getTargetDefines(const LangOptions &Opts,
getVisualStudioDefines(Opts, Builder);
}
+TargetInfo::CallingConvKind
+MicrosoftARM64TargetInfo::getCallingConvKind(bool ClangABICompat4) const {
+ return CCK_MicrosoftWin64;
+}
+
MinGWARM64TargetInfo::MinGWARM64TargetInfo(const llvm::Triple &Triple,
const TargetOptions &Opts)
: WindowsARM64TargetInfo(Triple, Opts) {
OpenPOWER on IntegriCloud