diff options
Diffstat (limited to 'clang/lib/Basic')
| -rw-r--r-- | clang/lib/Basic/TargetInfo.cpp | 2 | ||||
| -rw-r--r-- | clang/lib/Basic/Targets.cpp | 34 |
2 files changed, 24 insertions, 12 deletions
diff --git a/clang/lib/Basic/TargetInfo.cpp b/clang/lib/Basic/TargetInfo.cpp index e661c66ca03..01eced20932 100644 --- a/clang/lib/Basic/TargetInfo.cpp +++ b/clang/lib/Basic/TargetInfo.cpp @@ -83,7 +83,7 @@ TargetInfo::TargetInfo(const llvm::Triple &T) : TargetOpts(), Triple(T) { ComplexLongDoubleUsesFP2Ret = false; // Set the C++ ABI based on the triple. - TheCXXABI.set(Triple.getOS() == llvm::Triple::Win32 + TheCXXABI.set(Triple.isKnownWindowsMSVCEnvironment() ? TargetCXXABI::Microsoft : TargetCXXABI::GenericItanium); diff --git a/clang/lib/Basic/Targets.cpp b/clang/lib/Basic/Targets.cpp index fa1fb83845c..a4be2891bdf 100644 --- a/clang/lib/Basic/Targets.cpp +++ b/clang/lib/Basic/Targets.cpp @@ -5889,12 +5889,18 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) { return new MinixTargetInfo<X86_32TargetInfo>(Triple); case llvm::Triple::Solaris: return new SolarisTargetInfo<X86_32TargetInfo>(Triple); - case llvm::Triple::Cygwin: - return new CygwinX86_32TargetInfo(Triple); - case llvm::Triple::MinGW32: - return new MinGWX86_32TargetInfo(Triple); - case llvm::Triple::Win32: - return new VisualStudioWindowsX86_32TargetInfo(Triple); + case llvm::Triple::Win32: { + switch (Triple.getEnvironment()) { + default: + return new X86_32TargetInfo(Triple); + case llvm::Triple::Cygnus: + return new CygwinX86_32TargetInfo(Triple); + case llvm::Triple::GNU: + return new MinGWX86_32TargetInfo(Triple); + case llvm::Triple::MSVC: + return new VisualStudioWindowsX86_32TargetInfo(Triple); + } + } case llvm::Triple::Haiku: return new HaikuX86_32TargetInfo(Triple); case llvm::Triple::RTEMS: @@ -5906,7 +5912,7 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) { } case llvm::Triple::x86_64: - if (Triple.isOSDarwin() || Triple.getObjectFormat() == llvm::Triple::MachO) + if (Triple.isOSDarwin() || Triple.isOSBinFormatMachO()) return new DarwinX86_64TargetInfo(Triple); switch (os) { @@ -5928,10 +5934,16 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) { return new KFreeBSDTargetInfo<X86_64TargetInfo>(Triple); case llvm::Triple::Solaris: return new SolarisTargetInfo<X86_64TargetInfo>(Triple); - case llvm::Triple::MinGW32: - return new MinGWX86_64TargetInfo(Triple); - case llvm::Triple::Win32: // This is what Triple.h supports now. - return new VisualStudioWindowsX86_64TargetInfo(Triple); + case llvm::Triple::Win32: { + switch (Triple.getEnvironment()) { + default: + return new X86_64TargetInfo(Triple); + case llvm::Triple::GNU: + return new MinGWX86_64TargetInfo(Triple); + case llvm::Triple::MSVC: + return new VisualStudioWindowsX86_64TargetInfo(Triple); + } + } case llvm::Triple::NaCl: return new NaClTargetInfo<X86_64TargetInfo>(Triple); default: |

