[cfe-commits] [PATCH] [libcxx] cleanup a few more compile warnings emitted by GCC
Howard Hinnant
hhinnant at apple.com
Thu Dec 27 15:26:01 PST 2012
Committed revision 171173.
Thanks,
Howard
On Dec 27, 2012, at 6:03 PM, Saleem Abdulrasool <compnerd at compnerd.org> wrote:
> - missing field initializers
>
> Use GCC specific pragmas to mirror the clang pragmas to ignore missing field
> initializers as this is the most concinse, portable manner to
> zero-initialize the aggregates.
>
> - explicit instantiation of base class
>
> Use GCC specific pragma to ignore the -Wextra warning during the constructor
> as the base class constructor will be invoked implicitly if it is missing in
> the initializer list in the most derived class for virtual inheritance, or
> by the appropriate class in the non-virtual inheritance case.
>
> Furthermore, make the sysconf error checking 32-bit clean by checking the return
> value as per the man page. The error code returned by the sysconf call is -1
> for any type of error, with errno providing details of the error code.
>
>
> http://llvm-reviews.chandlerc.com/D247
>
> Files:
> src/locale.cpp
> src/thread.cpp
>
> Index: src/locale.cpp
> ===================================================================
> --- src/locale.cpp
> +++ src/locale.cpp
> @@ -224,6 +224,10 @@
> #endif // _LIBCPP_NO_EXCEPTIONS
> }
>
> +// NOTE(saleem) avoid the `base class should be explicitly initialized in the
> +// copy constructor` warning emitted by GCC
> +#pragma GCC diagnostic ignored "-Wextra"
> +
> locale::__imp::__imp(const __imp& other)
> : facets_(max<size_t>(N, other.facets_.size())),
> name_(other.name_)
> @@ -234,6 +238,8 @@
> facets_[i]->__add_shared();
> }
>
> +#pragma GCC diagnostic pop
> +
> locale::__imp::__imp(const __imp& other, const string& name, locale::category c)
> : facets_(N),
> name_("*")
> @@ -4601,7 +4607,9 @@
> string
> __time_get_storage<char>::__analyze(char fmt, const ctype<char>& ct)
> {
> +#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
> tm t = {0};
> +#pragma GCC diagnostic pop
> t.tm_sec = 59;
> t.tm_min = 55;
> t.tm_hour = 23;
> @@ -4747,7 +4755,9 @@
> wstring
> __time_get_storage<wchar_t>::__analyze(char fmt, const ctype<wchar_t>& ct)
> {
> +#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
> tm t = {0};
> +#pragma GCC diagnositc pop
> t.tm_sec = 59;
> t.tm_min = 55;
> t.tm_hour = 23;
> @@ -4901,7 +4911,9 @@
> void
> __time_get_storage<char>::init(const ctype<char>& ct)
> {
> +#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
> tm t = {0};
> +#pragma GCC diagnostic pop
> char buf[100];
> // __weeks_
> for (int i = 0; i < 7; ++i)
> @@ -4938,11 +4950,15 @@
> void
> __time_get_storage<wchar_t>::init(const ctype<wchar_t>& ct)
> {
> +#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
> tm t = {0};
> +#pragma GCC diagnostic pop
> char buf[100];
> wchar_t wbuf[100];
> wchar_t* wbe;
> +#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
> mbstate_t mb = {0};
> +#pragma GCC diagnostic pop
> // __weeks_
> for (int i = 0; i < 7; ++i)
> {
> @@ -5296,7 +5312,9 @@
> char __nar[100];
> char* __ne = __nar + 100;
> __do_put(__nar, __ne, __tm, __fmt, __mod);
> +#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
> 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_);
> @@ -5821,7 +5839,9 @@
> __thousands_sep_ = base::do_thousands_sep();
> __grouping_ = lc->mon_grouping;
> wchar_t wbuf[100];
> +#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
> 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());
> @@ -5904,7 +5924,9 @@
> __thousands_sep_ = base::do_thousands_sep();
> __grouping_ = lc->mon_grouping;
> wchar_t wbuf[100];
> +#pragma GCC diagnostic ignored "-Wmissing-field-initializers"
> 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());
> Index: src/thread.cpp
> ===================================================================
> --- src/thread.cpp
> +++ src/thread.cpp
> @@ -67,8 +67,10 @@
> return n;
> #elif defined(_POSIX_C_SOURCE) && (_POSIX_C_SOURCE >= 200112L) && defined(_SC_NPROCESSORS_ONLN)
> long result = sysconf(_SC_NPROCESSORS_ONLN);
> - if (result < 0 || result > UINT_MAX)
> - result = 0;
> + // sysconf returns -1 if the name is invalid, the option does not exist or
> + // does not have a definite limit.
> + if (result == -1)
> + return 0;
> return result;
> #else // defined(CTL_HW) && defined(HW_NCPU)
> // TODO: grovel through /proc or check cpuid on x86 and similar
> <D247.1.patch>_______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list