Makefile.am (inst_sources): Make source instantion files conditional.

2011-03-04  Benjamin Kosnik  <bkoz@chula>

	* src/Makefile.am (inst_sources): Make source instantion files
	conditional.
	(XTEMPLATE_FLAGS): Make -fno-implicit-templates conditional.
	* src/Makefile.in: Regenerate.
	* src/valarray-inst.cc: Move to..
	* src/valarray.cc: ...this.
	* acinclude.m4 (GLIBCXX_ENABLE_EXTERN_TEMPLATE]): Define.
	* configure.ac (GLIBCXX_ENABLE_EXTERN_TEMPLATE): Use it.
	* configure: Regenerate.
	* include/Makefile.am (stamp-extern-template): Add.
	* include/Makefile.in: Regenerate.

	* doc/xml/manual/configure.xml: Document --enable-extern-template.

	* include/bits/locale_classes.tcc: Adjust comment.
	* include/bits/locale_facets.tcc: Same.
	* include/bits/basic_ios.tcc: Same.
	* include/bits/istream.tcc: Same.
	* include/bits/codecvt.h: Same.
	* include/bits/ostream.tcc: Same.
	* include/bits/sstream.tcc: Same.
	* include/bits/c++config: Same.
	* include/bits/basic_string.tcc: Same.
	* include/bits/ostream_insert.h: Same.
	* include/bits/locale_facets_nonio.tcc: Same.
	* include/bits/streambuf.tcc: Same.
	* include/bits/allocator.h: Same.
	* include/bits/fstream.tcc: Same.

	* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.

From-SVN: r170686
This commit is contained in:
Benjamin Kosnik 2011-03-04 21:51:56 +00:00
parent bc6ce33429
commit ed4f96af59
25 changed files with 271 additions and 136 deletions

View File

@ -1,7 +1,40 @@
2011-03-04 Benjamin Kosnik <bkoz@chula>
* src/Makefile.am (inst_sources): Make source instantion files
conditional.
(XTEMPLATE_FLAGS): Make -fno-implicit-templates conditional.
* src/Makefile.in: Regenerate.
* src/valarray-inst.cc: Move to..
* src/valarray.cc: ...this.
* acinclude.m4 (GLIBCXX_ENABLE_EXTERN_TEMPLATE]): Define.
* configure.ac (GLIBCXX_ENABLE_EXTERN_TEMPLATE): Use it.
* configure: Regenerate.
* include/Makefile.am (stamp-extern-template): Add.
* include/Makefile.in: Regenerate.
* doc/xml/manual/configure.xml: Document --enable-extern-template.
* include/bits/locale_classes.tcc: Adjust comment.
* include/bits/locale_facets.tcc: Same.
* include/bits/basic_ios.tcc: Same.
* include/bits/istream.tcc: Same.
* include/bits/codecvt.h: Same.
* include/bits/ostream.tcc: Same.
* include/bits/sstream.tcc: Same.
* include/bits/c++config: Same.
* include/bits/basic_string.tcc: Same.
* include/bits/ostream_insert.h: Same.
* include/bits/locale_facets_nonio.tcc: Same.
* include/bits/streambuf.tcc: Same.
* include/bits/allocator.h: Same.
* include/bits/fstream.tcc: Same.
* testsuite/ext/profile/mutex_extensions_neg.cc: Adjust line numbers.
2011-03-02 Benjamin Kosnik <bkoz@redhat.com>
* testsuite/Makefile.am: Make clean fixups.
* testsuite/Makefile.in: Regenerate.
* testsuite/Makefile.am: Make clean fixups.
* testsuite/Makefile.in: Regenerate.
2011-03-02 Marc Glisse <marc.glisse@normalesup.org>

View File

