]> granicus.if.org Git - clang/commitdiff
MS ABI: Define _HAS_CHAR16_T_LANGUAGE_SUPPORT when appropriate
authorDavid Majnemer <david.majnemer@gmail.com>
Wed, 18 Mar 2015 07:53:18 +0000 (07:53 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Wed, 18 Mar 2015 07:53:18 +0000 (07:53 +0000)
If we are in MSVC 2015 compatibility mode and C++11 language conformance
is enabled, define _HAS_CHAR16_T_LANGUAGE_SUPPORT to 1.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@232615 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Basic/Targets.cpp
test/SemaCXX/MicrosoftCompatibility.cpp

index 90cef3793a800dc0043860a66260f07dce9aaba9..97e4db12029a630f37aa923d42bb18461af8d888 100644 (file)
@@ -655,6 +655,9 @@ protected:
       Builder.defineMacro("_MSC_FULL_VER", Twine(Opts.MSCompatibilityVersion));
       // FIXME We cannot encode the revision information into 32-bits
       Builder.defineMacro("_MSC_BUILD", Twine(1));
+
+      if (Opts.CPlusPlus11 && Opts.isCompatibleWithMSVC(19))
+        Builder.defineMacro("_HAS_CHAR16_T_LANGUAGE_SUPPORT", Twine(1));
     }
 
     if (Opts.MicrosoftExt) {
index 480c7cbdcac0f907c2192b5e89d3bd62ee9e9c09..1536007a6478f5d5fe93340393cd16f94a008776 100644 (file)
@@ -1,13 +1,17 @@
 // RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -std=c++11 -Wmicrosoft -verify -fms-compatibility -fexceptions -fcxx-exceptions -fms-compatibility-version=19.00
 // RUN: %clang_cc1 %s -triple i686-pc-win32 -fsyntax-only -std=c++11 -Wmicrosoft -verify -fms-compatibility -fexceptions -fcxx-exceptions -fms-compatibility-version=18.00
 
-#if _MSC_VER >= 1900
+#if defined(_HAS_CHAR16_T_LANGUAGE_SUPPORT) && _HAS_CHAR16_T_LANGUAGE_SUPPORT
 char16_t x;
 char32_t y;
-_Atomic(int) z;
 #else
 typedef unsigned short char16_t;
 typedef unsigned int char32_t;
+#endif
+
+#if _MSC_VER >= 1900
+_Atomic(int) z;
+#else
 struct _Atomic {};
 #endif