Windows support by Ruben Van Boxem.

git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@142235 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/__bit_reference b/include/__bit_reference
index 53d3c86..fa381bb 100644
--- a/include/__bit_reference
+++ b/include/__bit_reference
@@ -14,7 +14,9 @@
 #include <__config>
 #include <algorithm>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/__config b/include/__config
index a6f81db..35a1663 100644
--- a/include/__config
+++ b/include/__config
@@ -11,7 +11,9 @@
 #ifndef _LIBCPP_CONFIG
 #define _LIBCPP_CONFIG
 
+#if !_MSC_VER // explicit macro necessary because it is only defined below in this file
 #pragma GCC system_header
+#endif
 
 #define _LIBCPP_VERSION 1001
 
@@ -69,17 +71,45 @@
 # endif
 #endif  // !defined(_LIBCPP_LITTLE_ENDIAN) || !defined(_LIBCPP_BIG_ENDIAN)
 
-#ifndef _LIBCPP_VISIBILITY_TAG
-#define _LIBCPP_VISIBILITY_TAG 1
+#if _WIN32
+
+// only really useful for a DLL
+#ifdef _LIBCPP_DLL // this should be a compiler builtin define ideally...
+# ifdef cxx_EXPORTS
+#  define _LIBCPP_HIDDEN
+#  define _LIBCPP_VISIBLE __declspec(dllexport)
+# else
+#  define _LIBCPP_HIDDEN
+#  define _LIBCPP_VISIBLE __declspec(dllimport)
+# endif
+#else
+# define _LIBCPP_HIDDEN
+# define _LIBCPP_VISIBLE
 #endif
 
-#if _LIBCPP_VISIBILITY_TAG
+#ifndef _LIBCPP_INLINE_VISIBILITY
+#define _LIBCPP_INLINE_VISIBILITY __forceinline
+#endif
+
+#ifndef _LIBCPP_EXCEPTION_ABI
+#define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBLE
+#endif
+
+#ifndef _LIBCPP_ALWAYS_INLINE
+# if _MSC_VER
+# define _LIBCPP_ALWAYS_INLINE __forceinline
+# endif
+#endif
+
+#endif // _WIN32
+
+#ifndef _LIBCPP_HIDDEN
 #define _LIBCPP_HIDDEN __attribute__ ((__visibility__("hidden")))
+#endif
+
+#ifndef _LIBCPP_VISIBLE
 #define _LIBCPP_VISIBLE __attribute__ ((__visibility__("default")))
-#else  // _LIBCPP_VISIBILITY_TAG
-#define _LIBCPP_HIDDEN
-#define _LIBCPP_VISIBLE
-#endif  // _LIBCPP_VISIBILITY_TAG
+#endif
 
 #ifndef _LIBCPP_INLINE_VISIBILITY
 #define _LIBCPP_INLINE_VISIBILITY __attribute__ ((__visibility__("hidden"), __always_inline__))
@@ -89,12 +119,22 @@
 #define _LIBCPP_EXCEPTION_ABI __attribute__ ((__visibility__("default")))
 #endif
 
+#ifndef _LIBCPP_CANTTHROW
 #define _LIBCPP_CANTTHROW __attribute__ ((__nothrow__))
+#endif
 
+#ifndef _LIBCPP_ALWAYS_INLINE
 #define _LIBCPP_ALWAYS_INLINE  __attribute__ ((__visibility__("hidden"), __always_inline__))
+#endif
 
 #if defined(__clang__)
 
+#if __has_feature(cxx_alignas)
+#  define _ALIGNAS(x) alignas(x)
+#else
+#  define _ALIGNAS(x) __attribute__((__aligned__(x)))
+#endif
+
 #if !__has_feature(cxx_alias_templates)
 #define _LIBCPP_HAS_NO_TEMPLATE_ALIASES
 #endif
@@ -181,16 +221,6 @@
 #define _LIBCPP_HAS_OBJC_ARC_WEAK
 #endif
 
