diff --git a/libcxx/src/chrono.cpp b/libcxx/src/chrono.cpp index 8ff3faf9df6a93..5aa7af75894b83 100644 --- a/libcxx/src/chrono.cpp +++ b/libcxx/src/chrono.cpp @@ -80,9 +80,9 @@ class GetSystemTimeInit { GetSystemTimeAsFileTimePtr fp; }; -# 83 "chrono.cpp" 1 3 -GetSystemTimeInit GetSystemTimeAsFileTimeFunc _LIBCPP_INIT_PRIORITY_MAX; -# 85 "chrono.cpp" 2 +// Pretend we're inside a system header so the compiler doesn't flag the use of the init_priority +// attribute with a value that's reserved for the implementation (we're the implementation). +#include "chrono_system_time_init.h" } // namespace #endif diff --git a/libcxx/src/chrono_system_time_init.h b/libcxx/src/chrono_system_time_init.h new file mode 100644 index 00000000000000..3c5a0c33a56aa3 --- /dev/null +++ b/libcxx/src/chrono_system_time_init.h @@ -0,0 +1,2 @@ +#pragma GCC system_header +GetSystemTimeInit GetSystemTimeAsFileTimeFunc _LIBCPP_INIT_PRIORITY_MAX; \ No newline at end of file diff --git a/libcxx/src/experimental/memory_resource.cpp b/libcxx/src/experimental/memory_resource.cpp index be2fb47fad166b..29db8b3dee6ded 100644 --- a/libcxx/src/experimental/memory_resource.cpp +++ b/libcxx/src/experimental/memory_resource.cpp @@ -76,9 +76,9 @@ union ResourceInitHelper { ~ResourceInitHelper() {} }; -# 79 "memory_resource.cpp" 1 3 -_LIBCPP_SAFE_STATIC ResourceInitHelper res_init _LIBCPP_INIT_PRIORITY_MAX; -# 81 "memory_resource.cpp" 2 +// Pretend we're inside a system header so the compiler doesn't flag the use of the init_priority +// attribute with a value that's reserved for the implementation (we're the implementation). +#include "memory_resource_init_helper.h" } // end namespace diff --git a/libcxx/src/experimental/memory_resource_init_helper.h b/libcxx/src/experimental/memory_resource_init_helper.h new file mode 100644 index 00000000000000..2e1cae5ecc6041 --- /dev/null +++ b/libcxx/src/experimental/memory_resource_init_helper.h @@ -0,0 +1,2 @@ +#pragma GCC system_header +_LIBCPP_SAFE_STATIC ResourceInitHelper res_init _LIBCPP_INIT_PRIORITY_MAX; \ No newline at end of file diff --git a/libcxx/src/iostream.cpp b/libcxx/src/iostream.cpp index 6070449621a071..d87bf7af84ba8d 100644 --- a/libcxx/src/iostream.cpp +++ b/libcxx/src/iostream.cpp @@ -85,12 +85,9 @@ __asm__("?wclog@" _LIBCPP_ABI_NAMESPACE_STR "@std@@3V?$basic_ostream@_WU?$char_t ; #endif // _LIBCPP_HAS_NO_WIDE_CHARACTERS -// Hacky way to make the compiler believe that we're inside a system header so -// it doesn't flag the use of the init_priority attribute with a value that's -// reserved for the implementation (we're the implementation). -# 80 "iostream.cpp" 1 3 -_LIBCPP_HIDDEN ios_base::Init __start_std_streams _LIBCPP_INIT_PRIORITY_MAX; -# 82 "iostream.cpp" 2 +// Pretend we're inside a system header so the compiler doesn't flag the use of the init_priority +// attribute with a value that's reserved for the implementation (we're the implementation). +#include "iostream_init.h" // On Windows the TLS storage for locales needs to be initialized before we create // the standard streams, otherwise it may not be alive during program termination diff --git a/libcxx/src/iostream_init.h b/libcxx/src/iostream_init.h new file mode 100644 index 00000000000000..b0a60f42a67c24 --- /dev/null +++ b/libcxx/src/iostream_init.h @@ -0,0 +1,2 @@ +#pragma GCC system_header +_LIBCPP_HIDDEN ios_base::Init __start_std_streams _LIBCPP_INIT_PRIORITY_MAX; \ No newline at end of file