@ -1992,6 +1992,25 @@ AC_DEFUN([GLIBCXX_ENABLE_CONCEPT_CHECKS], [
fi
])
dnl
dnl Use extern templates.
dnl
dnl --enable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 1
dnl --disable-extern-template defines _GLIBCXX_EXTERN_TEMPLATE to 0
dnl + Usage: GLIBCXX_ENABLE_TEMPLATE[(DEFAULT)]
dnl Where DEFAULT is `yes' or `no'.
dnl
AC_DEFUN([GLIBCXX_ENABLE_EXTERN_TEMPLATE], [
GLIBCXX_ENABLE(extern-template,$1,,[enable extern template])
AC_MSG_CHECKING([for extern template support])
AC_MSG_RESULT([$enable_extern_template])
GLIBCXX_CONDITIONAL(ENABLE_EXTERN_TEMPLATE, test $enable_extern_template = yes)
])
dnl
dnl Check for parallel mode pre-requisites, including OpenMP support.
dnl

View File

@ -663,6 +663,8 @@ LIBICONV
OPT_LDFLAGS
SECTION_LDFLAGS
GLIBCXX_LIBS
ENABLE_EXTERN_TEMPLATE_FALSE
ENABLE_EXTERN_TEMPLATE_TRUE
EXTRA_CXX_FLAGS
ENABLE_PARALLEL_FALSE
ENABLE_PARALLEL_TRUE
@ -853,6 +855,7 @@ enable_libstdcxx_debug_flags
enable_libstdcxx_debug
enable_cxx_flags
enable_fully_dynamic_string
enable_extern_template
enable_libstdcxx_time
enable_tls
enable_rpath
@ -1539,6 +1542,8 @@ Optional Features:
--enable-fully-dynamic-string
do not put empty strings in per-process static
memory [default=no]
--enable-extern-template
enable extern template [default=yes]
--enable-libstdcxx-time[=KIND]
use KIND for check type [default=no]
--enable-tls Use thread-local storage [default=yes]
@ -11482,7 +11487,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 11485 "configure"
#line 11490 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -11588,7 +11593,7 @@ else
lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
lt_status=$lt_dlunknown
cat > conftest.$ac_ext <<_LT_EOF
#line 11591 "configure"
#line 11596 "configure"
#include "confdefs.h"
#if HAVE_DLFCN_H
@ -14946,7 +14951,7 @@ fi
#
# Fake what AC_TRY_COMPILE does. XXX Look at redoing this new-style.
cat > conftest.$ac_ext << EOF
#line 14949 "configure"
#line 14954 "configure"
struct S { ~S(); };
void bar();
void foo()
@ -15314,7 +15319,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; }
# Fake what AC_TRY_COMPILE does.
cat > conftest.$ac_ext << EOF
#line 15317 "configure"
#line 15322 "configure"
int main()
{
typedef bool atomic_type;
@ -15351,7 +15356,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
#line 15354 "configure"
#line 15359 "configure"
int main()
{
typedef short atomic_type;
@ -15388,7 +15393,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
#line 15391 "configure"
#line 15396 "configure"
int main()
{
// NB: _Atomic_word not necessarily int.
@ -15426,7 +15431,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; }
rm -f conftest*
cat > conftest.$ac_ext << EOF
#line 15429 "configure"
#line 15434 "configure"
int main()
{
typedef long long atomic_type;
@ -15502,7 +15507,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu
# unnecessary for this test.
cat > conftest.$ac_ext << EOF
#line 15505 "configure"
#line 15510 "configure"
int main()
{
_Decimal32 d1;
@ -17134,6 +17139,29 @@ $as_echo "#define _GLIBCXX_FULLY_DYNAMIC_STRING 1" >>confdefs.h
fi
# Check whether --enable-extern-template was given.
if test "${enable_extern_template+set}" = set; then :
enableval=$enable_extern_template;
case "$enableval" in
yes|no) ;;
*) as_fn_error "Argument to enable/disable extern-template must be yes or no" "$LINENO" 5 ;;
esac
else
enable_extern_template=yes
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for extern template support" >&5
$as_echo_n "checking for extern template support... " >&6; }
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_extern_template" >&5
$as_echo "$enable_extern_template" >&6; }
# Checks for operating systems support that doesn't require linking.
@ -65345,6 +65373,15 @@ else
fi
if test $enable_extern_template = yes; then
ENABLE_EXTERN_TEMPLATE_TRUE=
ENABLE_EXTERN_TEMPLATE_FALSE='#'
else
ENABLE_EXTERN_TEMPLATE_TRUE='#'
ENABLE_EXTERN_TEMPLATE_FALSE=
fi
if test $enable_symvers != no; then
ENABLE_SYMVERS_TRUE=
ENABLE_SYMVERS_FALSE='#'
@ -65794,6 +65831,10 @@ if test -z "${ENABLE_PARALLEL_TRUE}" && test -z "${ENABLE_PARALLEL_FALSE}"; then
as_fn_error "conditional \"ENABLE_PARALLEL\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${ENABLE_EXTERN_TEMPLATE_TRUE}" && test -z "${ENABLE_EXTERN_TEMPLATE_FALSE}"; then
as_fn_error "conditional \"ENABLE_EXTERN_TEMPLATE\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5
fi
if test -z "${ENABLE_SYMVERS_TRUE}" && test -z "${ENABLE_SYMVERS_FALSE}"; then
as_fn_error "conditional \"ENABLE_SYMVERS\" was never defined.
Usually this means the macro was only invoked conditionally." "$LINENO" 5