-// Inline namespaces are available in Clang regardless of C++ dialect.
-#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE {
-#define _LIBCPP_END_NAMESPACE_STD  } }
-#define _VSTD std::_LIBCPP_NAMESPACE
-
-namespace std {
-  inline namespace _LIBCPP_NAMESPACE {
-  }
-}
-
 #if !(__has_feature(cxx_constexpr))
 #define _LIBCPP_HAS_NO_CONSTEXPR
 #endif
@@ -207,10 +237,20 @@
 #  define _LIBCXX_UNDERLYING_TYPE(T) __underlying_type(T)
 #endif
 
-// end defined(__clang__)
+// Inline namespaces are available in Clang regardless of C++ dialect.
+#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {inline namespace _LIBCPP_NAMESPACE {
+#define _LIBCPP_END_NAMESPACE_STD  } }
+#define _VSTD std::_LIBCPP_NAMESPACE
+
+namespace std {
+  inline namespace _LIBCPP_NAMESPACE {
+  }
+}
 
 #elif defined(__GNUC__)
 
+#define _ALIGNAS(x) __attribute__((__aligned__(x)))
+
 #define _ATTRIBUTE(x) __attribute__((x))
 
 #if !__EXCEPTIONS
@@ -275,7 +315,28 @@
 using namespace _LIBCPP_NAMESPACE __attribute__((__strong__));
 }
 
-#endif  // defined(__GNUC__)
+#elif defined(_MSC_VER)
+
+#define _LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER
+#define _LIBCPP_HAS_NO_CONSTEXPR
+#define _LIBCPP_HAS_NO_UNICODE_CHARS
+#define _LIBCPP_HAS_NO_DELETED_FUNCTIONS
+#define __alignof__ __alignof
+#define _ATTRIBUTE __declspec
+#define _ALIGNAS(x) __declspec(align(x))
+#define _LIBCPP_HAS_NO_VARIADICS
+
+#define _NOEXCEPT throw()
+#define _NOEXCEPT_(x)
+
+#define _LIBCPP_BEGIN_NAMESPACE_STD namespace std {
+#define _LIBCPP_END_NAMESPACE_STD  }
+#define _VSTD std
+
+namespace std {
+}
+
+#endif // __clang__ || __GNUC___ || _MSC_VER
 
 #ifdef _LIBCPP_HAS_NO_UNICODE_CHARS
 typedef unsigned short char16_t;
diff --git a/include/__functional_03 b/include/__functional_03
index e48bb68..5d30ce2 100644
--- a/include/__functional_03
+++ b/include/__functional_03
@@ -13,7 +13,9 @@
 
 // manual variadic expansion for <functional>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 template <class _Tp>
 class __mem_fn
diff --git a/include/__functional_base b/include/__functional_base
index 441ab4f..8d8e4b5 100644
--- a/include/__functional_base
+++ b/include/__functional_base
@@ -16,7 +16,9 @@
 #include <typeinfo>
 #include <exception>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/__hash_table b/include/__hash_table
index f9578fa..4399caa 100644
--- a/include/__hash_table
+++ b/include/__hash_table
@@ -18,7 +18,9 @@
 #include <algorithm>
 #include <cmath>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/__locale b/include/__locale
index a161af9..28cb3ef 100644
--- a/include/__locale
+++ b/include/__locale
@@ -25,7 +25,9 @@
 # include <xlocale.h>
 #endif  // _WIN32 || __GLIBC__ || __APPLE__ || __FreeBSD_
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/__mutex_base b/include/__mutex_base
index 9e472fc..5568765 100644
--- a/include/__mutex_base
+++ b/include/__mutex_base
@@ -16,7 +16,9 @@
 #include <system_error>
 #include <pthread.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #ifdef _LIBCPP_SHARED_LOCK
 
