diff options
author | Howard Hinnant <hhinnant@apple.com> | 2011-10-17 20:05:10 +0000 |
---|---|---|
committer | Howard Hinnant <hhinnant@apple.com> | 2011-10-17 20:05:10 +0000 |
commit | 073458b1ab5489dce6f2ec789889c377b690ccf4 (patch) | |
tree | 8afaf87369531d8c64913495abd82b3a7d24af19 /libcxx/include | |
parent | aa563df75974aa714270d48fa1b668baf893be0b (diff) | |
download | bcm5719-llvm-073458b1ab5489dce6f2ec789889c377b690ccf4.tar.gz bcm5719-llvm-073458b1ab5489dce6f2ec789889c377b690ccf4.zip |
Windows support by Ruben Van Boxem.
llvm-svn: 142235
Diffstat (limited to 'libcxx/include')
92 files changed, 270 insertions, 24 deletions
diff --git a/libcxx/include/__bit_reference b/libcxx/include/__bit_reference index 53d3c8604be..fa381bb43cb 100644 --- a/libcxx/include/__bit_reference +++ b/libcxx/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/libcxx/include/__config b/libcxx/include/__config index a6f81dbc243..35a16636c83 100644 --- a/libcxx/include/__config +++ b/libcxx/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 + +#ifndef _LIBCPP_INLINE_VISIBILITY +#define _LIBCPP_INLINE_VISIBILITY __forceinline +#endif + +#ifndef _LIBCPP_EXCEPTION_ABI +#define _LIBCPP_EXCEPTION_ABI _LIBCPP_VISIBLE #endif -#if _LIBCPP_VISIBILITY_TAG +#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 @@ typedef __char32_t char32_t; #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 @@ namespace std { # 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 @@ namespace _LIBCPP_NAMESPACE { 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/libcxx/include/__functional_03 b/libcxx/include/__functional_03 index e48bb6856de..5d30ce2b750 100644 --- a/libcxx/include/__functional_03 +++ b/libcxx/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/libcxx/include/__functional_base b/libcxx/include/__functional_base index 441ab4f5d0b..8d8e4b5e6e9 100644 --- a/libcxx/include/__functional_base +++ b/libcxx/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/libcxx/include/__hash_table b/libcxx/include/__hash_table index f9578fa2d2d..4399caad658 100644 --- a/libcxx/include/__hash_table +++ b/libcxx/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/libcxx/include/__locale b/libcxx/include/__locale index a161af90f72..28cb3ef6529 100644 --- a/libcxx/include/__locale +++ b/libcxx/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/libcxx/include/__mutex_base b/libcxx/include/__mutex_base index 9e472fcc267..55687659a03 100644 --- a/libcxx/include/__mutex_base +++ b/libcxx/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/libcxx/include/__split_buffer b/libcxx/include/__split_buffer index d5b8f0a3ee2..33ce42da31a 100644 --- a/libcxx/include/__split_buffer +++ b/libcxx/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/libcxx/include/__sso_allocator b/libcxx/include/__sso_allocator index d25fc484d38..16354d83cc5 100644 --- a/libcxx/include/__sso_allocator +++ b/libcxx/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/libcxx/include/__std_stream b/libcxx/include/__std_stream index 6ab0fd6077d..6df6556da76 100644 --- a/libcxx/include/__std_stream +++ b/libcxx/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/libcxx/include/__tree b/libcxx/include/__tree index 6c4b6e60ae7..ad5d2f4b8ea 100644 --- a/libcxx/include/__tree +++ b/libcxx/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/libcxx/include/__tuple b/libcxx/include/__tuple index 918656ed838..15193b4d107 100644 --- a/libcxx/include/__tuple +++ b/libcxx/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/libcxx/include/__tuple_03 b/libcxx/include/__tuple_03 index 61049191cb2..a28ac0800ae 100644 --- a/libcxx/include/__tuple_03 +++ b/libcxx/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/libcxx/include/algorithm b/libcxx/include/algorithm index d6906a209e8..3a47b8d6c38 100644 --- a/libcxx/include/algorithm +++ b/libcxx/include/algorithm @@ -595,7 +595,9 @@ template <class BidirectionalIterator, class Compare> #include <iterator> #include <cstdlib> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/array b/libcxx/include/array index 3ac4c55b9d2..c11f4bd74f5 100644 --- a/libcxx/include/array +++ b/libcxx/include/array @@ -111,7 +111,9 @@ template <int I, class T, size_t N> T&& get(array<T, N>&&) noexcept; #include <cassert> #endif +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/atomic b/libcxx/include/atomic index 31385a23d17..244f42d0aaf 100644 --- a/libcxx/include/atomic +++ b/libcxx/include/atomic @@ -526,7 +526,9 @@ void atomic_signal_fence(memory_order m); #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/libcxx/include/bitset b/libcxx/include/bitset index 4d9efd9391b..c970f329071 100644 --- a/libcxx/include/bitset +++ b/libcxx/include/bitset @@ -113,7 +113,9 @@ template <size_t N> struct hash<std::bitset<N>>; */ +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif #include <__config> #include <__bit_reference> diff --git a/libcxx/include/cassert b/libcxx/include/cassert index 7337b16ee64..3775990640a 100644 --- a/libcxx/include/cassert +++ b/libcxx/include/cassert @@ -20,4 +20,6 @@ Macros: #include <__config> #include <assert.h> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif diff --git a/libcxx/include/ccomplex b/libcxx/include/ccomplex index 0e999a92d1f..6ed116445e6 100644 --- a/libcxx/include/ccomplex +++ b/libcxx/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/libcxx/include/cctype b/libcxx/include/cctype index dbdc3e765e5..5ef32a48b5f 100644 --- a/libcxx/include/cctype +++ b/libcxx/include/cctype @@ -38,7 +38,9 @@ int toupper(int c); #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/libcxx/include/cerrno b/libcxx/include/cerrno index 71084a14ac5..9804e4e3dcf 100644 --- a/libcxx/include/cerrno +++ b/libcxx/include/cerrno @@ -26,7 +26,9 @@ Macros: #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/libcxx/include/cfenv b/libcxx/include/cfenv index cd86b882325..dd7db37f8e4 100644 --- a/libcxx/include/cfenv +++ b/libcxx/include/cfenv @@ -56,7 +56,9 @@ int feupdateenv(const fenv_t* envp); #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/libcxx/include/cfloat b/libcxx/include/cfloat index f0079c23fa2..5fa56550fa6 100644 --- a/libcxx/include/cfloat +++ b/libcxx/include/cfloat @@ -63,7 +63,9 @@ Macros: #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/libcxx/include/chrono b/libcxx/include/chrono index a6cd1945bff..1c79f4bbe80 100644 --- a/libcxx/include/chrono +++ b/libcxx/include/chrono @@ -255,7 +255,9 @@ typedef steady_clock high_resolution_clock; #include <ratio> #include <limits> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/cinttypes b/libcxx/include/cinttypes index ddf20e89614..786692b8fec 100644 --- a/libcxx/include/cinttypes +++ b/libcxx/include/cinttypes @@ -239,7 +239,9 @@ uintmax_t wcstoumax(const wchar_t* restrict nptr, wchar_t** restrict endptr, int #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/libcxx/include/ciso646 b/libcxx/include/ciso646 index 38b3e942a83..b2efc72a9aa 100644 --- a/libcxx/include/ciso646 +++ b/libcxx/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/libcxx/include/climits b/libcxx/include/climits index c82becdc056..81ffecdf6ee 100644 --- a/libcxx/include/climits +++ b/libcxx/include/climits @@ -41,6 +41,8 @@ Macros: #include <__config> #include <limits.h> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif #endif // _LIBCPP_CLIMITS diff --git a/libcxx/include/clocale b/libcxx/include/clocale index 6982f84e9cf..f8b8f0dd34b 100644 --- a/libcxx/include/clocale +++ b/libcxx/include/clocale @@ -38,7 +38,9 @@ lconv* localeconv(); #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/libcxx/include/cmath b/libcxx/include/cmath index f8bc0dfc66a..bc3151ba3e0 100644 --- a/libcxx/include/cmath +++ b/libcxx/include/cmath @@ -301,7 +301,9 @@ long double truncl(long double x); #include <math.h> #include <type_traits> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif // signbit diff --git a/libcxx/include/codecvt b/libcxx/include/codecvt index 86fdc727e43..6c44e343474 100644 --- a/libcxx/include/codecvt +++ b/libcxx/include/codecvt @@ -55,7 +55,9 @@ class codecvt_utf8_utf16 #include <__config> #include <__locale> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/complex b/libcxx/include/complex index f91b240488b..e7f63eac3a1 100644 --- a/libcxx/include/complex +++ b/libcxx/include/complex @@ -249,7 +249,9 @@ template<class T, class charT, class traits> #include <cassert> #endif +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/complex.h b/libcxx/include/complex.h index e04b2e3e881..7003d31a89c 100644 --- a/libcxx/include/complex.h +++ b/libcxx/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/libcxx/include/condition_variable b/libcxx/include/condition_variable index fc3ac3dff5c..b4da556f635 100644 --- a/libcxx/include/condition_variable +++ b/libcxx/include/condition_variable @@ -111,7 +111,9 @@ public: #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/libcxx/include/csetjmp b/libcxx/include/csetjmp index 2b8b81f9d4b..d0b2c078967 100644 --- a/libcxx/include/csetjmp +++ b/libcxx/include/csetjmp @@ -34,7 +34,9 @@ void longjmp(jmp_buf env, int val); #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/libcxx/include/csignal b/libcxx/include/csignal index 93adc59928f..97282661872 100644 --- a/libcxx/include/csignal +++ b/libcxx/include/csignal @@ -43,7 +43,9 @@ int raise(int sig); #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/libcxx/include/cstdarg b/libcxx/include/cstdarg index dbd73cb3baf..c8b6999242f 100644 --- a/libcxx/include/cstdarg +++ b/libcxx/include/cstdarg @@ -35,7 +35,9 @@ Types: #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/libcxx/include/cstdbool b/libcxx/include/cstdbool index 76761fb3195..2c764a61f21 100644 --- a/libcxx/include/cstdbool +++ b/libcxx/include/cstdbool @@ -22,7 +22,9 @@ Macros: #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/libcxx/include/cstddef b/libcxx/include/cstddef index b851ea00926..48317ba0063 100644 --- a/libcxx/include/cstddef +++ b/libcxx/include/cstddef @@ -43,7 +43,9 @@ Types: #include <stddef.h> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/cstdint b/libcxx/include/cstdint index 0ded1f16844..7a187d3ebf2 100644 --- a/libcxx/include/cstdint +++ b/libcxx/include/cstdint @@ -144,7 +144,9 @@ Types: #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/libcxx/include/cstdio b/libcxx/include/cstdio index 9af0ed5e366..aa891742ea1 100644 --- a/libcxx/include/cstdio +++ b/libcxx/include/cstdio @@ -99,7 +99,9 @@ void perror(const char* s); #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/libcxx/include/cstdlib b/libcxx/include/cstdlib index 26c27ffd201..e8726cf6fce 100644 --- a/libcxx/include/cstdlib +++ b/libcxx/include/cstdlib @@ -82,7 +82,9 @@ size_t wcstombs(char* restrict s, const wchar_t* restrict pwcs, size_t n); #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/libcxx/include/cstring b/libcxx/include/cstring index 6d2e507c4d8..1a230559bd2 100644 --- a/libcxx/include/cstring +++ b/libcxx/include/cstring @@ -60,7 +60,9 @@ size_t strlen(const char* s); #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/libcxx/include/ctgmath b/libcxx/include/ctgmath index 9044c6ad887..535eb7dccd1 100644 --- a/libcxx/include/ctgmath +++ b/libcxx/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/libcxx/include/ctime b/libcxx/include/ctime index 2cef9585cec..fc4eb26f543 100644 --- a/libcxx/include/ctime +++ b/libcxx/include/ctime @@ -47,7 +47,9 @@ size_t strftime(char* restrict s, size_t maxsize, const char* restrict format, #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/libcxx/include/cwchar b/libcxx/include/cwchar index 0a67fe8bba9..6fe485229f6 100644 --- a/libcxx/include/cwchar +++ b/libcxx/include/cwchar @@ -110,7 +110,9 @@ size_t wcsrtombs(char* restrict dst, const wchar_t** restrict src, size_t len, #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/libcxx/include/cwctype b/libcxx/include/cwctype index f2f4470a95f..4f89b52db27 100644 --- a/libcxx/include/cwctype +++ b/libcxx/include/cwctype @@ -54,7 +54,9 @@ wctrans_t wctrans(const char* property); #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/libcxx/include/deque b/libcxx/include/deque index 87cbe599359..ab9ba58b028 100644 --- a/libcxx/include/deque +++ b/libcxx/include/deque @@ -150,7 +150,9 @@ template <class T, class Allocator> */ +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif #include <__config> #include <__split_buffer> diff --git a/libcxx/include/exception b/libcxx/include/exception index f418575c735..0a747f50fb3 100644 --- a/libcxx/include/exception +++ b/libcxx/include/exception @@ -80,7 +80,9 @@ template <class E> void rethrow_if_nested(const E& e); #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/libcxx/include/forward_list b/libcxx/include/forward_list index 0dd6bb241b0..61fe290d9e2 100644 --- a/libcxx/include/forward_list +++ b/libcxx/include/forward_list @@ -174,7 +174,9 @@ template <class T, class Allocator> #include <iterator> #include <algorithm> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/fstream b/libcxx/include/fstream index 7034aab110a..b6a2ab0e158 100644 --- a/libcxx/include/fstream +++ b/libcxx/include/fstream @@ -171,7 +171,9 @@ typedef basic_fstream<wchar_t> wfstream; #include <__locale> #include <cstdio> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/functional b/libcxx/include/functional index 6db7ac48e92..59b132c4515 100644 --- a/libcxx/include/functional +++ b/libcxx/include/functional @@ -467,7 +467,9 @@ POLICY: For non-variadic implementations, the number of arguments is limited #include <__functional_base> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/future b/libcxx/include/future index 62529d97c75..f6896a3a0fc 100644 --- a/libcxx/include/future +++ b/libcxx/include/future @@ -370,7 +370,9 @@ template <class R, class Alloc> struct uses_allocator<packaged_task<R>, Alloc>; #include <mutex> #include <thread> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/initializer_list b/libcxx/include/initializer_list index 745d3bd787f..3263906d637 100644 --- a/libcxx/include/initializer_list +++ b/libcxx/include/initializer_list @@ -46,7 +46,9 @@ template<class E> const E* end(initializer_list<E> il) noexcept; #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/libcxx/include/iomanip b/libcxx/include/iomanip index a407360ff0e..15704046227 100644 --- a/libcxx/include/iomanip +++ b/libcxx/include/iomanip @@ -33,7 +33,9 @@ template <class charT> T10 put_time(const struct tm* tmb, const charT* fmt); #include <__config> #include <istream> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/ios b/libcxx/include/ios index e2f2b6fd4d5..7ea63a31ca7 100644 --- a/libcxx/include/ios +++ b/libcxx/include/ios @@ -216,7 +216,9 @@ storage-class-specifier const error_category& iostream_category; #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/libcxx/include/iosfwd b/libcxx/include/iosfwd index 852d9e5f3e8..7e5ac7321f5 100644 --- a/libcxx/include/iosfwd +++ b/libcxx/include/iosfwd @@ -89,7 +89,9 @@ typedef fpos<char_traits<wchar_t>::state_type> wstreampos; #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/libcxx/include/iostream b/libcxx/include/iostream index e828b54fa89..53cd146cc59 100644 --- a/libcxx/include/iostream +++ b/libcxx/include/iostream @@ -40,7 +40,9 @@ extern wostream wclog; #include <istream> #include <ostream> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/istream b/libcxx/include/istream index d2d37768e52..24d9f3a9f63 100644 --- a/libcxx/include/istream +++ b/libcxx/include/istream @@ -155,7 +155,9 @@ template <class charT, class traits, class T> #include <__config> #include <ostream> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/iterator b/libcxx/include/iterator index 97ff78722cf..d62743856b0 100644 --- a/libcxx/include/iterator +++ b/libcxx/include/iterator @@ -321,7 +321,9 @@ template <class T, size_t N> T* end(T (&array)[N]); #include <cassert> #endif +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/limits b/libcxx/include/limits index 989964e0a6a..5f31c4fdfec 100644 --- a/libcxx/include/limits +++ b/libcxx/include/limits @@ -102,7 +102,9 @@ template<> class numeric_limits<cv long double>; */ +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif #include <__config> #include <type_traits> diff --git a/libcxx/include/list b/libcxx/include/list index f2ffcc852e3..345f24dbbe4 100644 --- a/libcxx/include/list +++ b/libcxx/include/list @@ -176,7 +176,9 @@ template <class T, class Alloc> #include <iterator> #include <algorithm> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/locale b/libcxx/include/locale index aa99ff7e858..b2afbd40e07 100644 --- a/libcxx/include/locale +++ b/libcxx/include/locale @@ -192,7 +192,9 @@ template <class charT> class messages_byname; #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/libcxx/include/map b/libcxx/include/map index 886aecf2c9f..8bb75550dba 100644 --- a/libcxx/include/map +++ b/libcxx/include/map @@ -375,7 +375,9 @@ swap(multimap<Key, T, Compare, Allocator>& x, #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/libcxx/include/memory b/libcxx/include/memory index 467d2928909..878dda8730d 100644 --- a/libcxx/include/memory +++ b/libcxx/include/memory @@ -600,7 +600,9 @@ void* align(size_t alignment, size_t size, void*& ptr, size_t& space); #include <cassert> #endif +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/mutex b/libcxx/include/mutex index 297baca5257..37e74d6d575 100644 --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -179,7 +179,9 @@ template<class Callable, class ...Args> #include <tuple> #endif +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/new b/libcxx/include/new index 81c16bdfc97..5bcbad0cd04 100644 --- a/libcxx/include/new +++ b/libcxx/include/new @@ -56,7 +56,9 @@ void operator delete[](void* ptr, void*) noexcept; #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/libcxx/include/numeric b/libcxx/include/numeric index 31493990aef..4ca62e8eb64 100644 --- a/libcxx/include/numeric +++ b/libcxx/include/numeric @@ -60,7 +60,9 @@ template <class ForwardIterator, class T> #include <__config> #include <iterator> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/ostream b/libcxx/include/ostream index f1a3de9c6df..53064961ca9 100644 --- a/libcxx/include/ostream +++ b/libcxx/include/ostream @@ -133,7 +133,9 @@ template <class charT, class traits, class T> #include <iterator> #include <bitset> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/queue b/libcxx/include/queue index bed5bb7af1b..e05ab8f8b0f 100644 --- a/libcxx/include/queue +++ b/libcxx/include/queue @@ -171,7 +171,9 @@ template <class T, class Container, class Compare> #include <functional> #include <algorithm> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/random b/libcxx/include/random index 0e0860e7398..c5c33c0fb32 100644 --- a/libcxx/include/random +++ b/libcxx/include/random @@ -1646,7 +1646,9 @@ class piecewise_linear_distribution #include <ostream> #include <cmath> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/ratio b/libcxx/include/ratio index 9764014a1e3..4ef66c5bf19 100644 --- a/libcxx/include/ratio +++ b/libcxx/include/ratio @@ -70,7 +70,9 @@ typedef ratio<1000000000000000000000000, 1> yotta; // not supported #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/libcxx/include/regex b/libcxx/include/regex index 760f4eb94dd..048fbefc9e9 100644 --- a/libcxx/include/regex +++ b/libcxx/include/regex @@ -732,7 +732,9 @@ typedef regex_token_iterator<wstring::const_iterator> wsregex_token_iterator; #include <vector> #include <deque> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/scoped_allocator b/libcxx/include/scoped_allocator index 9427a376d88..cd051020f61 100644 --- a/libcxx/include/scoped_allocator +++ b/libcxx/include/scoped_allocator @@ -106,7 +106,9 @@ template <class OuterA1, class OuterA2, class... InnerAllocs> #include <__config> #include <memory> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/set b/libcxx/include/set index fe3d382768e..36d3dd49b9b 100644 --- a/libcxx/include/set +++ b/libcxx/include/set @@ -338,7 +338,9 @@ swap(multiset<Key, Compare, Allocator>& x, multiset<Key, Compare, Allocator>& y) #include <__tree> #include <functional> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/sstream b/libcxx/include/sstream index a2a0d31a8ce..1b27195f901 100644 --- a/libcxx/include/sstream +++ b/libcxx/include/sstream @@ -175,7 +175,9 @@ typedef basic_stringstream<wchar_t> wstringstream; #include <istream> #include <string> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/stack b/libcxx/include/stack index 3d72f966928..59906bd89ed 100644 --- a/libcxx/include/stack +++ b/libcxx/include/stack @@ -85,7 +85,9 @@ template <class T, class Container> #include <__config> #include <deque> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/stdexcept b/libcxx/include/stdexcept index d31dc8b072c..ef5de595f03 100644 --- a/libcxx/include/stdexcept +++ b/libcxx/include/stdexcept @@ -46,7 +46,9 @@ public: #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/libcxx/include/streambuf b/libcxx/include/streambuf index feb62c7e193..5dcb597d96f 100644 --- a/libcxx/include/streambuf +++ b/libcxx/include/streambuf @@ -112,7 +112,9 @@ protected: #include <iosfwd> #include <ios> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/string b/libcxx/include/string index 2041510fe50..4e29e8ae166 100644 --- a/libcxx/include/string +++ b/libcxx/include/string @@ -446,7 +446,9 @@ template <> struct hash<wstring>; #include <cassert> #endif +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/strstream b/libcxx/include/strstream index 4ff34a55be4..5eadefd12b9 100644 --- a/libcxx/include/strstream +++ b/libcxx/include/strstream @@ -131,7 +131,9 @@ private: #include <ostream> #include <istream> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/system_error b/libcxx/include/system_error index 5e1e6fe4b29..ea96a66c0db 100644 --- a/libcxx/include/system_error +++ b/libcxx/include/system_error @@ -223,7 +223,9 @@ template <> struct hash<std::error_code>; #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/libcxx/include/tgmath.h b/libcxx/include/tgmath.h index 2388b6ee1d2..fbe1e8248d7 100644 --- a/libcxx/include/tgmath.h +++ b/libcxx/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/libcxx/include/thread b/libcxx/include/thread index ce3ca49ef13..4366c41dbc2 100644 --- a/libcxx/include/thread +++ b/libcxx/include/thread @@ -100,7 +100,9 @@ void sleep_for(const chrono::duration<Rep, Period>& rel_time); #endif #include <pthread.h> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif #define __STDCPP_THREADS__ __cplusplus diff --git a/libcxx/include/tuple b/libcxx/include/tuple index b3c5c92efed..cc679296678 100644 --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -119,7 +119,9 @@ template <class... Types> #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/libcxx/include/type_traits b/libcxx/include/type_traits index c6a20e24503..95d3a3fcae8 100644 --- a/libcxx/include/type_traits +++ b/libcxx/include/type_traits @@ -142,7 +142,9 @@ namespace std #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 @@ struct _LIBCPP_VISIBLE aligned_storage #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(0x400); _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 @@ private: 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 @@ private: 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/libcxx/include/typeindex b/libcxx/include/typeindex index 7fb1513c906..398b52880e9 100644 --- a/libcxx/include/typeindex +++ b/libcxx/include/typeindex @@ -49,7 +49,9 @@ struct hash<type_index> #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/libcxx/include/typeinfo b/libcxx/include/typeinfo index 310c482c4c5..6ffee0f8a3c 100644 --- a/libcxx/include/typeinfo +++ b/libcxx/include/typeinfo @@ -61,7 +61,9 @@ public: #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/libcxx/include/unordered_map b/libcxx/include/unordered_map index cb30fc87d69..56645e09b92 100644 --- a/libcxx/include/unordered_map +++ b/libcxx/include/unordered_map @@ -319,7 +319,9 @@ template <class Key, class T, class Hash, class Pred, class Alloc> #include <functional> #include <stdexcept> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/unordered_set b/libcxx/include/unordered_set index d7615fa05c5..279e90723d6 100644 --- a/libcxx/include/unordered_set +++ b/libcxx/include/unordered_set @@ -305,7 +305,9 @@ template <class Value, class Hash, class Pred, class Alloc> #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/libcxx/include/utility b/libcxx/include/utility index 358fe765d9d..dd9ff33d712 100644 --- a/libcxx/include/utility +++ b/libcxx/include/utility @@ -125,7 +125,9 @@ template<size_t I, class T1, class T2> #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/libcxx/include/valarray b/libcxx/include/valarray index 62c1c66c344..5d3154cc9f8 100644 --- a/libcxx/include/valarray +++ b/libcxx/include/valarray @@ -346,7 +346,9 @@ template <class T> unspecified2 end(const valarray<T>& v); #include <algorithm> #include <functional> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD diff --git a/libcxx/include/vector b/libcxx/include/vector index b334074d0b9..5f47180c4f4 100644 --- a/libcxx/include/vector +++ b/libcxx/include/vector @@ -270,7 +270,9 @@ void swap(vector<T,Allocator>& x, vector<T,Allocator>& y) #include <__split_buffer> #include <__functional_base> +#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER) #pragma GCC system_header +#endif _LIBCPP_BEGIN_NAMESPACE_STD |