View File

@ -132,6 +132,7 @@ GLIBCXX_ENABLE_DEBUG([no])
GLIBCXX_ENABLE_PARALLEL([yes])
GLIBCXX_ENABLE_CXX_FLAGS
GLIBCXX_ENABLE_FULLY_DYNAMIC_STRING([no])
GLIBCXX_ENABLE_EXTERN_TEMPLATE([yes])
# Checks for operating systems support that doesn't require linking.
GLIBCXX_CHECK_SYSTEM_ERROR

View File

@ -161,6 +161,29 @@
</para>
</listitem></varlistentry>
<varlistentry><term><code>--enable-libstdcxx-time</code></term>
<listitem><para>This is an abbreviated form of
<code>'--enable-libstdcxx-time=yes'</code>(described next).
</para>
</listitem></varlistentry>
<varlistentry><term><code>--enable-libstdcxx-time=OPTION</code></term>
<listitem><para>Enables link-type checks for the availability of the
clock_gettime clocks, used in the implementation of [time.clock],
and of the nanosleep and sched_yield functions, used in the
implementation of [thread.thread.this] of the current C++0x draft.
The choice OPTION=yes checks for the availability of the facilities
in libc and libposix4. In case of need the latter is also linked
to libstdc++ as part of the build process. OPTION=rt also searches
(and, in case, links) librt. Note that the latter is not always
desirable because, in glibc, for example, in turn it triggers the
linking of libpthread too, which activates locking, a large overhead
for single-thread programs. OPTION=no skips the tests completely.
The default is OPTION=no.
</para>
</listitem></varlistentry>
<varlistentry><term><code>--enable-libstdcxx-debug</code></term>
<listitem><para>Build separate debug libraries in addition to what is normally built.
By default, the debug libraries are compiled with
@ -313,6 +336,19 @@
</para>
</listitem></varlistentry>
<varlistentry><term><code>--enable-extern-template</code>[default]</term>
<listitem><para>Use extern template to pre-instantiate all required
specializations for certain types defined in the standard libraries.
These types include <classname>string</classname> and dependents like
<classname>char_traits</classname>, the templateized io classes,
<classname>allocator</classname>, and others.
Disabling means that implicit
template generation will be used when compiling these types. By
default, this option is on. This option can change the library ABI.
</para>
</listitem></varlistentry>
<varlistentry><term><code>--disable-hosted-libstdcxx</code></term>
<listitem>
<para>
@ -324,28 +360,6 @@
</para>
</listitem></varlistentry>
<varlistentry><term><code>--enable-libstdcxx-time</code></term>
<listitem><para>This is an abbreviated form of
<code>'--enable-libstdcxx-time=yes'</code>(described next).
</para>
</listitem></varlistentry>
<varlistentry><term><code>--enable-libstdcxx-time=OPTION</code></term>
<listitem><para>Enables link-type checks for the availability of the
clock_gettime clocks, used in the implementation of [time.clock],
and of the nanosleep and sched_yield functions, used in the
implementation of [thread.thread.this] of the current C++0x draft.
The choice OPTION=yes checks for the availability of the facilities
in libc and libposix4. In case of need the latter is also linked
to libstdc++ as part of the build process. OPTION=rt also searches
(and, in case, links) librt. Note that the latter is not always
desirable because, in glibc, for example, in turn it triggers the
linking of libpthread too, which activates locking, a large overhead
for single-thread programs. OPTION=no skips the tests completely.
The default is OPTION=no.
</para>
</listitem></varlistentry>
</variablelist>
</section>