diff --git a/include/__split_buffer b/include/__split_buffer
index d5b8f0a..33ce42d 100644
--- a/include/__split_buffer
+++ b/include/__split_buffer
@@ -6,7 +6,9 @@
 #include <type_traits>
 #include <algorithm>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/__sso_allocator b/include/__sso_allocator
index d25fc48..16354d8 100644
--- a/include/__sso_allocator
+++ b/include/__sso_allocator
@@ -15,7 +15,9 @@
 #include <type_traits>
 #include <new>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/__std_stream b/include/__std_stream
index 6ab0fd6..6df6556 100644
--- a/include/__std_stream
+++ b/include/__std_stream
@@ -17,7 +17,9 @@
 #include <__locale>
 #include <cstdio>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/__tree b/include/__tree
index 6c4b6e6..ad5d2f4 100644
--- a/include/__tree
+++ b/include/__tree
@@ -17,7 +17,9 @@
 #include <stdexcept>
 #include <algorithm>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/__tuple b/include/__tuple
index 918656e..15193b4 100644
--- a/include/__tuple
+++ b/include/__tuple
@@ -15,7 +15,9 @@
 #include <cstddef>
 #include <type_traits>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #ifdef _LIBCPP_HAS_NO_VARIADICS
 
diff --git a/include/__tuple_03 b/include/__tuple_03
index 6104919..a28ac08 100644
--- a/include/__tuple_03
+++ b/include/__tuple_03
@@ -13,7 +13,9 @@
 
 #include <__config>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/algorithm b/include/algorithm
index d6906a2..3a47b8d 100644
--- a/include/algorithm
+++ b/include/algorithm
@@ -595,7 +595,9 @@
 #include <iterator>
 #include <cstdlib>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/array b/include/array
index 3ac4c55..c11f4bd 100644
--- a/include/array
+++ b/include/array
@@ -111,7 +111,9 @@
     #include <cassert>
 #endif
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/atomic b/include/atomic
index 31385a2..244f42d 100644
--- a/include/atomic
+++ b/include/atomic
@@ -526,7 +526,9 @@
 #include <cstdint>
 #include <type_traits>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/bitset b/include/bitset
index 4d9efd9..c970f32 100644
--- a/include/bitset
+++ b/include/bitset
@@ -113,7 +113,9 @@
 
 */
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #include <__config>
 #include <__bit_reference>
diff --git a/include/cassert b/include/cassert
index 7337b16..3775990 100644
--- a/include/cassert
+++ b/include/cassert
@@ -20,4 +20,6 @@
 #include <__config>
 #include <assert.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
diff --git a/include/ccomplex b/include/ccomplex
index 0e999a9..6ed1164 100644
--- a/include/ccomplex
+++ b/include/ccomplex
@@ -20,7 +20,9 @@
 
 #include <complex>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 // hh 080623 Created
 
diff --git a/include/cctype b/include/cctype
index dbdc3e7..5ef32a4 100644
--- a/include/cctype
+++ b/include/cctype
@@ -38,7 +38,9 @@
 #include <__config>
 #include <ctype.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cerrno b/include/cerrno
index 71084a1..9804e4e 100644
--- a/include/cerrno
+++ b/include/cerrno
@@ -26,7 +26,9 @@
 #include <__config>
 #include <errno.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #if !defined(EOWNERDEAD) || !defined(ENOTRECOVERABLE)
 
diff --git a/include/cfenv b/include/cfenv
index cd86b88..dd7db37 100644
--- a/include/cfenv
+++ b/include/cfenv
@@ -56,7 +56,9 @@
 #include <__config>
 #include <fenv.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cfloat b/include/cfloat
index f0079c2..5fa5655 100644
--- a/include/cfloat
+++ b/include/cfloat
@@ -63,7 +63,9 @@
 #include <__config>
 #include <float.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #ifndef FLT_EVAL_METHOD
 #define FLT_EVAL_METHOD __FLT_EVAL_METHOD__
