diff options
author | Martin Storsjo <martin@martin.st> | 2017-08-13 19:42:17 +0000 |
---|---|---|
committer | Martin Storsjo <martin@martin.st> | 2017-08-13 19:42:17 +0000 |
commit | 31cac7a67c58d0d5e7615089ead35a3ab24ed508 (patch) | |
tree | 2319bea22dd9d38d43071708be759e0d3b250f89 /clang/lib/Basic/Targets/AArch64.cpp | |
parent | 23413195649d0cf6f3860ae8b5fb115b35032075 (diff) | |
download | bcm5719-llvm-31cac7a67c58d0d5e7615089ead35a3ab24ed508.tar.gz bcm5719-llvm-31cac7a67c58d0d5e7615089ead35a3ab24ed508.zip |
[AArch64] Add support for a MinGW AArch64 target
Differential Revision: https://reviews.llvm.org/D36364
llvm-svn: 310798
Diffstat (limited to 'clang/lib/Basic/Targets/AArch64.cpp')
-rw-r--r-- | clang/lib/Basic/Targets/AArch64.cpp | 63 |
1 files changed, 42 insertions, 21 deletions
diff --git a/clang/lib/Basic/Targets/AArch64.cpp b/clang/lib/Basic/Targets/AArch64.cpp index af2e35bb866..0de8727a1a3 100644 --- a/clang/lib/Basic/Targets/AArch64.cpp +++ b/clang/lib/Basic/Targets/AArch64.cpp @@ -414,8 +414,8 @@ void AArch64beTargetInfo::setDataLayout() { resetDataLayout("E-m:e-i8:8:32-i16:16:32-i64:64-i128:128-n32:64-S128"); } -MicrosoftARM64TargetInfo::MicrosoftARM64TargetInfo(const llvm::Triple &Triple, - const TargetOptions &Opts) +WindowsARM64TargetInfo::WindowsARM64TargetInfo(const llvm::Triple &Triple, + const TargetOptions &Opts) : WindowsTargetInfo<AArch64leTargetInfo>(Triple, Opts), Triple(Triple) { // This is an LLP64 platform. @@ -431,35 +431,19 @@ MicrosoftARM64TargetInfo::MicrosoftARM64TargetInfo(const llvm::Triple &Triple, SizeType = UnsignedLongLong; PtrDiffType = SignedLongLong; IntPtrType = SignedLongLong; - - TheCXXABI.set(TargetCXXABI::Microsoft); } -void MicrosoftARM64TargetInfo::setDataLayout() { +void WindowsARM64TargetInfo::setDataLayout() { resetDataLayout("e-m:w-p:64:64-i32:32-i64:64-i128:128-n32:64-S128"); } -void MicrosoftARM64TargetInfo::getVisualStudioDefines( - const LangOptions &Opts, MacroBuilder &Builder) const { - WindowsTargetInfo<AArch64leTargetInfo>::getVisualStudioDefines(Opts, Builder); - Builder.defineMacro("_WIN32", "1"); - Builder.defineMacro("_WIN64", "1"); - Builder.defineMacro("_M_ARM64", "1"); -} - -void MicrosoftARM64TargetInfo::getTargetDefines(const LangOptions &Opts, - MacroBuilder &Builder) const { - WindowsTargetInfo::getTargetDefines(Opts, Builder); - getVisualStudioDefines(Opts, Builder); -} - TargetInfo::BuiltinVaListKind -MicrosoftARM64TargetInfo::getBuiltinVaListKind() const { +WindowsARM64TargetInfo::getBuiltinVaListKind() const { return TargetInfo::CharPtrBuiltinVaList; } TargetInfo::CallingConvCheckResult -MicrosoftARM64TargetInfo::checkCallingConvention(CallingConv CC) const { +WindowsARM64TargetInfo::checkCallingConvention(CallingConv CC) const { switch (CC) { case CC_X86StdCall: case CC_X86ThisCall: @@ -475,6 +459,43 @@ MicrosoftARM64TargetInfo::checkCallingConvention(CallingConv CC) const { } } +MicrosoftARM64TargetInfo::MicrosoftARM64TargetInfo(const llvm::Triple &Triple, + const TargetOptions &Opts) + : WindowsARM64TargetInfo(Triple, Opts) { + TheCXXABI.set(TargetCXXABI::Microsoft); +} + +void MicrosoftARM64TargetInfo::getVisualStudioDefines( + const LangOptions &Opts, MacroBuilder &Builder) const { + WindowsTargetInfo<AArch64leTargetInfo>::getVisualStudioDefines(Opts, Builder); + Builder.defineMacro("_WIN32", "1"); + Builder.defineMacro("_WIN64", "1"); + Builder.defineMacro("_M_ARM64", "1"); +} + +void MicrosoftARM64TargetInfo::getTargetDefines(const LangOptions &Opts, + MacroBuilder &Builder) const { + WindowsTargetInfo::getTargetDefines(Opts, Builder); + getVisualStudioDefines(Opts, Builder); +} + +MinGWARM64TargetInfo::MinGWARM64TargetInfo(const llvm::Triple &Triple, + const TargetOptions &Opts) + : WindowsARM64TargetInfo(Triple, Opts) { + TheCXXABI.set(TargetCXXABI::GenericAArch64); +} + +void MinGWARM64TargetInfo::getTargetDefines(const LangOptions &Opts, + MacroBuilder &Builder) const { + WindowsTargetInfo::getTargetDefines(Opts, Builder); + Builder.defineMacro("_WIN32", "1"); + Builder.defineMacro("_WIN64", "1"); + Builder.defineMacro("WIN32", "1"); + Builder.defineMacro("WIN64", "1"); + addMinGWDefines(Opts, Builder); +} + + DarwinAArch64TargetInfo::DarwinAArch64TargetInfo(const llvm::Triple &Triple, const TargetOptions &Opts) : DarwinTargetInfo<AArch64leTargetInfo>(Triple, Opts) { |