PR libstdc++/60936 reduce coupling between objects in libstdc++.a
authorJonathan Wakely <jwakely@redhat.com>
Fri, 3 Feb 2017 18:59:05 +0000 (18:59 +0000)
committerJonathan Wakely <redi@gcc.gnu.org>
Fri, 3 Feb 2017 18:59:05 +0000 (18:59 +0000)
commitb333e8ebb0d4b63acd52249b350de410e6f77e5f
treea04fd957ad83f6c28b7889bbfda9bd14486ac2be
parentd5d9703a2caeb411411e02a102756493587073a6
PR libstdc++/60936 reduce coupling between objects in libstdc++.a

Move explicit instantiation definitions for string I/O functions into
their own files so that iostream and locale definitions are not needed
for uses of strings without I/O. Move functions for throwing C++11
exceptions into the individual files defining the exception types, so
that using any of the functions from functexcept.cc doesn't pull in
large pieces of the C++11 library. Finally, avoid using __int_to_char in
snprintf_lite.cc to avoid pulling in locale-inst.cc for one function.

PR libstdc++/60936
* src/c++11/Makefile.am: Add new files.
* src/c++11/Makefile.in: Regenerate.
* src/c++11/cow-string-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
(operator<<, operator>>, getline): Move explicit instantiations to ...
* src/c++11/cow-string-io-inst.cc: ... new file.
* src/c++11/cow-wstring-inst.cc [!_GLIBCXX_USE_CXX11_ABI]
(operator<<, operator>>, getline): Move explicit instantiations to ...
* src/c++11/cow-wstring-io-inst.cc: ... new file.
* src/c++11/functexcept.cc (__throw_ios_failure, __throw_system_error)
(__throw_future_error, __throw_bad_function_call):
(__throw_regex_error): Move functions for C++11 exceptions to the
files that define the exception types.
* src/c++11/functional.cc (__throw_bad_function_call): Move here.
* src/c++11/future.cc (__throw_future_error): Likewise.
* src/c++11/ios.cc (__throw_ios_failure): Likewise.
* src/c++11/regex.cc (__throw_regex_error): Likewise.
* src/c++11/snprintf_lite.cc (__concat_size_t): Print decimal
representation directly instead of calling __int_to_char.
* src/c++11/sso_string.cc (__sso_string): New file for definition
of __sso_string type.
* src/c++11/string-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
explicit instantiations of narrow string I/O functions.
* src/c++11/system_error.cc (__throw_system_error): Move here.
(__sso_string): Move to new file.
* src/c++11/wstring-io-inst.cc [_GLIBCXX_USE_CXX11_ABI]: New file for
explicit instantiations of wide string I/O functions.
* src/c++98/misc-inst.cc [_GLIBCXX_USE_CXX11_ABI] (operator<<)
(operator>>, getline): Remove explicit instantiations from here.

From-SVN: r245162
18 files changed:
libstdc++-v3/ChangeLog
libstdc++-v3/src/c++11/Makefile.am
libstdc++-v3/src/c++11/Makefile.in
libstdc++-v3/src/c++11/cow-string-inst.cc
libstdc++-v3/src/c++11/cow-string-io-inst.cc [new file with mode: 0644]
libstdc++-v3/src/c++11/cow-wstring-inst.cc
libstdc++-v3/src/c++11/cow-wstring-io-inst.cc [new file with mode: 0644]
libstdc++-v3/src/c++11/functexcept.cc
libstdc++-v3/src/c++11/functional.cc
libstdc++-v3/src/c++11/future.cc
libstdc++-v3/src/c++11/ios.cc
libstdc++-v3/src/c++11/regex.cc
libstdc++-v3/src/c++11/snprintf_lite.cc
libstdc++-v3/src/c++11/sso_string.cc [new file with mode: 0644]
libstdc++-v3/src/c++11/string-io-inst.cc [new file with mode: 0644]
libstdc++-v3/src/c++11/system_error.cc
libstdc++-v3/src/c++11/wstring-io-inst.cc [new file with mode: 0644]
libstdc++-v3/src/c++98/misc-inst.cc