diff --git a/include/chrono b/include/chrono
index a6cd194..1c79f4b 100644
--- a/include/chrono
+++ b/include/chrono
@@ -255,7 +255,9 @@
 #include <ratio>
 #include <limits>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cinttypes b/include/cinttypes
index ddf20e8..786692b 100644
--- a/include/cinttypes
+++ b/include/cinttypes
@@ -239,7 +239,9 @@
 #include <cstdint>
 #include <inttypes.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/ciso646 b/include/ciso646
index 38b3e94..b2efc72 100644
--- a/include/ciso646
+++ b/include/ciso646
@@ -18,6 +18,8 @@
 
 #include <__config>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #endif  // _LIBCPP_CISO646
diff --git a/include/climits b/include/climits
index c82becd..81ffecd 100644
--- a/include/climits
+++ b/include/climits
@@ -41,6 +41,8 @@
 #include <__config>
 #include <limits.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #endif  // _LIBCPP_CLIMITS
diff --git a/include/clocale b/include/clocale
index 6982f84..f8b8f0d 100644
--- a/include/clocale
+++ b/include/clocale
@@ -38,7 +38,9 @@
 #include <__config>
 #include <locale.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cmath b/include/cmath
index f8bc0df..bc3151b 100644
--- a/include/cmath
+++ b/include/cmath
@@ -301,7 +301,9 @@
 #include <math.h>
 #include <type_traits>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 // signbit
 
diff --git a/include/codecvt b/include/codecvt
index 86fdc72..6c44e34 100644
--- a/include/codecvt
+++ b/include/codecvt
@@ -55,7 +55,9 @@
 #include <__config>
 #include <__locale>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/complex b/include/complex
index f91b240..e7f63ea 100644
--- a/include/complex
+++ b/include/complex
@@ -249,7 +249,9 @@
     #include <cassert>
 #endif
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/complex.h b/include/complex.h
index e04b2e3..7003d31 100644
--- a/include/complex.h
+++ b/include/complex.h
@@ -28,6 +28,8 @@
 
 #endif  // __cplusplus
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #endif  // _LIBCPP_COMPLEX_H
diff --git a/include/condition_variable b/include/condition_variable
index fc3ac3d..b4da556 100644
--- a/include/condition_variable
+++ b/include/condition_variable
@@ -111,7 +111,9 @@
 #include <__mutex_base>
 #include <memory>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/csetjmp b/include/csetjmp
index 2b8b81f..d0b2c07 100644
--- a/include/csetjmp
+++ b/include/csetjmp
@@ -34,7 +34,9 @@
 #include <__config>
 #include <setjmp.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #ifndef setjmp
 #define setjmp(env) setjmp(env)
diff --git a/include/csignal b/include/csignal
index 93adc59..9728266 100644
--- a/include/csignal
+++ b/include/csignal
@@ -43,7 +43,9 @@
 #include <__config>
 #include <signal.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cstdarg b/include/cstdarg
index dbd73cb..c8b6999 100644
--- a/include/cstdarg
+++ b/include/cstdarg
@@ -35,7 +35,9 @@
 #include <__config>
 #include <stdarg.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cstdbool b/include/cstdbool
index 76761fb..2c764a6 100644
--- a/include/cstdbool
+++ b/include/cstdbool
@@ -22,7 +22,9 @@
 
 #include <__config>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #undef __bool_true_false_are_defined
 #define __bool_true_false_are_defined 1
diff --git a/include/cstddef b/include/cstddef
index b851ea0..48317ba 100644
--- a/include/cstddef
+++ b/include/cstddef
@@ -43,7 +43,9 @@
 
 #include <stddef.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cstdint b/include/cstdint
index 0ded1f1..7a187d3 100644
--- a/include/cstdint
+++ b/include/cstdint
@@ -144,7 +144,9 @@
 #include <__config>
 #include <stdint.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cstdio b/include/cstdio
index 9af0ed5..aa89174 100644
--- a/include/cstdio
+++ b/include/cstdio
@@ -99,7 +99,9 @@
 #include <__config>
 #include <stdio.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cstdlib b/include/cstdlib