View File

@ -1067,6 +1067,14 @@ stamp-namespace-version:
echo 0 > stamp-namespace-version
endif
if ENABLE_EXTERN_TEMPLATE
stamp-extern-template:
echo 1 > stamp-extern-template
else
stamp-extern-template:
echo 0 > stamp-extern-template
endif
if ENABLE_VISIBILITY
stamp-visibility:
echo 1 > stamp-visibility
@ -1082,10 +1090,12 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
stamp-${host_alias} \
${toplevel_srcdir}/gcc/DATESTAMP \
stamp-namespace-version \
stamp-visibility
stamp-visibility \
stamp-extern-template
@date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
ns_version=`cat stamp-namespace-version` ;\
visibility=`cat stamp-visibility` ;\
externtemplate=`cat stamp-extern-template` ;\
ldbl_compat='s,g,g,' ;\
grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \
${CONFIG_HEADER} > /dev/null 2>&1 \
@ -1093,6 +1103,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
-e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
-e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
-e "s,define _GLIBCXX_EXTERN_TEMPLATE, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
-e "$$ldbl_compat" \
< ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \

View File

@ -1462,6 +1462,11 @@ stamp-host: ${host_headers} ${host_headers_noinst} stamp-${host_alias}
@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@stamp-namespace-version:
@ENABLE_SYMVERS_GNU_NAMESPACE_FALSE@ echo 0 > stamp-namespace-version
@ENABLE_EXTERN_TEMPLATE_TRUE@stamp-extern-template:
@ENABLE_EXTERN_TEMPLATE_TRUE@ echo 1 > stamp-extern-template
@ENABLE_EXTERN_TEMPLATE_FALSE@stamp-extern-template:
@ENABLE_EXTERN_TEMPLATE_FALSE@ echo 0 > stamp-extern-template
@ENABLE_VISIBILITY_TRUE@stamp-visibility:
@ENABLE_VISIBILITY_TRUE@ echo 1 > stamp-visibility
@ENABLE_VISIBILITY_FALSE@stamp-visibility:
@ -1474,10 +1479,12 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
stamp-${host_alias} \
${toplevel_srcdir}/gcc/DATESTAMP \
stamp-namespace-version \
stamp-visibility
stamp-visibility \
stamp-extern-template
@date=`cat ${toplevel_srcdir}/gcc/DATESTAMP` ;\
ns_version=`cat stamp-namespace-version` ;\
visibility=`cat stamp-visibility` ;\
externtemplate=`cat stamp-extern-template` ;\
ldbl_compat='s,g,g,' ;\
grep "^[ ]*#[ ]*define[ ][ ]*_GLIBCXX_LONG_DOUBLE_COMPAT[ ][ ]*1[ ]*$$" \
${CONFIG_HEADER} > /dev/null 2>&1 \
@ -1485,6 +1492,7 @@ ${host_builddir}/c++config.h: ${CONFIG_HEADER} \
sed -e "s,define __GLIBCXX__,define __GLIBCXX__ $$date," \
-e "s,define _GLIBCXX_INLINE_VERSION, define _GLIBCXX_INLINE_VERSION $$ns_version," \
-e "s,define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY, define _GLIBCXX_HAVE_ATTRIBUTE_VISIBILITY $$visibility," \
-e "s,define _GLIBCXX_EXTERN_TEMPLATE, define _GLIBCXX_EXTERN_TEMPLATE $$externtemplate," \
-e "$$ldbl_compat" \
< ${glibcxx_srcdir}/include/bits/c++config > $@ ;\
sed -e 's/HAVE_/_GLIBCXX_HAVE_/g' \

