From 21772ec06376b965fd868a68bcf55e60c5a0dcc9 Mon Sep 17 00:00:00 2001 From: Howard Hinnant Date: Fri, 28 Dec 2012 18:15:01 +0000 Subject: [PATCH] Saleem Abdulrasool: GCC complains about the template functions as potentially not being able to be inlined. These do not need to be always-inlined for ABI stability because they are not exported beyond this source due to the unnamed namespace. Also simplified use of the Wmissing-field-initializers pragma as was done for clang. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@171202 91177308-0d34-0410-b5e6-96231b3b80d8 --- src/locale.cpp | 33 +++++---------------------------- 1 file changed, 5 insertions(+), 28 deletions(-) diff --git a/src/locale.cpp b/src/locale.cpp index faceb4e8..53a8a4cc 100644 --- a/src/locale.cpp +++ b/src/locale.cpp @@ -82,7 +82,7 @@ make(A0 a0, A1 a1, A2 a2) } template -_LIBCPP_ALWAYS_INLINE +inline _LIBCPP_CONSTEXPR size_t countof(const T (&)[N]) @@ -91,7 +91,7 @@ countof(const T (&)[N]) } template -_LIBCPP_ALWAYS_INLINE +inline _LIBCPP_CONSTEXPR size_t countof(const T * const begin, const T * const end) @@ -224,10 +224,10 @@ locale::__imp::__imp(const string& name, size_t refs) #endif // _LIBCPP_NO_EXCEPTIONS } -// NOTE(saleem) avoid the `base class should be explicitly initialized in the +// NOTE avoid the `base class should be explicitly initialized in the // copy constructor` warning emitted by GCC -#pragma GCC diagnostic ignored "-Wextra" #pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wextra" locale::__imp::__imp(const __imp& other) : facets_(max(N, other.facets_.size())), @@ -4603,15 +4603,13 @@ __time_get::~__time_get() } #pragma clang diagnostic ignored "-Wmissing-field-initializers" +#pragma GCC diagnostic ignored "-Wmissing-field-initializers" template <> string __time_get_storage::__analyze(char fmt, const ctype& ct) { -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic push tm t = {0}; -#pragma GCC diagnostic pop t.tm_sec = 59; t.tm_min = 55; t.tm_hour = 23; @@ -4757,10 +4755,7 @@ template <> wstring __time_get_storage::__analyze(char fmt, const ctype& ct) { -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic push tm t = {0}; -#pragma GCC diagnositc pop t.tm_sec = 59; t.tm_min = 55; t.tm_hour = 23; @@ -4914,10 +4909,7 @@ template <> void __time_get_storage::init(const ctype& ct) { -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic push tm t = {0}; -#pragma GCC diagnostic pop char buf[100]; // __weeks_ for (int i = 0; i < 7; ++i) @@ -4954,17 +4946,11 @@ template <> void __time_get_storage::init(const ctype& ct) { -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic push tm t = {0}; -#pragma GCC diagnostic pop char buf[100]; wchar_t wbuf[100]; wchar_t* wbe; -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic push mbstate_t mb = {0}; -#pragma GCC diagnostic pop // __weeks_ for (int i = 0; i < 7; ++i) { @@ -5318,10 +5304,7 @@ __time_put::__do_put(wchar_t* __wb, wchar_t*& __we, const tm* __tm, char __nar[100]; char* __ne = __nar + 100; __do_put(__nar, __ne, __tm, __fmt, __mod); -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic push mbstate_t mb = {0}; -#pragma GCC diagnostic pop const char* __nb = __nar; #ifdef _LIBCPP_LOCALE__L_EXTENSIONS size_t j = mbsrtowcs_l(__wb, &__nb, countof(__wb, __we), &mb, __loc_); @@ -5846,10 +5829,7 @@ moneypunct_byname::init(const char* nm) __thousands_sep_ = base::do_thousands_sep(); __grouping_ = lc->mon_grouping; wchar_t wbuf[100]; -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic push mbstate_t mb = {0}; -#pragma GCC diagnostic pop const char* bb = lc->currency_symbol; #ifdef _LIBCPP_LOCALE__L_EXTENSIONS size_t j = mbsrtowcs_l(wbuf, &bb, countof(wbuf), &mb, loc.get()); @@ -5932,10 +5912,7 @@ moneypunct_byname::init(const char* nm) __thousands_sep_ = base::do_thousands_sep(); __grouping_ = lc->mon_grouping; wchar_t wbuf[100]; -#pragma GCC diagnostic ignored "-Wmissing-field-initializers" -#pragma GCC diagnostic push mbstate_t mb = {0}; -#pragma GCC diagnostic pop const char* bb = lc->int_curr_symbol; #ifdef _LIBCPP_LOCALE__L_EXTENSIONS size_t j = mbsrtowcs_l(wbuf, &bb, countof(wbuf), &mb, loc.get());