index 26c27ff..e8726cf 100644
--- a/include/cstdlib
+++ b/include/cstdlib
@@ -82,7 +82,9 @@
 #include <__config>
 #include <stdlib.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cstring b/include/cstring
index 6d2e507..1a23055 100644
--- a/include/cstring
+++ b/include/cstring
@@ -60,7 +60,9 @@
 #include <__config>
 #include <string.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/ctgmath b/include/ctgmath
index 9044c6a..535eb7d 100644
--- a/include/ctgmath
+++ b/include/ctgmath
@@ -22,6 +22,8 @@
 #include <ccomplex>
 #include <cmath>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #endif  // _LIBCPP_CTGMATH
diff --git a/include/ctime b/include/ctime
index 2cef958..fc4eb26 100644
--- a/include/ctime
+++ b/include/ctime
@@ -47,7 +47,9 @@
 #include <__config>
 #include <time.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cwchar b/include/cwchar
index 0a67fe8..6fe4852 100644
--- a/include/cwchar
+++ b/include/cwchar
@@ -110,7 +110,9 @@
 #include <support/win32/support.h> // pull in *swprintf defines
 #endif // _WIN32
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/cwctype b/include/cwctype
index f2f4470..4f89b52 100644
--- a/include/cwctype
+++ b/include/cwctype
@@ -54,7 +54,9 @@
 #include <cctype>
 #include <wctype.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/deque b/include/deque
index 87cbe59..ab9ba58 100644
--- a/include/deque
+++ b/include/deque
@@ -150,7 +150,9 @@
 
 */
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #include <__config>
 #include <__split_buffer>