View File

@ -1,7 +1,7 @@
// Allocators -*- C++ -*-
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
// Free Software Foundation, Inc.
// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
// 2011 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
@ -139,7 +139,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class allocator<char>;
extern template class allocator<wchar_t>;
@ -235,6 +234,6 @@ _GLIBCXX_HAS_NESTED_TYPE(allocator_type)
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -1,7 +1,7 @@
// basic_ios member functions -*- C++ -*-
// Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
// 2009, 2010 Free Software Foundation, Inc.
// 2009, 2010, 2011 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
@ -175,7 +175,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class basic_ios<char>;
@ -185,6 +184,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -1130,7 +1130,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE > 0
extern template class basic_string<char>;
extern template
@ -1164,6 +1163,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -109,9 +109,7 @@
// Special case: _GLIBCXX_EXTERN_TEMPLATE == -1 disallows extern
// templates only in basic_string, thus activating its debug-mode
// checks even at -O0.
#ifndef _GLIBCXX_EXTERN_TEMPLATE
# define _GLIBCXX_EXTERN_TEMPLATE 1
#endif
#define _GLIBCXX_EXTERN_TEMPLATE
/*
Outline of libstdc++ namespaces.

View File

@ -1,7 +1,7 @@
// Locale support (codecvt) -*- C++ -*-
// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008,
// 2009, 2010 Free Software Foundation, Inc.
// 2009, 2010, 2011 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
@ -476,7 +476,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class codecvt_byname<char, char, mbstate_t>;
@ -502,6 +501,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif // _CODECVT_H

View File

@ -964,7 +964,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class basic_filebuf<char>;
extern template class basic_ifstream<char>;
@ -980,6 +979,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -1038,7 +1038,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class basic_istream<char>;
extern template istream& ws(istream&);
@ -1090,6 +1089,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -1,6 +1,6 @@
// Locale support -*- C++ -*-
// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
// Copyright (C) 2007, 2008, 2009, 2010, 2011 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
@ -241,7 +241,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class collate<char>;
extern template class collate_byname<char>;
@ -269,6 +268,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -1,7 +1,7 @@
// Locale support -*- C++ -*-
// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005,
// 2006, 2007, 2008, 2009, 2010
// 2006, 2007, 2008, 2009, 2010, 2011
// Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
@ -1276,7 +1276,6 @@ _GLIBCXX_END_NAMESPACE_LDBL
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class numpunct<char>;
extern template class numpunct_byname<char>;

View File

@ -1,6 +1,6 @@
// Locale support -*- C++ -*-
// Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
// Copyright (C) 2007, 2008, 2009, 2010, 2011 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
@ -1215,7 +1215,6 @@ _GLIBCXX_END_NAMESPACE_LDBL
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class moneypunct<char, false>;
extern template class moneypunct<char, true>;
@ -1369,6 +1368,6 @@ _GLIBCXX_END_NAMESPACE_LDBL
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -357,7 +357,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class basic_ostream<char>;
extern template ostream& endl(ostream&);
@ -405,6 +404,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -114,7 +114,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template ostream& __ostream_insert(ostream&, const char*, streamsize);
@ -125,6 +124,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif /* _OSTREAM_INSERT_H */

View File

@ -270,7 +270,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class basic_stringbuf<char>;
extern template class basic_istringstream<char>;
@ -286,6 +285,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -146,7 +146,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
// Inhibit implicit instantiations for required instantiations,
// which are defined via explicit instantiations elsewhere.
// NB: This syntax is a GNU extension.
#if _GLIBCXX_EXTERN_TEMPLATE
extern template class basic_streambuf<char>;
extern template
@ -172,6 +171,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION
#endif
_GLIBCXX_END_NAMESPACE_VERSION
} // namespace
} // namespace std
#endif

View File

