From: bkoz Date: Fri, 4 Mar 2011 21:51:56 +0000 (+0000) Subject: 2011-03-04 Benjamin Kosnik X-Git-Tag: upstream/4.9.2~22459 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=cb38c7e01674250d91499b4e2aa140ba501ed449;p=platform%2Fupstream%2Flinaro-gcc.git 2011-03-04 Benjamin Kosnik * 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170686 138bc75d-0d04-0410-961f-82ee72b054a4 --- diff --git a/libstdc++-v3/ChangeLog b/libstdc++-v3/ChangeLog index b43882a..9e1fc0a 100644 --- a/libstdc++-v3/ChangeLog +++ b/libstdc++-v3/ChangeLog @@ -1,7 +1,40 @@ +2011-03-04 Benjamin Kosnik + + * 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 - * 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 diff --git a/libstdc++-v3/acinclude.m4 b/libstdc++-v3/acinclude.m4 index f8db04e..3b9cdcb 100644 --- a/libstdc++-v3/acinclude.m4 +++ b/libstdc++-v3/acinclude.m4 @@ -1993,6 +1993,25 @@ AC_DEFUN([GLIBCXX_ENABLE_CONCEPT_CHECKS], [ ]) 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 dnl + Usage: GLIBCXX_ENABLE_PARALLEL diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure index 53129c6..c2288b3 100755 --- a/libstdc++-v3/configure +++ b/libstdc++-v3/configure @@ -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 diff --git a/libstdc++-v3/configure.ac b/libstdc++-v3/configure.ac index 94f63bb..8ac9cad 100644 --- a/libstdc++-v3/configure.ac +++ b/libstdc++-v3/configure.ac @@ -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 diff --git a/libstdc++-v3/doc/xml/manual/configure.xml b/libstdc++-v3/doc/xml/manual/configure.xml index 4c983a4..6b1efa8 100644 --- a/libstdc++-v3/doc/xml/manual/configure.xml +++ b/libstdc++-v3/doc/xml/manual/configure.xml @@ -161,6 +161,29 @@ + + --enable-libstdcxx-time + This is an abbreviated form of + '--enable-libstdcxx-time=yes'(described next). + + + + --enable-libstdcxx-time=OPTION + 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. + + + --enable-libstdcxx-debug Build separate debug libraries in addition to what is normally built. By default, the debug libraries are compiled with @@ -313,6 +336,19 @@ + + --enable-extern-template[default] + Use extern template to pre-instantiate all required + specializations for certain types defined in the standard libraries. + These types include string and dependents like + char_traits, the templateized io classes, + allocator, 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. + + + --disable-hosted-libstdcxx @@ -324,28 +360,6 @@ - --enable-libstdcxx-time - This is an abbreviated form of - '--enable-libstdcxx-time=yes'(described next). - - - - --enable-libstdcxx-time=OPTION - 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. - - - diff --git a/libstdc++-v3/include/Makefile.am b/libstdc++-v3/include/Makefile.am index 5b6352e..165adc1 100644 --- a/libstdc++-v3/include/Makefile.am +++ b/libstdc++-v3/include/Makefile.am @@ -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' \ diff --git a/libstdc++-v3/include/Makefile.in b/libstdc++-v3/include/Makefile.in index d783158..4f0bb72 100644 --- a/libstdc++-v3/include/Makefile.in +++ b/libstdc++-v3/include/Makefile.in @@ -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' \ diff --git a/libstdc++-v3/include/bits/allocator.h b/libstdc++-v3/include/bits/allocator.h index 9018b5a..9d01a60 100644 --- a/libstdc++-v3/include/bits/allocator.h +++ b/libstdc++-v3/include/bits/allocator.h @@ -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; extern template class allocator; @@ -235,6 +234,6 @@ _GLIBCXX_HAS_NESTED_TYPE(allocator_type) #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/basic_ios.tcc b/libstdc++-v3/include/bits/basic_ios.tcc index 98b227f..8ac6bfd 100644 --- a/libstdc++-v3/include/bits/basic_ios.tcc +++ b/libstdc++-v3/include/bits/basic_ios.tcc @@ -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; @@ -185,6 +184,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/basic_string.tcc b/libstdc++-v3/include/bits/basic_string.tcc index 880fc6b..d988334 100644 --- a/libstdc++-v3/include/bits/basic_string.tcc +++ b/libstdc++-v3/include/bits/basic_string.tcc @@ -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; extern template @@ -1164,6 +1163,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/c++config b/libstdc++-v3/include/bits/c++config index bab2b87..e334f94 100644 --- a/libstdc++-v3/include/bits/c++config +++ b/libstdc++-v3/include/bits/c++config @@ -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. diff --git a/libstdc++-v3/include/bits/codecvt.h b/libstdc++-v3/include/bits/codecvt.h index 42cc471..6ae9bbe 100644 --- a/libstdc++-v3/include/bits/codecvt.h +++ b/libstdc++-v3/include/bits/codecvt.h @@ -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; @@ -502,6 +501,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif // _CODECVT_H diff --git a/libstdc++-v3/include/bits/fstream.tcc b/libstdc++-v3/include/bits/fstream.tcc index 282934e..3d5ca62 100644 --- a/libstdc++-v3/include/bits/fstream.tcc +++ b/libstdc++-v3/include/bits/fstream.tcc @@ -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; extern template class basic_ifstream; @@ -980,6 +979,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/istream.tcc b/libstdc++-v3/include/bits/istream.tcc index 5666b11..9055c31 100644 --- a/libstdc++-v3/include/bits/istream.tcc +++ b/libstdc++-v3/include/bits/istream.tcc @@ -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; extern template istream& ws(istream&); @@ -1090,6 +1089,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/locale_classes.tcc b/libstdc++-v3/include/bits/locale_classes.tcc index e604013..5b2901a 100644 --- a/libstdc++-v3/include/bits/locale_classes.tcc +++ b/libstdc++-v3/include/bits/locale_classes.tcc @@ -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; extern template class collate_byname; @@ -269,6 +268,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/locale_facets.tcc b/libstdc++-v3/include/bits/locale_facets.tcc index 114d852..80bda15 100644 --- a/libstdc++-v3/include/bits/locale_facets.tcc +++ b/libstdc++-v3/include/bits/locale_facets.tcc @@ -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; extern template class numpunct_byname; diff --git a/libstdc++-v3/include/bits/locale_facets_nonio.tcc b/libstdc++-v3/include/bits/locale_facets_nonio.tcc index 3039907..fbf7005 100644 --- a/libstdc++-v3/include/bits/locale_facets_nonio.tcc +++ b/libstdc++-v3/include/bits/locale_facets_nonio.tcc @@ -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; extern template class moneypunct; @@ -1369,6 +1368,6 @@ _GLIBCXX_END_NAMESPACE_LDBL #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/ostream.tcc b/libstdc++-v3/include/bits/ostream.tcc index 6c59e3e..c0dce6a 100644 --- a/libstdc++-v3/include/bits/ostream.tcc +++ b/libstdc++-v3/include/bits/ostream.tcc @@ -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; extern template ostream& endl(ostream&); @@ -405,6 +404,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/ostream_insert.h b/libstdc++-v3/include/bits/ostream_insert.h index 97608a0..f422865 100644 --- a/libstdc++-v3/include/bits/ostream_insert.h +++ b/libstdc++-v3/include/bits/ostream_insert.h @@ -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 */ diff --git a/libstdc++-v3/include/bits/sstream.tcc b/libstdc++-v3/include/bits/sstream.tcc index ffa92e7..89b9a54 100644 --- a/libstdc++-v3/include/bits/sstream.tcc +++ b/libstdc++-v3/include/bits/sstream.tcc @@ -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; extern template class basic_istringstream; @@ -286,6 +285,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/include/bits/streambuf.tcc b/libstdc++-v3/include/bits/streambuf.tcc index d154ef1..6cb85fc 100644 --- a/libstdc++-v3/include/bits/streambuf.tcc +++ b/libstdc++-v3/include/bits/streambuf.tcc @@ -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; extern template @@ -172,6 +171,6 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION #endif _GLIBCXX_END_NAMESPACE_VERSION -} // namespace +} // namespace std #endif diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am index 5524a77..f52993b 100644 --- a/libstdc++-v3/src/Makefile.am +++ b/libstdc++-v3/src/Makefile.am @@ -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)) diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in index 956cbb9..9b65811 100644 --- a/libstdc++-v3/src/Makefile.in +++ b/libstdc++-v3/src/Makefile.in @@ -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 - -# Sources present in the src directory. +@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, 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)) diff --git a/libstdc++-v3/src/valarray-inst.cc b/libstdc++-v3/src/valarray.cc similarity index 100% rename from libstdc++-v3/src/valarray-inst.cc rename to libstdc++-v3/src/valarray.cc diff --git a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc index b81418f..174a8af 100644 --- a/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc +++ b/libstdc++-v3/testsuite/ext/profile/mutex_extensions_neg.cc @@ -22,4 +22,4 @@ #include -// { dg-error "multiple inlined namespaces" "" { target *-*-* } 243 } +// { dg-error "multiple inlined namespaces" "" { target *-*-* } 241 }