diff --git a/include/exception b/include/exception
index f418575..0a747f5 100644
--- a/include/exception
+++ b/include/exception
@@ -80,7 +80,9 @@
 #include <cstddef>
 #include <type_traits>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 namespace std  // purposefully not using versioning namespace
 {
diff --git a/include/forward_list b/include/forward_list
index 0dd6bb2..61fe290 100644
--- a/include/forward_list
+++ b/include/forward_list
@@ -174,7 +174,9 @@
 #include <iterator>
 #include <algorithm>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/fstream b/include/fstream
index 7034aab..b6a2ab0 100644
--- a/include/fstream
+++ b/include/fstream
@@ -171,7 +171,9 @@
 #include <__locale>
 #include <cstdio>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/functional b/include/functional
index 6db7ac4..59b132c 100644
--- a/include/functional
+++ b/include/functional
@@ -467,7 +467,9 @@
 
 #include <__functional_base>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/future b/include/future
index 62529d9..f6896a3 100644
--- a/include/future
+++ b/include/future
@@ -370,7 +370,9 @@
 #include <mutex>
 #include <thread>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/initializer_list b/include/initializer_list
index 745d3bd..3263906 100644
--- a/include/initializer_list
+++ b/include/initializer_list
@@ -46,7 +46,9 @@
 #include <__config>
 #include <cstddef>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 namespace std  // purposefully not versioned
 {
diff --git a/include/iomanip b/include/iomanip
index a407360..1570404 100644
--- a/include/iomanip
+++ b/include/iomanip
@@ -33,7 +33,9 @@
 #include <__config>
 #include <istream>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/ios b/include/ios
index e2f2b6f..7ea63a3 100644
--- a/include/ios
+++ b/include/ios
@@ -216,7 +216,9 @@
 #include <__locale>
 #include <system_error>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/iosfwd b/include/iosfwd
index 852d9e5..7e5ac73 100644
--- a/include/iosfwd
+++ b/include/iosfwd
@@ -89,7 +89,9 @@
 #include <__config>
 #include <wchar.h>  // for mbstate_t
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/iostream b/include/iostream
index e828b54..53cd146 100644
--- a/include/iostream
+++ b/include/iostream
@@ -40,7 +40,9 @@
 #include <istream>
 #include <ostream>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/istream b/include/istream
index d2d3776..24d9f3a 100644
--- a/include/istream
+++ b/include/istream
@@ -155,7 +155,9 @@
 #include <__config>
 #include <ostream>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/iterator b/include/iterator
index 97ff787..d627438 100644
--- a/include/iterator
+++ b/include/iterator
@@ -321,7 +321,9 @@
 #include <cassert>
 #endif
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/limits b/include/limits
index 989964e..5f31c4f 100644
--- a/include/limits
+++ b/include/limits
@@ -102,7 +102,9 @@
 
 */
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #include <__config>
 #include <type_traits>
diff --git a/include/list b/include/list
index f2ffcc8..345f24d 100644
--- a/include/list
+++ b/include/list
@@ -176,7 +176,9 @@
 #include <iterator>
 #include <algorithm>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/locale b/include/locale
index aa99ff7..b2afbd4 100644
--- a/include/locale
+++ b/include/locale
@@ -192,7 +192,9 @@
 #include <nl_types.h>
 #endif  // !_WIN32
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/map b/include/map
index 886aecf..8bb7555 100644
--- a/include/map
+++ b/include/map
@@ -375,7 +375,9 @@
 #include <functional>
 #include <initializer_list>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/memory b/include/memory
index 467d292..878dda8 100644
--- a/include/memory
+++ b/include/memory
@@ -600,7 +600,9 @@
     #include <cassert>
 #endif
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/mutex b/include/mutex
index 297baca..37e74d6 100644
--- a/include/mutex
+++ b/include/mutex
@@ -179,7 +179,9 @@
 #include <tuple>
 #endif
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/new b/include/new
index 81c16bd..5bcbad0 100644
--- a/include/new
+++ b/include/new
@@ -56,7 +56,9 @@
 #include <exception>
 #include <cstddef>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 namespace std  // purposefully not using versioning namespace
 {
diff --git a/include/numeric b/include/numeric
index 3149399..4ca62e8 100644
--- a/include/numeric
+++ b/include/numeric
@@ -60,7 +60,9 @@
 #include <__config>
 #include <iterator>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/ostream b/include/ostream
index f1a3de9..5306496 100644
--- a/include/ostream
+++ b/include/ostream
@@ -133,7 +133,9 @@
 #include <iterator>
 #include <bitset>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/queue b/include/queue
index bed5bb7..e05ab8f 100644
--- a/include/queue
+++ b/include/queue
@@ -171,7 +171,9 @@
 #include <functional>
 #include <algorithm>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/random b/include/random
index 0e0860e..c5c33c0 100644
--- a/include/random
+++ b/include/random
@@ -1646,7 +1646,9 @@
 #include <ostream>
 #include <cmath>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/ratio b/include/ratio
index 9764014..4ef66c5 100644
--- a/include/ratio
+++ b/include/ratio
@@ -70,7 +70,9 @@
 #include <climits>
 #include <type_traits>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/regex b/include/regex
index 760f4eb..048fbef 100644
--- a/include/regex
+++ b/include/regex
@@ -732,7 +732,9 @@
 #include <vector>
 #include <deque>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/scoped_allocator b/include/scoped_allocator
index 9427a37..cd05102 100644
--- a/include/scoped_allocator
+++ b/include/scoped_allocator
@@ -106,7 +106,9 @@
 #include <__config>
 #include <memory>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/set b/include/set
index fe3d382..36d3dd4 100644
--- a/include/set
+++ b/include/set
@@ -338,7 +338,9 @@
 #include <__tree>
 #include <functional>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/sstream b/include/sstream
index a2a0d31..1b27195 100644
--- a/include/sstream
+++ b/include/sstream
@@ -175,7 +175,9 @@
 #include <istream>
 #include <string>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/stack b/include/stack
index 3d72f96..59906bd 100644
--- a/include/stack
+++ b/include/stack
@@ -85,7 +85,9 @@
 #include <__config>
 #include <deque>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/stdexcept b/include/stdexcept
index d31dc8b..ef5de59 100644
--- a/include/stdexcept
+++ b/include/stdexcept
@@ -46,7 +46,9 @@
 #include <exception>
 #include <iosfwd>  // for string forward decl
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 namespace std  // purposefully not using versioning namespace
 {
diff --git a/include/streambuf b/include/streambuf
index feb62c7..5dcb597 100644
--- a/include/streambuf
+++ b/include/streambuf
@@ -112,7 +112,9 @@
 #include <iosfwd>
 #include <ios>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/string b/include/string
index 2041510..4e29e8a 100644
--- a/include/string
+++ b/include/string
@@ -446,7 +446,9 @@
 #include <cassert>
 #endif
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/strstream b/include/strstream
index 4ff34a5..5eadefd 100644
--- a/include/strstream
+++ b/include/strstream
@@ -131,7 +131,9 @@
 #include <ostream>
 #include <istream>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/system_error b/include/system_error
index 5e1e6fe..ea96a66 100644
--- a/include/system_error
+++ b/include/system_error
@@ -223,7 +223,9 @@
 #include <stdexcept>
 #include <__functional_base>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/tgmath.h b/include/tgmath.h
index 2388b6e..fbe1e82 100644
--- a/include/tgmath.h
+++ b/include/tgmath.h
@@ -22,6 +22,8 @@
 #include <complex.h>
 #include <math.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #endif  // _LIBCPP_TGMATH_H
diff --git a/include/thread b/include/thread
index ce3ca49..4366c41 100644
--- a/include/thread
+++ b/include/thread
@@ -100,7 +100,9 @@
 #endif
 #include <pthread.h>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 #define __STDCPP_THREADS__ __cplusplus
 
diff --git a/include/tuple b/include/tuple
index b3c5c92..cc67929 100644
--- a/include/tuple
+++ b/include/tuple
@@ -119,7 +119,9 @@
 #include <memory>
 #include <type_traits>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/type_traits b/include/type_traits
index c6a20e2..95d3a3f 100644
--- a/include/type_traits
+++ b/include/type_traits
@@ -142,7 +142,9 @@
 #include <__config>
 #include <cstddef>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
@@ -891,12 +893,12 @@
 
 #define _CREATE_ALIGNED_STORAGE_SPECIALIZATION(n) \
 template <size_t _Len>\
-struct __attribute__ ((__visibility__("default"))) aligned_storage<_Len, n>\
+struct _LIBCPP_VISIBLE aligned_storage<_Len, n>\
 {\
-    struct type\
+    struct _ALIGNAS(n) type\
     {\
         unsigned char _[_Len];\
-    } __attribute__((__aligned__(n)));\
+    };\
 }
 
 _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x1);
@@ -913,7 +915,10 @@
 _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x800);
 _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x1000);
 _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x2000);