@ -1,7 +1,7 @@
## Makefile for the src subdirectory of the GNU C++ Standard library.
##
## Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
## 2006, 2007, 2008, 2009, 2010
## 2006, 2007, 2008, 2009, 2010, 2011
## Free Software Foundation, Inc.
##
## This file is part of the libstdc++ version 3 distribution.
@ -108,7 +108,7 @@ host_sources = \
messages_members.cc \
monetary_members.cc \
numeric_members.cc \
time_members.cc
time_members.cc
codecvt_members.cc: ${glibcxx_srcdir}/$(CCODECVT_CC)
$(LN_S) ${glibcxx_srcdir}/$(CCODECVT_CC) . || true
@ -138,7 +138,8 @@ atomicity.cc: ${atomicity_file}
# Source files linked in via configuration/make substitution for a
# particular host, but with ad hoc naming rules.
host_sources_extra = \
basic_file.cc c++locale.cc ${ldbl_compat_sources} ${parallel_sources}
basic_file.cc c++locale.cc \
${inst_sources} ${ldbl_compat_sources} ${parallel_sources}
c++locale.cc: ${glibcxx_srcdir}/$(CLOCALE_CC)
$(LN_S) ${glibcxx_srcdir}/$(CLOCALE_CC) ./$@ || true
@ -148,8 +149,8 @@ basic_file.cc: ${glibcxx_srcdir}/$(BASIC_FILE_CC)
if ENABLE_PARALLEL
parallel_sources = parallel_settings.cc \
compatibility-parallel_list.cc \
compatibility-parallel_list-2.cc
compatibility-parallel_list.cc \
compatibility-parallel_list-2.cc
else
parallel_sources =
endif
@ -160,7 +161,30 @@ else
ldbl_compat_sources =
endif
# Sources present in the src directory.
if ENABLE_EXTERN_TEMPLATE
XTEMPLATE_FLAGS = -fno-implicit-templates
inst_sources = \
allocator-inst.cc \
concept-inst.cc \
ext-inst.cc \
fstream-inst.cc \
ios-inst.cc \
iostream-inst.cc \
istream-inst.cc \
locale-inst.cc \
misc-inst.cc \
ostream-inst.cc \
sstream-inst.cc \
streambuf-inst.cc \
string-inst.cc \
wlocale-inst.cc \
wstring-inst.cc
else
XTEMPLATE_FLAGS =
inst_sources =
endif
# Sources present in the src directory, always present.
sources = \
atomic.cc \
bitmap_allocator.cc \
@ -198,33 +222,18 @@ sources = \
strstream.cc \
system_error.cc \
tree.cc \
allocator-inst.cc \
concept-inst.cc \
fstream-inst.cc \
ext-inst.cc \
ios-inst.cc \
iostream-inst.cc \
istream-inst.cc \
istream.cc \
locale-inst.cc \
misc-inst.cc \
ostream-inst.cc \
placeholders.cc \
regex.cc \
sstream-inst.cc \
streambuf-inst.cc \
streambuf.cc \
string-inst.cc \
valarray-inst.cc \
wlocale-inst.cc \
wstring-inst.cc \
mutex.cc \
condition_variable.cc \
chrono.cc \
thread.cc \
future.cc \
valarray.cc \
${host_sources} \
${host_sources_extra}
${host_sources_extra}
vpath % $(top_srcdir)/src
vpath % $(top_srcdir)
@ -240,7 +249,7 @@ libstdc___la_DEPENDENCIES = \
$(top_builddir)/libsupc++/libsupc++convenience.la
libstdc___la_LDFLAGS = \
-version-info $(libtool_VERSION) ${version_arg} -lm
-version-info $(libtool_VERSION) ${version_arg} -lm
libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
@ -383,7 +392,7 @@ endif
# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
# as the occasion calls for it.
AM_CXXFLAGS = \
-fno-implicit-templates \
$(XTEMPLATE_FLAGS) \
$(WARN_CXXFLAGS) \
$(OPTIMIZE_CXXFLAGS) \
$(CONFIG_CXXFLAGS)
@ -407,8 +416,10 @@ AM_CXXFLAGS = \
# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
# attempt to infer which configuration to use
LTCXXCOMPILE = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
$(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag CXX \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
$(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS)
LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))

