From c75998259b237abe9fce03ad23bf3ee0197b363a Mon Sep 17 00:00:00 2001 From: paolo Date: Fri, 11 May 2007 18:58:08 +0000 Subject: [PATCH] 2007-05-11 Paolo Carlini * include/ext/pod_char_traits.h (char_traits<>::move): Use __builtin_memmove. * include/bits/locale_classes.h (locale::_Impl::_M_check_same_name, collate_byname(const char*, size_t)): Use __builtin_strcmp. * include/bits/locale_facets.h: Use __builtin_mem* and __builtin_str* everywhere. * include/bits/codecvt.h (codecvt_byname(const char*, size_t)): Use __builtin_strcmp. * include/bits/char_traits.h: Use __builtin_mem* everywhere. * include/bits/fstream.tcc (basic_filebuf<>::underflow, imbue): Use __builtin_memcpy and __builtin_memmove. * include/bits/locale_facets_nonio.h (moneypunct_byname(const char*, size_t __refs)): Use __builtin_strcmp. * include/std/bitset (bitset<>::_M_do_reset): Use __builtin_memset. * config/locale/gnu/c_locale.h: Use __builtin_strlen, __builtin_strcmp, and __builtin_memcpy. * config/locale/gnu/messages_members.h: Likewise. * config/locale/gnu/time_members.h: Likewise. * config/locale/generic/c_locale.h: Likewise. * config/locale/generic/messages_members.h: Likewise. * config/locale/generic/time_members.h: Likewise. * config/os/gnu-linux/ctype_noninline.h: Likewise, avoid strdup. * config/os/tpf/ctype_noninline.h: Likewise. * config/locale/generic/codecvt_members.cc: Include . * config/locale/generic/ctype_members.cc: Likewise. * config/locale/generic/collate_members.cc: Likewise. * config/locale/gnu/c++locale_internal.h: Likewise. * config/locale/darwin/ctype_members.cc: Likewise. * src/ctype.cc: Likewise. * testsuite/19_diagnostics/logic_error/what-1.cc: Likewise. * testsuite/19_diagnostics/logic_error/what-2.cc: Likewise. * testsuite/19_diagnostics/runtime_error/what-1.cc: Likewise. * testsuite/19_diagnostics/runtime_error/what-2.cc: Likewise. * testsuite/19_diagnostics/runtime_error/what-3.cc: Likewise. * config/locale/gnu/messages_members.cc: Avoid strdup. * config/locale/gnu/monetary_members.cc: Likewise. * config/locale/gnu/time_members.cc: Likewise. * config/locale/gnu/time_members.cc: Likewise. * config/locale/generic/c_locale.cc: Likewise. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@124623 138bc75d-0d04-0410-961f-82ee72b054a4 --- libstdc++-v3/ChangeLog | 68 +++++++++++++++++----- libstdc++-v3/config/locale/darwin/ctype_members.cc | 1 + libstdc++-v3/config/locale/generic/c_locale.cc | 29 ++++++--- libstdc++-v3/config/locale/generic/c_locale.h | 11 ++-- .../config/locale/generic/codecvt_members.cc | 1 + .../config/locale/generic/collate_members.cc | 4 +- .../config/locale/generic/ctype_members.cc | 1 + .../config/locale/generic/messages_members.h | 6 +- libstdc++-v3/config/locale/generic/time_members.cc | 19 ++++-- libstdc++-v3/config/locale/generic/time_members.h | 7 ++- .../config/locale/gnu/c++locale_internal.h | 2 + libstdc++-v3/config/locale/gnu/c_locale.h | 7 ++- libstdc++-v3/config/locale/gnu/messages_members.cc | 18 ++++-- libstdc++-v3/config/locale/gnu/messages_members.h | 15 +++-- libstdc++-v3/config/locale/gnu/monetary_members.cc | 26 +++++---- libstdc++-v3/config/locale/gnu/time_members.cc | 21 ++++--- libstdc++-v3/config/locale/gnu/time_members.h | 7 ++- libstdc++-v3/config/os/gnu-linux/ctype_noninline.h | 46 +++++++++------ libstdc++-v3/config/os/tpf/ctype_noninline.h | 29 +++++---- libstdc++-v3/include/bits/char_traits.h | 17 +++--- libstdc++-v3/include/bits/codecvt.h | 3 +- libstdc++-v3/include/bits/fstream.tcc | 6 +- libstdc++-v3/include/bits/locale_classes.h | 6 +- libstdc++-v3/include/bits/locale_facets.h | 15 ++--- libstdc++-v3/include/bits/locale_facets_nonio.h | 3 +- libstdc++-v3/include/ext/pod_char_traits.h | 4 +- libstdc++-v3/include/std/bitset | 3 +- libstdc++-v3/src/ctype.cc | 1 + .../testsuite/19_diagnostics/logic_error/what-1.cc | 4 +- .../testsuite/19_diagnostics/logic_error/what-2.cc | 4 +- .../19_diagnostics/runtime_error/what-1.cc | 4 +- .../19_diagnostics/runtime_error/what-2.cc | 4 +- .../19_diagnostics/runtime_error/what-3.cc | 4 +- 33 files changed, 261 insertions(+), 135 deletions(-) diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index 11f587a7952..ec198c0705a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,18 +1,60 @@ +2007-05-11 Paolo Carlini + + * include/ext/pod_char_traits.h (char_traits<>::move): + Use __builtin_memmove. + * include/bits/locale_classes.h (locale::_Impl::_M_check_same_name, + collate_byname(const char*, size_t)): Use __builtin_strcmp. + * include/bits/locale_facets.h: Use __builtin_mem* and + __builtin_str* everywhere. + * include/bits/codecvt.h (codecvt_byname(const char*, size_t)): + Use __builtin_strcmp. + * include/bits/char_traits.h: Use __builtin_mem* everywhere. + * include/bits/fstream.tcc (basic_filebuf<>::underflow, imbue): + Use __builtin_memcpy and __builtin_memmove. + * include/bits/locale_facets_nonio.h (moneypunct_byname(const char*, + size_t __refs)): Use __builtin_strcmp. + * include/std/bitset (bitset<>::_M_do_reset): Use __builtin_memset. + * config/locale/gnu/c_locale.h: Use __builtin_strlen, __builtin_strcmp, + and __builtin_memcpy. + * config/locale/gnu/messages_members.h: Likewise. + * config/locale/gnu/time_members.h: Likewise. + * config/locale/generic/c_locale.h: Likewise. + * config/locale/generic/messages_members.h: Likewise. + * config/locale/generic/time_members.h: Likewise. + * config/os/gnu-linux/ctype_noninline.h: Likewise, avoid strdup. + * config/os/tpf/ctype_noninline.h: Likewise. + * config/locale/generic/codecvt_members.cc: Include . + * config/locale/generic/ctype_members.cc: Likewise. + * config/locale/generic/collate_members.cc: Likewise. + * config/locale/gnu/c++locale_internal.h: Likewise. + * config/locale/darwin/ctype_members.cc: Likewise. + * src/ctype.cc: Likewise. + * testsuite/19_diagnostics/logic_error/what-1.cc: Likewise. + * testsuite/19_diagnostics/logic_error/what-2.cc: Likewise. + * testsuite/19_diagnostics/runtime_error/what-1.cc: Likewise. + * testsuite/19_diagnostics/runtime_error/what-2.cc: Likewise. + * testsuite/19_diagnostics/runtime_error/what-3.cc: Likewise. + * config/locale/gnu/messages_members.cc: Avoid strdup. + * config/locale/gnu/monetary_members.cc: Likewise. + * config/locale/gnu/time_members.cc: Likewise. + * config/locale/gnu/time_members.cc: Likewise. + * config/locale/generic/c_locale.cc: Likewise. + 2007-05-11 Benjamin Kosnik - * include/std/stdexcept: Remove extra spacing. - - * testsuite/19_diagnostics/stdexceptions.cc: Break into... - * testsuite/19_diagnostics/bad_exception: ...this. Populate. - * testsuite/19_diagnostics/logic_error: ... this. - * testsuite/19_diagnostics/logic_error/what-1.cc: ...this. - * testsuite/19_diagnostics/logic_error/what-2.cc: ...this. - * testsuite/19_diagnostics/runtime_error: ...this. - * testsuite/19_diagnostics/runtime_error/what-1.cc: ...this. - * testsuite/19_diagnostics/runtime_error/what-2.cc: ...this. - * testsuite/19_diagnostics/runtime_error/what-3.cc: ...this. - * testsuite/19_diagnostics/23591_thread-1.c: Move... - * testsuite/19_diagnostics/bad_exception/23591_thread-1.c: ...here. + * include/std/stdexcept: Remove extra spacing. + + * testsuite/19_diagnostics/stdexceptions.cc: Break into... + * testsuite/19_diagnostics/bad_exception: ...this. Populate. + * testsuite/19_diagnostics/logic_error: ... this. + * testsuite/19_diagnostics/logic_error/what-1.cc: ...this. + * testsuite/19_diagnostics/logic_error/what-2.cc: ...this. + * testsuite/19_diagnostics/runtime_error: ...this. + * testsuite/19_diagnostics/runtime_error/what-1.cc: ...this. + * testsuite/19_diagnostics/runtime_error/what-2.cc: ...this. + * testsuite/19_diagnostics/runtime_error/what-3.cc: ...this. + * testsuite/19_diagnostics/23591_thread-1.c: Move... + * testsuite/19_diagnostics/bad_exception/23591_thread-1.c: ...here. 2007-05-10 Paolo Carlini diff --git a/libstdc++-v3/config/locale/darwin/ctype_members.cc b/libstdc++-v3/config/locale/darwin/ctype_members.cc index b50bd35d67e..ebd83219af3 100644 --- a/libstdc++-v3/config/locale/darwin/ctype_members.cc +++ b/libstdc++-v3/config/locale/darwin/ctype_members.cc @@ -37,6 +37,7 @@ #include #include #include +#include namespace std { diff --git a/libstdc++-v3/config/locale/generic/c_locale.cc b/libstdc++-v3/config/locale/generic/c_locale.cc index ae1fa2899f5..732b60955f4 100644 --- a/libstdc++-v3/config/locale/generic/c_locale.cc +++ b/libstdc++-v3/config/locale/generic/c_locale.cc @@ -37,8 +37,10 @@ #include // For errno #include // For isinf, finite, finitef, fabs #include // For strof, strtold +#include #include #include +#include #ifdef _GLIBCXX_HAVE_IEEEFP_H #include @@ -53,7 +55,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const __c_locale&) { // Assumes __s formatted for "C" locale. - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __len = strlen(__old) + 1; + char* __sav = new char[__len]; + memcpy(__sav, __old, __len); setlocale(LC_ALL, "C"); char* __sanity; @@ -91,8 +96,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) else __err |= ios_base::failbit; - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; } template<> @@ -101,7 +106,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const __c_locale&) { // Assumes __s formatted for "C" locale. - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __len = strlen(__old) + 1; + char* __sav = new char[__len]; + memcpy(__sav, __old, __len); setlocale(LC_ALL, "C"); char* __sanity; @@ -121,8 +129,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) else __err |= ios_base::failbit; - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; } template<> @@ -131,7 +139,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) ios_base::iostate& __err, const __c_locale&) { // Assumes __s formatted for "C" locale. - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __len = strlen(__old) + 1; + char* __sav = new char[__len]; + memcpy(__sav, __old, __len); setlocale(LC_ALL, "C"); #if !__LDBL_HAS_INFINITY__ @@ -167,8 +178,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) else __err |= ios_base::failbit; - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; } void diff --git a/libstdc++-v3/config/locale/generic/c_locale.h b/libstdc++-v3/config/locale/generic/c_locale.h index 1b7fc6ddb10..c5e3f25d886 100644 --- a/libstdc++-v3/config/locale/generic/c_locale.h +++ b/libstdc++-v3/config/locale/generic/c_locale.h @@ -1,6 +1,6 @@ // Wrapper for underlying C-language localization -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006 +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -45,9 +45,9 @@ #pragma GCC system_header #include -#include // get std::strlen #include // get std::vsnprintf or std::vsprintf #include +#include #define _GLIBCXX_NUM_CATEGORIES 0 @@ -66,10 +66,11 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { char* __old = std::setlocale(LC_NUMERIC, NULL); char* __sav = NULL; - if (std::strcmp(__old, "C")) + if (__builtin_strcmp(__old, "C")) { - __sav = new char[std::strlen(__old) + 1]; - std::strcpy(__sav, __old); + const size_t __len = __builtin_strlen(__old) + 1; + __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); std::setlocale(LC_NUMERIC, "C"); } diff --git a/libstdc++-v3/config/locale/generic/codecvt_members.cc b/libstdc++-v3/config/locale/generic/codecvt_members.cc index 7b03b5b60ba..da4448d00e5 100644 --- a/libstdc++-v3/config/locale/generic/codecvt_members.cc +++ b/libstdc++-v3/config/locale/generic/codecvt_members.cc @@ -37,6 +37,7 @@ #include #include // For MB_CUR_MAX #include // For MB_LEN_MAX +#include _GLIBCXX_BEGIN_NAMESPACE(std) diff --git a/libstdc++-v3/config/locale/generic/collate_members.cc b/libstdc++-v3/config/locale/generic/collate_members.cc index f614037a238..6f3115d3637 100644 --- a/libstdc++-v3/config/locale/generic/collate_members.cc +++ b/libstdc++-v3/config/locale/generic/collate_members.cc @@ -1,6 +1,7 @@ // std::collate implementation details, generic version -*- C++ -*- -// Copyright (C) 2001, 2002, 2005 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -34,6 +35,7 @@ // Written by Benjamin Kosnik #include +#include _GLIBCXX_BEGIN_NAMESPACE(std) diff --git a/libstdc++-v3/config/locale/generic/ctype_members.cc b/libstdc++-v3/config/locale/generic/ctype_members.cc index 3c7209d65fb..ae1c7cf1d0f 100644 --- a/libstdc++-v3/config/locale/generic/ctype_members.cc +++ b/libstdc++-v3/config/locale/generic/ctype_members.cc @@ -36,6 +36,7 @@ #include #include +#include _GLIBCXX_BEGIN_NAMESPACE(std) diff --git a/libstdc++-v3/config/locale/generic/messages_members.h b/libstdc++-v3/config/locale/generic/messages_members.h index 40986886e8b..f82f2f2b646 100644 --- a/libstdc++-v3/config/locale/generic/messages_members.h +++ b/libstdc++-v3/config/locale/generic/messages_members.h @@ -1,6 +1,7 @@ // std::messages implementation details, generic version -*- C++ -*- -// Copyright (C) 2001, 2003, 2004 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -83,7 +84,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) messages_byname<_CharT>::messages_byname(const char* __s, size_t __refs) : messages<_CharT>(__refs) { - if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) { this->_S_destroy_c_locale(this->_M_c_locale_messages); this->_S_create_c_locale(this->_M_c_locale_messages, __s); diff --git a/libstdc++-v3/config/locale/generic/time_members.cc b/libstdc++-v3/config/locale/generic/time_members.cc index b8ebb746b1b..08fd7a1be4f 100644 --- a/libstdc++-v3/config/locale/generic/time_members.cc +++ b/libstdc++-v3/config/locale/generic/time_members.cc @@ -37,6 +37,7 @@ #include #include +#include _GLIBCXX_BEGIN_NAMESPACE(std) @@ -46,11 +47,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _M_put(char* __s, size_t __maxlen, const char* __format, const tm* __tm) const { - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __llen = strlen(__old) + 1; + char* __sav = new char[__llen]; + memcpy(__sav, __old, __llen); setlocale(LC_ALL, _M_name_timepunct); const size_t __len = strftime(__s, __maxlen, __format, __tm); - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; // Make sure __s is null terminated. if (__len == 0) __s[0] = '\0'; @@ -128,11 +132,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _M_put(wchar_t* __s, size_t __maxlen, const wchar_t* __format, const tm* __tm) const { - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __llen = strlen(__old) + 1; + char* __sav = new char[__llen]; + memcpy(__sav, __old, __llen); setlocale(LC_ALL, _M_name_timepunct); const size_t __len = wcsftime(__s, __maxlen, __format, __tm); - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; // Make sure __s is null terminated. if (__len == 0) __s[0] = L'\0'; diff --git a/libstdc++-v3/config/locale/generic/time_members.h b/libstdc++-v3/config/locale/generic/time_members.h index 8c868c01495..dc387691d9a 100644 --- a/libstdc++-v3/config/locale/generic/time_members.h +++ b/libstdc++-v3/config/locale/generic/time_members.h @@ -1,6 +1,7 @@ // std::time_get, std::time_put implementation, generic version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -62,9 +63,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) size_t __refs) : facet(__refs), _M_data(NULL) { - const size_t __len = std::strlen(__s) + 1; + const size_t __len = __builtin_strlen(__s) + 1; char* __tmp = new char[__len]; - std::memcpy(__tmp, __s, __len); + __builtin_memcpy(__tmp, __s, __len); _M_name_timepunct = __tmp; try diff --git a/libstdc++-v3/config/locale/gnu/c++locale_internal.h b/libstdc++-v3/config/locale/gnu/c++locale_internal.h index cbce1690f46..80a1df92d9c 100644 --- a/libstdc++-v3/config/locale/gnu/c++locale_internal.h +++ b/libstdc++-v3/config/locale/gnu/c++locale_internal.h @@ -38,6 +38,8 @@ #include #include #include +#include +#include #include #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) diff --git a/libstdc++-v3/config/locale/gnu/c_locale.h b/libstdc++-v3/config/locale/gnu/c_locale.h index 7a71b013eee..0e1aa760f24 100644 --- a/libstdc++-v3/config/locale/gnu/c_locale.h +++ b/libstdc++-v3/config/locale/gnu/c_locale.h @@ -44,11 +44,11 @@ #pragma GCC system_header -#include // get std::strlen #include // get std::vsnprintf or std::vsprintf #include #include // For messages #include +#include #define _GLIBCXX_C_LOCALE_GNU 1 @@ -80,8 +80,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __c_locale __old = __gnu_cxx::__uselocale(__cloc); #else char* __old = std::setlocale(LC_ALL, NULL); - char* __sav = new char[std::strlen(__old) + 1]; - std::strcpy(__sav, __old); + const size_t __len = __builtin_strlen(__old) + 1; + char* __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); std::setlocale(LC_ALL, "C"); #endif diff --git a/libstdc++-v3/config/locale/gnu/messages_members.cc b/libstdc++-v3/config/locale/gnu/messages_members.cc index f206e44a636..cbecc56225b 100644 --- a/libstdc++-v3/config/locale/gnu/messages_members.cc +++ b/libstdc++-v3/config/locale/gnu/messages_members.cc @@ -49,11 +49,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __uselocale(__old); return string(__msg); #else - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __len = strlen(__old) + 1; + char* __sav = new char[__len]; + memcpy(__sav, __old, __len); setlocale(LC_ALL, _M_name_messages); const char* __msg = gettext(__dfault.c_str()); - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; return string(__msg); #endif } @@ -69,11 +72,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __uselocale(__old); return _M_convert_from_char(__msg); # else - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __len = strlen(__old) + 1; + char* __sav = new char[__len]; + memcpy(__sav, __old, __len); setlocale(LC_ALL, _M_name_messages); char* __msg = gettext(_M_convert_to_char(__dfault)); - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; return _M_convert_from_char(__msg); # endif } diff --git a/libstdc++-v3/config/locale/gnu/messages_members.h b/libstdc++-v3/config/locale/gnu/messages_members.h index 31504e58bdc..21e4ccb0626 100644 --- a/libstdc++-v3/config/locale/gnu/messages_members.h +++ b/libstdc++-v3/config/locale/gnu/messages_members.h @@ -1,6 +1,7 @@ // std::messages implementation details, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -52,9 +53,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) size_t __refs) : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL) { - const size_t __len = std::strlen(__s) + 1; + const size_t __len = __builtin_strlen(__s) + 1; char* __tmp = new char[__len]; - std::memcpy(__tmp, __s, __len); + __builtin_memcpy(__tmp, __s, __len); _M_name_messages = __tmp; // Last to avoid leaking memory if new throws. @@ -102,11 +103,13 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { if (this->_M_name_messages != locale::facet::_S_get_c_name()) delete [] this->_M_name_messages; - char* __tmp = new char[std::strlen(__s) + 1]; - std::strcpy(__tmp, __s); + const size_t __len = __builtin_strlen(__s) + 1; + char* __tmp = new char[__len]; + __builtin_memcpy(__tmp, __s, __len); this->_M_name_messages = __tmp; - if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) { this->_S_destroy_c_locale(this->_M_c_locale_messages); this->_S_create_c_locale(this->_M_c_locale_messages, __s); diff --git a/libstdc++-v3/config/locale/gnu/monetary_members.cc b/libstdc++-v3/config/locale/gnu/monetary_members.cc index 9a417741e6a..28683b5fae4 100644 --- a/libstdc++-v3/config/locale/gnu/monetary_members.cc +++ b/libstdc++-v3/config/locale/gnu/monetary_members.cc @@ -383,7 +383,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __c_locale __old = __uselocale(__cloc); #else // Switch to named locale so that mbsrtowcs will work. - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __llen = strlen(__old) + 1; + char* __sav = new char[__llen]; + memcpy(__sav, __old, __llen); setlocale(LC_ALL, __name); #endif @@ -457,8 +460,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) __uselocale(__old); #else - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; #endif __throw_exception_again; } @@ -478,8 +481,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) __uselocale(__old); #else - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; #endif } } @@ -525,7 +528,10 @@ _GLIBCXX_BEGIN_NAMESPACE(std) __c_locale __old = __uselocale(__cloc); #else // Switch to named locale so that mbsrtowcs will work. - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __llen = strlen(__old) + 1; + char* __sav = new char[__llen]; + memcpy(__sav, __old, __llen); setlocale(LC_ALL, __name); #endif @@ -600,8 +606,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) __uselocale(__old); #else - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; #endif __throw_exception_again; } @@ -620,8 +626,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) __uselocale(__old); #else - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; #endif } } diff --git a/libstdc++-v3/config/locale/gnu/time_members.cc b/libstdc++-v3/config/locale/gnu/time_members.cc index 10faa8fe470..3c9a61fabaa 100644 --- a/libstdc++-v3/config/locale/gnu/time_members.cc +++ b/libstdc++-v3/config/locale/gnu/time_members.cc @@ -1,6 +1,7 @@ // std::time_get, std::time_put implementation, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -49,11 +50,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const size_t __len = __strftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); #else - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __llen = strlen(__old) + 1; + char* __sav = new char[__llen]; + memcpy(__sav, __old, __llen); setlocale(LC_ALL, _M_name_timepunct); const size_t __len = strftime(__s, __maxlen, __format, __tm); - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; #endif // Make sure __s is null terminated. if (__len == 0) @@ -202,11 +206,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) const size_t __len = __wcsftime_l(__s, __maxlen, __format, __tm, _M_c_locale_timepunct); #else - char* __old = strdup(setlocale(LC_ALL, NULL)); + char* __old = setlocale(LC_ALL, NULL); + const size_t __llen = strlen(__old) + 1; + char* __sav = new char[__llen]; + memcpy(__sav, __old, __llen); setlocale(LC_ALL, _M_name_timepunct); const size_t __len = wcsftime(__s, __maxlen, __format, __tm); - setlocale(LC_ALL, __old); - free(__old); + setlocale(LC_ALL, __sav); + delete [] __sav; #endif // Make sure __s is null terminated. if (__len == 0) diff --git a/libstdc++-v3/config/locale/gnu/time_members.h b/libstdc++-v3/config/locale/gnu/time_members.h index b03aa57561d..7f97bcbbd7b 100644 --- a/libstdc++-v3/config/locale/gnu/time_members.h +++ b/libstdc++-v3/config/locale/gnu/time_members.h @@ -1,6 +1,7 @@ // std::time_get, std::time_put implementation, GNU version -*- C++ -*- -// Copyright (C) 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -59,9 +60,9 @@ _GLIBCXX_BEGIN_NAMESPACE(std) : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL), _M_name_timepunct(NULL) { - const size_t __len = std::strlen(__s) + 1; + const size_t __len = __builtin_strlen(__s) + 1; char* __tmp = new char[__len]; - std::memcpy(__tmp, __s, __len); + __builtin_memcpy(__tmp, __s, __len); _M_name_timepunct = __tmp; try diff --git a/libstdc++-v3/config/os/gnu-linux/ctype_noninline.h b/libstdc++-v3/config/os/gnu-linux/ctype_noninline.h index 0b895e2956e..779b26a0d49 100644 --- a/libstdc++-v3/config/os/gnu-linux/ctype_noninline.h +++ b/libstdc++-v3/config/os/gnu-linux/ctype_noninline.h @@ -1,6 +1,7 @@ // Locale support -*- C++ -*- -// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2004 +// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, +// 2006, 2007 // Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free @@ -48,15 +49,18 @@ ctype::classic_table() throw() { const ctype_base::mask* __ret; - char* __old = strdup(setlocale(LC_CTYPE, NULL)); + char* __old = setlocale(LC_CTYPE, NULL); + const size_t __len = __builtin_strlen(__old) + 1; + char* __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); setlocale(LC_CTYPE, "C"); #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) __ret = *__ctype_b_loc(); #else __ret = __ctype_b; #endif - setlocale(LC_CTYPE, __old); - free(__old); + setlocale(LC_CTYPE, __sav); + delete [] __sav; return __ret; } #endif @@ -71,8 +75,8 @@ _M_table(__table ? __table : _M_c_locale_ctype->__ctype_b), _M_widen_ok(0), _M_narrow_ok(0) { - memset(_M_widen, 0, sizeof(_M_widen)); - memset(_M_narrow, 0, sizeof(_M_narrow)); + __builtin_memset(_M_widen, 0, sizeof(_M_widen)); + __builtin_memset(_M_narrow, 0, sizeof(_M_narrow)); } #else ctype::ctype(__c_locale, const mask* __table, bool __del, @@ -80,7 +84,10 @@ : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) { - char* __old=strdup(setlocale(LC_CTYPE, NULL)); + char* __old = setlocale(LC_CTYPE, NULL); + const size_t __len = __builtin_strlen(__old) + 1; + char* __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); setlocale(LC_CTYPE, "C"); #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) _M_toupper = *__ctype_toupper_loc(); @@ -91,10 +98,10 @@ _M_tolower = __ctype_tolower; _M_table = __table ? __table : __ctype_b; #endif - setlocale(LC_CTYPE, __old); - free(__old); - memset(_M_widen, 0, sizeof(_M_widen)); - memset(_M_narrow, 0, sizeof(_M_narrow)); + setlocale(LC_CTYPE, __sav); + delete [] __sav; + __builtin_memset(_M_widen, 0, sizeof(_M_widen)); + __builtin_memset(_M_narrow, 0, sizeof(_M_narrow)); } #endif @@ -107,15 +114,18 @@ _M_table(__table ? __table : _M_c_locale_ctype->__ctype_b), _M_widen_ok(0), _M_narrow_ok(0) { - memset(_M_widen, 0, sizeof(_M_widen)); - memset(_M_narrow, 0, sizeof(_M_narrow)); + __builtin_memset(_M_widen, 0, sizeof(_M_widen)); + __builtin_memset(_M_narrow, 0, sizeof(_M_narrow)); } #else ctype::ctype(const mask* __table, bool __del, size_t __refs) : facet(__refs), _M_c_locale_ctype(_S_get_c_locale()), _M_del(__table != 0 && __del), _M_widen_ok(0), _M_narrow_ok(0) { - char* __old=strdup(setlocale(LC_CTYPE, NULL)); + char* __old = setlocale(LC_CTYPE, NULL); + const size_t __len = __builtin_strlen(__old) + 1; + char* __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); setlocale(LC_CTYPE, "C"); #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) _M_toupper = *__ctype_toupper_loc(); @@ -126,10 +136,10 @@ _M_tolower = __ctype_tolower; _M_table = __table ? __table : __ctype_b; #endif - setlocale(LC_CTYPE, __old); - free(__old); - memset(_M_widen, 0, sizeof(_M_widen)); - memset(_M_narrow, 0, sizeof(_M_narrow)); + setlocale(LC_CTYPE, __sav); + delete [] __sav; + __builtin_memset(_M_widen, 0, sizeof(_M_widen)); + __builtin_memset(_M_narrow, 0, sizeof(_M_narrow)); } #endif diff --git a/libstdc++-v3/config/os/tpf/ctype_noninline.h b/libstdc++-v3/config/os/tpf/ctype_noninline.h index 3a42ba085c6..e2136742456 100644 --- a/libstdc++-v3/config/os/tpf/ctype_noninline.h +++ b/libstdc++-v3/config/os/tpf/ctype_noninline.h @@ -1,6 +1,6 @@ // Locale support -*- C++ -*- -// Copyright (C) 2004 Free Software Foundation, Inc. +// Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -42,11 +42,14 @@ ctype::classic_table() throw() { const ctype_base::mask* __ret; - char* __old = strdup(setlocale(LC_CTYPE, NULL)); + char* __old = setlocale(LC_CTYPE, NULL); + const size_t __len = __builtin_strlen(__old) + 1; + char* __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); setlocale(LC_CTYPE, "C"); __ret = *__ctype_b_loc(); - setlocale(LC_CTYPE, __old); - free(__old); + setlocale(LC_CTYPE, __sav); + delete [] __sav; return __ret; } @@ -54,26 +57,32 @@ size_t __refs) : facet(__refs), _M_del(__table != 0 && __del) { - char* __old=strdup(setlocale(LC_CTYPE, NULL)); + char* __old = setlocale(LC_CTYPE, NULL); + const size_t __len = __builtin_strlen(__old) + 1; + char* __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); setlocale(LC_CTYPE, "C"); _M_toupper = *__ctype_toupper_loc(); _M_tolower = *__ctype_tolower_loc(); _M_table = __table ? __table : *__ctype_b_loc(); - setlocale(LC_CTYPE, __old); - free(__old); + setlocale(LC_CTYPE, __sav); + delete [] __sav; _M_c_locale_ctype = _S_get_c_locale(); } ctype::ctype(const mask* __table, bool __del, size_t __refs) : facet(__refs), _M_del(__table != 0 && __del) { - char* __old=strdup(setlocale(LC_CTYPE, NULL)); + char* __old = setlocale(LC_CTYPE, NULL); + const size_t __len = __builtin_strlen(__old) + 1; + char* __sav = new char[__len]; + __builtin_memcpy(__sav, __old, __len); setlocale(LC_CTYPE, "C"); _M_toupper = *__ctype_toupper_loc(); _M_tolower = *__ctype_tolower_loc(); _M_table = __table ? __table : *__ctype_b_loc(); - setlocale(LC_CTYPE, __old); - free(__old); + setlocale(LC_CTYPE, __sav); + delete [] __sav; _M_c_locale_ctype = _S_get_c_locale(); } diff --git a/libstdc++-v3/include/bits/char_traits.h b/libstdc++-v3/include/bits/char_traits.h index 03d744c643a..a4b4e3a0d64 100644 --- a/libstdc++-v3/include/bits/char_traits.h +++ b/libstdc++-v3/include/bits/char_traits.h @@ -43,7 +43,6 @@ #pragma GCC system_header -#include // For memmove, memset, memchr #include // For copy, fill_n #include // For streampos #include // For EOF @@ -186,8 +185,8 @@ _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx) char_traits<_CharT>:: move(char_type* __s1, const char_type* __s2, std::size_t __n) { - return static_cast<_CharT*>(std::memmove(__s1, __s2, - __n * sizeof(char_type))); + return static_cast<_CharT*>(__builtin_memmove(__s1, __s2, + __n * sizeof(char_type))); } template @@ -254,27 +253,27 @@ _GLIBCXX_BEGIN_NAMESPACE(std) static int compare(const char_type* __s1, const char_type* __s2, size_t __n) - { return memcmp(__s1, __s2, __n); } + { return __builtin_memcmp(__s1, __s2, __n); } static size_t length(const char_type* __s) - { return strlen(__s); } + { return __builtin_strlen(__s); } static const char_type* find(const char_type* __s, size_t __n, const char_type& __a) - { return static_cast(memchr(__s, __a, __n)); } + { return static_cast(__builtin_memchr(__s, __a, __n)); } static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) - { return static_cast(memmove(__s1, __s2, __n)); } + { return static_cast(__builtin_memmove(__s1, __s2, __n)); } static char_type* copy(char_type* __s1, const char_type* __s2, size_t __n) - { return static_cast(memcpy(__s1, __s2, __n)); } + { return static_cast(__builtin_memcpy(__s1, __s2, __n)); } static char_type* assign(char_type* __s, size_t __n, char_type __a) - { return static_cast(memset(__s, __a, __n)); } + { return static_cast(__builtin_memset(__s, __a, __n)); } static char_type to_char_type(const int_type& __c) diff --git a/libstdc++-v3/include/bits/codecvt.h b/libstdc++-v3/include/bits/codecvt.h index 930c798331a..d8d33070ff7 100644 --- a/libstdc++-v3/include/bits/codecvt.h +++ b/libstdc++-v3/include/bits/codecvt.h @@ -457,7 +457,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) codecvt_byname(const char* __s, size_t __refs = 0) : codecvt<_InternT, _ExternT, _StateT>(__refs) { - if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) { this->_S_destroy_c_locale(this->_M_c_locale_codecvt); this->_S_create_c_locale(this->_M_c_locale_codecvt, __s); diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 2653d6f6570..28dde161490 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -263,14 +263,14 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { char* __buf = new char[__blen]; if (__remainder) - std::memcpy(__buf, _M_ext_next, __remainder); + __builtin_memcpy(__buf, _M_ext_next, __remainder); delete [] _M_ext_buf; _M_ext_buf = __buf; _M_ext_buf_size = __blen; } else if (__remainder) - std::memmove(_M_ext_buf, _M_ext_next, __remainder); + __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); _M_ext_next = _M_ext_buf; _M_ext_end = _M_ext_buf + __remainder; @@ -888,7 +888,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) this->gptr() - this->eback()); const streamsize __remainder = _M_ext_end - _M_ext_next; if (__remainder) - std::memmove(_M_ext_buf, _M_ext_next, __remainder); + __builtin_memmove(_M_ext_buf, _M_ext_next, __remainder); _M_ext_next = _M_ext_buf; _M_ext_end = _M_ext_buf + __remainder; diff --git a/libstdc++-v3/include/bits/locale_classes.h b/libstdc++-v3/include/bits/locale_classes.h index 5e6a8105d8b..60de2695677 100644 --- a/libstdc++-v3/include/bits/locale_classes.h +++ b/libstdc++-v3/include/bits/locale_classes.h @@ -44,7 +44,6 @@ #pragma GCC system_header #include -#include // For strcmp. #include #include @@ -537,7 +536,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) if (_M_names[1]) // We must actually compare all the _M_names: can be all equal! for (size_t __i = 0; __ret && __i < _S_categories_size - 1; ++__i) - __ret = std::strcmp(_M_names[__i], _M_names[__i + 1]) == 0; + __ret = __builtin_strcmp(_M_names[__i], _M_names[__i + 1]) == 0; return __ret; } @@ -810,7 +809,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) collate_byname(const char* __s, size_t __refs = 0) : collate<_CharT>(__refs) { - if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) { this->_S_destroy_c_locale(this->_M_c_locale_collate); this->_S_create_c_locale(this->_M_c_locale_collate, __s); diff --git a/libstdc++-v3/include/bits/locale_facets.h b/libstdc++-v3/include/bits/locale_facets.h index 42865a69c37..7a89927fadd 100644 --- a/libstdc++-v3/include/bits/locale_facets.h +++ b/libstdc++-v3/include/bits/locale_facets.h @@ -899,7 +899,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { if (_M_widen_ok == 1) { - memcpy(__to, __lo, __hi - __lo); + __builtin_memcpy(__to, __lo, __hi - __lo); return __hi; } if (!_M_widen_ok) @@ -964,7 +964,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) { if (__builtin_expect(_M_narrow_ok == 1, true)) { - memcpy(__to, __lo, __hi - __lo); + __builtin_memcpy(__to, __lo, __hi - __lo); return __hi; } if (!_M_narrow_ok) @@ -1101,7 +1101,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) virtual const char* do_widen(const char* __lo, const char* __hi, char_type* __dest) const { - memcpy(__dest, __lo, __hi - __lo); + __builtin_memcpy(__dest, __lo, __hi - __lo); return __hi; } @@ -1154,7 +1154,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) do_narrow(const char_type* __lo, const char_type* __hi, char, char* __dest) const { - memcpy(__dest, __lo, __hi - __lo); + __builtin_memcpy(__dest, __lo, __hi - __lo); return __hi; } @@ -1169,7 +1169,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) _M_widen_ok = 1; // Set _M_widen_ok to 2 if memcpy can't be used. - if (memcmp(__tmp, _M_widen, sizeof(_M_widen))) + if (__builtin_memcmp(__tmp, _M_widen, sizeof(_M_widen))) _M_widen_ok = 2; } @@ -1184,7 +1184,7 @@ _GLIBCXX_BEGIN_NAMESPACE(std) do_narrow(__tmp, __tmp + sizeof(__tmp), 0, _M_narrow); _M_narrow_ok = 1; - if (memcmp(__tmp, _M_narrow, sizeof(_M_narrow))) + if (__builtin_memcmp(__tmp, _M_narrow, sizeof(_M_narrow))) _M_narrow_ok = 2; else { @@ -1922,7 +1922,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) numpunct_byname(const char* __s, size_t __refs = 0) : numpunct<_CharT>(__refs) { - if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) { __c_locale __tmp; this->_S_create_c_locale(__tmp, __s); diff --git a/libstdc++-v3/include/bits/locale_facets_nonio.h b/libstdc++-v3/include/bits/locale_facets_nonio.h index 15de0834fbe..31c90e3b43c 100644 --- a/libstdc++-v3/include/bits/locale_facets_nonio.h +++ b/libstdc++-v3/include/bits/locale_facets_nonio.h @@ -1320,7 +1320,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) moneypunct_byname(const char* __s, size_t __refs = 0) : moneypunct<_CharT, _Intl>(__refs) { - if (std::strcmp(__s, "C") != 0 && std::strcmp(__s, "POSIX") != 0) + if (__builtin_strcmp(__s, "C") != 0 + && __builtin_strcmp(__s, "POSIX") != 0) { __c_locale __tmp; this->_S_create_c_locale(__tmp, __s); diff --git a/libstdc++-v3/include/ext/pod_char_traits.h b/libstdc++-v3/include/ext/pod_char_traits.h index ab3d99e12ef..64bd7df4b59 100644 --- a/libstdc++-v3/include/ext/pod_char_traits.h +++ b/libstdc++-v3/include/ext/pod_char_traits.h @@ -140,8 +140,8 @@ _GLIBCXX_BEGIN_NAMESPACE(std) static char_type* move(char_type* __s1, const char_type* __s2, size_t __n) { - return static_cast(std::memmove(__s1, __s2, - __n * sizeof(char_type))); + return static_cast + (__builtin_memmove(__s1, __s2, __n * sizeof(char_type))); } static char_type* diff --git a/libstdc++-v3/include/std/bitset b/libstdc++-v3/include/std/bitset index 61cad289b55..9ead05915dc 100644 --- a/libstdc++-v3/include/std/bitset +++ b/libstdc++-v3/include/std/bitset @@ -51,7 +51,6 @@ #pragma GCC system_header #include // For size_t -#include // For memset #include #include // For invalid_argument, out_of_range, // overflow_error @@ -165,7 +164,7 @@ _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD) void _M_do_reset() - { std::memset(_M_w, 0, _Nw * sizeof(_WordT)); } + { __builtin_memset(_M_w, 0, _Nw * sizeof(_WordT)); } bool _M_is_equal(const _Base_bitset<_Nw>& __x) const diff --git a/libstdc++-v3/src/ctype.cc b/libstdc++-v3/src/ctype.cc index 4a2e896f7bb..a77e8e5b010 100644 --- a/libstdc++-v3/src/ctype.cc +++ b/libstdc++-v3/src/ctype.cc @@ -29,6 +29,7 @@ #include #include +#include _GLIBCXX_BEGIN_NAMESPACE(std) diff --git a/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc b/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc index f8245ecb628..d5e36d2df84 100644 --- a/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-1.cc @@ -1,6 +1,7 @@ // 2001-02-26 Benjamin Kosnik -// Copyright (C) 2001, 2002, 2007 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -22,6 +23,7 @@ #include #include +#include #include // libstdc++/1972 diff --git a/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc b/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc index 7b8077b1000..030b5e8f61f 100644 --- a/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/logic_error/what-2.cc @@ -1,6 +1,7 @@ // 2001-02-26 Benjamin Kosnik -// Copyright (C) 2001, 2002, 2007 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -22,6 +23,7 @@ #include #include +#include #include // libstdc++/2089 diff --git a/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc b/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc index 64fd201b7a2..a46a421db2e 100644 --- a/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-1.cc @@ -1,6 +1,7 @@ // 2001-02-26 Benjamin Kosnik -// Copyright (C) 2001, 2002, 2007 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -22,6 +23,7 @@ #include #include +#include #include // libstdc++/1972 diff --git a/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc b/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc index 49c56e2d5c4..779c1f51806 100644 --- a/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-2.cc @@ -1,6 +1,7 @@ // 2001-02-26 Benjamin Kosnik -// Copyright (C) 2001, 2002, 2007 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -22,6 +23,7 @@ #include #include +#include #include // libstdc++/2089 diff --git a/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc b/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc index 31560877fd4..04b85c0c5fe 100644 --- a/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc +++ b/libstdc++-v3/testsuite/19_diagnostics/runtime_error/what-3.cc @@ -1,6 +1,7 @@ // 2001-02-26 Benjamin Kosnik -// Copyright (C) 2001, 2002 Free Software Foundation, Inc. +// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007 +// Free Software Foundation, Inc. // // This file is part of the GNU ISO C++ Library. This library is free // software; you can redistribute it and/or modify it under the @@ -22,6 +23,7 @@ #include #include +#include #include // test copy ctors and assignment operators -- 2.11.0