+// MSDN says that MSVC does not support alignment beyond 8192 (=0x2000)
+#if !defined(_MSC_VER)
 _CREATE_ALIGNED_STORAGE_SPECIALIZATION(0x4000);
+#endif // !_MSC_VER
 
 #undef _CREATE_ALIGNED_STORAGE_SPECIALIZATION
 
@@ -933,7 +938,7 @@
     typedef typename __promote<_A2>::type __type2;
     typedef typename __promote<_A3>::type __type3;
 public:
-    typedef __typeof__(__type1() + __type2() + __type3()) type;
+    typedef decltype(__type1() + __type2() + __type3()) type;
 };
 
 template <class _A1, class _A2>
@@ -943,7 +948,7 @@
     typedef typename __promote<_A1>::type __type1;
     typedef typename __promote<_A2>::type __type2;
 public:
-    typedef __typeof__(__type1() + __type2()) type;
+    typedef decltype(__type1() + __type2()) type;
 };
 
 template <class _A1>
diff --git a/include/typeindex b/include/typeindex
index 7fb1513..398b528 100644
--- a/include/typeindex
+++ b/include/typeindex
@@ -49,7 +49,9 @@
 #include <typeinfo>
 #include <__functional_base>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/typeinfo b/include/typeinfo
index 310c482..6ffee0f 100644
--- a/include/typeinfo
+++ b/include/typeinfo
@@ -61,7 +61,9 @@
 #include <exception>
 #include <cstddef>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 namespace std  // purposefully not using versioning namespace
 {
diff --git a/include/unordered_map b/include/unordered_map
index cb30fc8..56645e0 100644
--- a/include/unordered_map
+++ b/include/unordered_map
@@ -319,7 +319,9 @@
 #include <functional>
 #include <stdexcept>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/unordered_set b/include/unordered_set
index d7615fa..279e907 100644
--- a/include/unordered_set
+++ b/include/unordered_set
@@ -305,7 +305,9 @@
 #include <__hash_table>
 #include <functional>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/utility b/include/utility
index 358fe76..dd9ff33 100644
--- a/include/utility
+++ b/include/utility
@@ -125,7 +125,9 @@
 #include <__tuple>
 #include <type_traits>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/valarray b/include/valarray
index 62c1c66..5d3154c 100644
--- a/include/valarray
+++ b/include/valarray
@@ -346,7 +346,9 @@
 #include <algorithm>
 #include <functional>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/include/vector b/include/vector
index b334074..5f47180 100644
--- a/include/vector
+++ b/include/vector
@@ -270,7 +270,9 @@
 #include <__split_buffer>
 #include <__functional_base>
 
+#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #pragma GCC system_header
+#endif
 
 _LIBCPP_BEGIN_NAMESPACE_STD
 
diff --git a/www/results.Windows.html b/www/results.Windows.html
index 0569abc..b548ab7 100644
--- a/www/results.Windows.html
+++ b/www/results.Windows.html
@@ -157,7 +157,8 @@
     copy.pass.cpp: Windows locale names don't follow UNIX convention.
     default.pass.cpp: idem.
    streambuf.members/
-    locales.pass.cpp: Windows locale names don't follow UNIX convention.
+    streambuf.locales/
+     locales.pass.cpp: Windows locale names don't follow UNIX convention.
    streambuf.protected/
     streambuf.assign/
 	 assign.pass.cpp: Windows locale names don't follow UNIX convention.
@@ -223,21 +224,20 @@
      wchar_t_unshift.pass.cpp: idem.
    locale.codecvt.byname/
     ctor_wchar_t.pass.cpp: Windows locale names don't follow UNIX convention.
-   locale.ctype/
-    locale.ctype.byname/
-     is_1.pass.cpp: Windows locale names don't follow UNIX convention.
-     is_many.pass.cpp: idem.
-     narrow_1.pass.cpp: idem.
-     narrow_many.pass.cpp: idem.
-     scan_is.pass.cpp: idem.
-     scan_not.pass.cpp: idem.
-     tolower_1.pass.cpp: idem.
-     tolower_many.pass.cpp: idem.
-     toupper_1.pass.cpp: idem.
-     toupper_many.pass.cpp: idem.
-     types.pass.cpp: idem.
-     widen_1.pass.cpp: idem.
-     widen_many.pass.cpp: idem.
+   locale.ctype.byname/
+    is_1.pass.cpp: Windows locale names don't follow UNIX convention.
+    is_many.pass.cpp: idem.
+    narrow_1.pass.cpp: idem.
+    narrow_many.pass.cpp: idem.
+    scan_is.pass.cpp: idem.
+    scan_not.pass.cpp: idem.
+    tolower_1.pass.cpp: idem.
+    tolower_many.pass.cpp: idem.
+    toupper_1.pass.cpp: idem.
+    toupper_many.pass.cpp: idem.
+    types.pass.cpp: idem.
+    widen_1.pass.cpp: idem.
+    widen_many.pass.cpp: idem.
   category.monetary/
    locale.money.get/
     locale.money.get.members/