View File

@ -91,13 +91,21 @@ am__DEPENDENCIES_1 =
am__objects_1 = atomicity.lo codecvt_members.lo collate_members.lo \
ctype_members.lo messages_members.lo monetary_members.lo \
numeric_members.lo time_members.lo
@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_2 = compatibility-ldbl.lo
@ENABLE_PARALLEL_TRUE@am__objects_3 = parallel_settings.lo \
@ENABLE_EXTERN_TEMPLATE_TRUE@am__objects_2 = allocator-inst.lo \
@ENABLE_EXTERN_TEMPLATE_TRUE@ concept-inst.lo ext-inst.lo \
@ENABLE_EXTERN_TEMPLATE_TRUE@ fstream-inst.lo ios-inst.lo \
@ENABLE_EXTERN_TEMPLATE_TRUE@ iostream-inst.lo istream-inst.lo \
@ENABLE_EXTERN_TEMPLATE_TRUE@ locale-inst.lo misc-inst.lo \
@ENABLE_EXTERN_TEMPLATE_TRUE@ ostream-inst.lo sstream-inst.lo \
@ENABLE_EXTERN_TEMPLATE_TRUE@ streambuf-inst.lo string-inst.lo \
@ENABLE_EXTERN_TEMPLATE_TRUE@ wlocale-inst.lo wstring-inst.lo
@GLIBCXX_LDBL_COMPAT_TRUE@am__objects_3 = compatibility-ldbl.lo
@ENABLE_PARALLEL_TRUE@am__objects_4 = parallel_settings.lo \
@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list.lo \
@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list-2.lo
am__objects_4 = basic_file.lo c++locale.lo $(am__objects_2) \
$(am__objects_3)
am__objects_5 = atomic.lo bitmap_allocator.lo pool_allocator.lo \
am__objects_5 = basic_file.lo c++locale.lo $(am__objects_2) \
$(am__objects_3) $(am__objects_4)
am__objects_6 = atomic.lo bitmap_allocator.lo pool_allocator.lo \
mt_allocator.lo codecvt.lo compatibility.lo \
compatibility-c++0x.lo compatibility-debug_list.lo \
compatibility-debug_list-2.lo compatibility-list.lo \
@ -107,15 +115,11 @@ am__objects_5 = atomic.lo bitmap_allocator.lo pool_allocator.lo \
ios_init.lo ios_locale.lo limits.lo list.lo locale.lo \
locale_init.lo locale_facets.lo localename.lo \
math_stubs_float.lo math_stubs_long_double.lo stdexcept.lo \
strstream.lo system_error.lo tree.lo allocator-inst.lo \
concept-inst.lo fstream-inst.lo ext-inst.lo ios-inst.lo \
iostream-inst.lo istream-inst.lo istream.lo locale-inst.lo \
misc-inst.lo ostream-inst.lo placeholders.lo regex.lo \
sstream-inst.lo streambuf-inst.lo streambuf.lo string-inst.lo \
valarray-inst.lo wlocale-inst.lo wstring-inst.lo mutex.lo \
strstream.lo system_error.lo tree.lo istream.lo \
placeholders.lo regex.lo streambuf.lo mutex.lo \
condition_variable.lo chrono.lo thread.lo future.lo \
$(am__objects_1) $(am__objects_4)
am_libstdc___la_OBJECTS = $(am__objects_5)
valarray.lo $(am__objects_1) $(am__objects_5)
am_libstdc___la_OBJECTS = $(am__objects_6)
libstdc___la_OBJECTS = $(am_libstdc___la_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
depcomp =
@ -360,24 +364,45 @@ host_sources = \
messages_members.cc \
monetary_members.cc \
numeric_members.cc \
time_members.cc
time_members.cc
atomicity_file = ${glibcxx_srcdir}/$(ATOMICITY_SRCDIR)/atomicity.h
# Source files linked in via configuration/make substitution for a
# particular host, but with ad hoc naming rules.
host_sources_extra = \
basic_file.cc c++locale.cc ${ldbl_compat_sources} ${parallel_sources}
basic_file.cc c++locale.cc \
${inst_sources} ${ldbl_compat_sources} ${parallel_sources}
@ENABLE_PARALLEL_FALSE@parallel_sources =
@ENABLE_PARALLEL_TRUE@parallel_sources = parallel_settings.cc \
@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list.cc \
@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list-2.cc
@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list.cc \
@ENABLE_PARALLEL_TRUE@ compatibility-parallel_list-2.cc
@GLIBCXX_LDBL_COMPAT_FALSE@ldbl_compat_sources =
@GLIBCXX_LDBL_COMPAT_TRUE@ldbl_compat_sources = compatibility-ldbl.cc
@ENABLE_EXTERN_TEMPLATE_FALSE@XTEMPLATE_FLAGS =
@ENABLE_EXTERN_TEMPLATE_TRUE@XTEMPLATE_FLAGS = -fno-implicit-templates
@ENABLE_EXTERN_TEMPLATE_FALSE@inst_sources =
@ENABLE_EXTERN_TEMPLATE_TRUE@inst_sources = \
@ENABLE_EXTERN_TEMPLATE_TRUE@ allocator-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ concept-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ ext-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ fstream-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ ios-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ iostream-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ istream-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ locale-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ misc-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ ostream-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ sstream-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ streambuf-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ string-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ wlocale-inst.cc \
@ENABLE_EXTERN_TEMPLATE_TRUE@ wstring-inst.cc
# Sources present in the src directory.
# Sources present in the src directory, always present.
sources = \
atomic.cc \
bitmap_allocator.cc \
@ -415,33 +440,18 @@ sources = \
strstream.cc \
system_error.cc \
tree.cc \
allocator-inst.cc \
concept-inst.cc \
fstream-inst.cc \
ext-inst.cc \
ios-inst.cc \
iostream-inst.cc \
istream-inst.cc \
istream.cc \
locale-inst.cc \
misc-inst.cc \
ostream-inst.cc \
placeholders.cc \
regex.cc \
sstream-inst.cc \
streambuf-inst.cc \
streambuf.cc \
string-inst.cc \
valarray-inst.cc \
wlocale-inst.cc \
wstring-inst.cc \
mutex.cc \
condition_variable.cc \
chrono.cc \
thread.cc \
future.cc \
valarray.cc \
${host_sources} \
${host_sources_extra}
${host_sources_extra}
libstdc___la_SOURCES = $(sources)
libstdc___la_LIBADD = \
@ -453,7 +463,7 @@ libstdc___la_DEPENDENCIES = \
$(top_builddir)/libsupc++/libsupc++convenience.la
libstdc___la_LDFLAGS = \
-version-info $(libtool_VERSION) ${version_arg} -lm
-version-info $(libtool_VERSION) ${version_arg} -lm
libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS)
@ -470,7 +480,7 @@ PARALLEL_FLAGS = -fopenmp -D_GLIBCXX_PARALLEL -I$(glibcxx_builddir)/../libgomp
# OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden
# as the occasion calls for it.
AM_CXXFLAGS = \
-fno-implicit-templates \
$(XTEMPLATE_FLAGS) \
$(WARN_CXXFLAGS) \
$(OPTIMIZE_CXXFLAGS) \
$(CONFIG_CXXFLAGS)
@ -494,8 +504,10 @@ AM_CXXFLAGS = \
# correct solution is to add `--tag CXX' to LTCXXCOMPILE and maybe
# CXXLINK, just after $(LIBTOOL), so that libtool doesn't have to
# attempt to infer which configuration to use
LTCXXCOMPILE = $(LIBTOOL) --tag CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
$(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
LTCXXCOMPILE = $(LIBTOOL) --tag CXX \
$(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile \
$(CXX) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CXXFLAGS) $(CXXFLAGS)
LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS))

View File

@ -22,4 +22,4 @@
#include <vector>
// { dg-error "multiple inlined namespaces" "" { target *-*-* } 243 }
// { dg-error "multiple inlined namespaces" "" { target *-*-* } 241 }