This is the mail archive of the libstdc++@gcc.gnu.org mailing list for the libstdc++ project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [Patch] libstdc++/28080 (partial)


Hi again,

#include <string>

the preprocessed output goes from 482992 bytes to 361737 bytes.

the below additional tweak, which I'm finishing regtesting, leads to 344496 bytes. For now I'll stop here to allow for some testing.


Paolo.

//////////////
2007-02-18  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/28080 (partial)
	* include/bits/stl_algobase.h: Do not include <climits>, use
	std::numeric_limits.
	* include/bits/stl_bvector.h: Use __CHAR_BIT__.
	* config/locale/gnu/codecvt_members.cc: Include <climits>.
	* config/locale/generic/codecvt_members.cc: Likewise.
	* include/std/string: Do not include <algorithm>; do not include
	<memory>, include <bits/allocator.h> instead.
	* include/ext/vstring_fwd.h: Likewise.
	* include/ext/vstring_util.h: Do not include <algorithm>.
	* include/tr1/hashtable_policy.h: Include <algorithm>.
	* testsuite/21_strings/basic_string/replace/char/1.cc: Likewise.
	* testsuite/21_strings/basic_string/replace/wchar_t/1.cc: Likewise.
	* testsuite/23_containers/bitset/cons/1.cc: Likewise.
	* testsuite/util/testsuite_character.h: Likewise.

	* config/locale/gnu/codecvt_members.cc: Also include <cstdlib>,
	for MB_CUR_MAX.
	* config/locale/generic/codecvt_members.cc: Likewise.
Index: include/ext/vstring_util.h
===================================================================
--- include/ext/vstring_util.h	(revision 122039)
+++ include/ext/vstring_util.h	(working copy)
@@ -43,7 +43,6 @@
 #include <bits/stl_function.h>  // For less
 #include <bits/functexcept.h>
 #include <locale>
-#include <algorithm> // For std::distance, srd::search.
 
 _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
 
Index: include/ext/vstring_fwd.h
===================================================================
--- include/ext/vstring_fwd.h	(revision 122074)
+++ include/ext/vstring_fwd.h	(working copy)
@@ -1,6 +1,6 @@
 // Versatile string forward -*- C++ -*-
 
-// Copyright (C) 2005 Free Software Foundation, Inc.
+// Copyright (C) 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
@@ -40,7 +40,7 @@
 
 #include <bits/c++config.h>
 #include <bits/char_traits.h>
-#include <memory> 	// For allocator.
+#include <bits/allocator.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
 
Index: include/bits/stl_algobase.h
===================================================================
--- include/bits/stl_algobase.h	(revision 122039)
+++ include/bits/stl_algobase.h	(working copy)
@@ -65,7 +65,6 @@
 #include <bits/c++config.h>
 #include <cstring>
 #include <cwchar>
-#include <climits>
 #include <cstdlib>
 #include <cstddef>
 #include <iosfwd>
@@ -318,8 +317,8 @@
 
   // Helpers for streambuf iterators (either istream or ostream).
   template<typename _CharT>
-  typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 
-				  ostreambuf_iterator<_CharT> >::__type
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, 
+				    ostreambuf_iterator<_CharT> >::__type
     __copy_aux(_CharT*, _CharT*, ostreambuf_iterator<_CharT>);
 
   template<typename _CharT>
@@ -328,7 +327,8 @@
     __copy_aux(const _CharT*, const _CharT*, ostreambuf_iterator<_CharT>);
 
   template<typename _CharT>
-  typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value, _CharT*>::__type
+    typename __gnu_cxx::__enable_if<__is_char<_CharT>::__value,
+				    _CharT*>::__type
     __copy_aux(istreambuf_iterator<_CharT>, istreambuf_iterator<_CharT>,
 	       _CharT*);
 
@@ -979,17 +979,16 @@
     __glibcxx_requires_valid_range(__first1, __last1);
     __glibcxx_requires_valid_range(__first2, __last2);
 
-#if CHAR_MAX == SCHAR_MAX
-    return std::lexicographical_compare((const signed char*) __first1,
-					(const signed char*) __last1,
-					(const signed char*) __first2,
-					(const signed char*) __last2);
-#else /* CHAR_MAX == SCHAR_MAX */
-    return std::lexicographical_compare((const unsigned char*) __first1,
-					(const unsigned char*) __last1,
-					(const unsigned char*) __first2,
-					(const unsigned char*) __last2);
-#endif /* CHAR_MAX == SCHAR_MAX */
+    if (std::numeric_limits<char>::is_signed)
+      return std::lexicographical_compare((const signed char*) __first1,
+					  (const signed char*) __last1,
+					  (const signed char*) __first2,
+					  (const signed char*) __last2);
+    else
+      return std::lexicographical_compare((const unsigned char*) __first1,
+					  (const unsigned char*) __last1,
+					  (const unsigned char*) __first2,
+					  (const unsigned char*) __last2);
   }
 
 _GLIBCXX_END_NAMESPACE
Index: include/bits/stl_bvector.h
===================================================================
--- include/bits/stl_bvector.h	(revision 122039)
+++ include/bits/stl_bvector.h	(working copy)
@@ -1,6 +1,6 @@
 // vector<bool> specialization -*- 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
@@ -65,7 +65,7 @@
 _GLIBCXX_BEGIN_NESTED_NAMESPACE(std, _GLIBCXX_STD)
 
   typedef unsigned long _Bit_type;
-  enum { _S_word_bit = int(CHAR_BIT * sizeof(_Bit_type)) };
+  enum { _S_word_bit = int(__CHAR_BIT__ * sizeof(_Bit_type)) };
 
   struct _Bit_reference
   {
Index: include/tr1/hashtable_policy.h
===================================================================
--- include/tr1/hashtable_policy.h	(revision 122039)
+++ include/tr1/hashtable_policy.h	(working copy)
@@ -1,6 +1,6 @@
 // Internal policy header for TR1 unordered_set and unordered_map -*- C++ -*-
 
-// Copyright (C) 2005, 2006 Free Software Foundation, Inc.
+// Copyright (C) 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
@@ -35,6 +35,7 @@
 #define _TR1_HASHTABLE_POLICY_H 1
 
 #include <functional> // _Identity, _Select1st
+#include <algorithm> // lower_bound
 #include <tr1/utility>
 #include <ext/type_traits.h>
 
Index: include/std/string
===================================================================
--- include/std/string	(revision 122039)
+++ include/std/string	(working copy)
@@ -1,6 +1,7 @@
 // Components for manipulating sequences of characters -*- C++ -*-
 
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2005
+// 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
@@ -43,8 +44,8 @@
 
 #include <bits/c++config.h>
 #include <bits/stringfwd.h>
-#include <bits/char_traits.h>
-#include <memory> 	// For allocator.
+#include <bits/char_traits.h>  // NB: In turn includes stl_algobase.h
+#include <bits/allocator.h>
 #include <bits/cpp_type_traits.h>
 #include <iosfwd> 	// For operators >>, <<, and getline decls.
 #include <bits/stl_iterator.h>
@@ -52,7 +53,6 @@
 #include <bits/basic_string.h>
 
 #ifndef _GLIBCXX_EXPORT_TEMPLATE
-# include <algorithm> // for find_if
 # include <bits/basic_string.tcc> 
 #endif
 
Index: testsuite/21_strings/basic_string/replace/wchar_t/1.cc
===================================================================
--- testsuite/21_strings/basic_string/replace/wchar_t/1.cc	(revision 122039)
+++ testsuite/21_strings/basic_string/replace/wchar_t/1.cc	(working copy)
@@ -1,6 +1,7 @@
 // 1999-06-10 bkoz
 
-// Copyright (C) 1994, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 1994, 1995, 1996, 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
 // software; you can redistribute it and/or modify it under the
@@ -21,6 +22,7 @@
 // 21.3.5.6 basic_string::replace
 
 #include <string>
+#include <algorithm> // for std::find
 #include <testsuite_hooks.h>
 
 bool test01(void)
Index: testsuite/21_strings/basic_string/replace/char/1.cc
===================================================================
--- testsuite/21_strings/basic_string/replace/char/1.cc	(revision 122039)
+++ testsuite/21_strings/basic_string/replace/char/1.cc	(working copy)
@@ -1,6 +1,7 @@
 // 1999-06-10 bkoz
 
-// Copyright (C) 1994, 1999, 2001, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 1994, 1995, 1996, 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
 // software; you can redistribute it and/or modify it under the
@@ -21,6 +22,7 @@
 // 21.3.5.6 basic_string::replace
 
 #include <string>
+#include <algorithm> // for std::find
 #include <testsuite_hooks.h>
 
 bool test01(void)
Index: testsuite/23_containers/bitset/cons/1.cc
===================================================================
--- testsuite/23_containers/bitset/cons/1.cc	(revision 122039)
+++ testsuite/23_containers/bitset/cons/1.cc	(working copy)
@@ -1,6 +1,7 @@
 // 1999-06-08 bkoz
 
-// Copyright (C) 1999, 2000, 2002, 2003 Free Software Foundation, Inc.
+// Copyright (C) 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
 // software; you can redistribute it and/or modify it under the
@@ -22,6 +23,7 @@
 
 #include <string>
 #include <bitset>
+#include <algorithm> // std::reverse
 #include <stdexcept>
 #include <testsuite_hooks.h>
 
Index: testsuite/util/testsuite_character.h
===================================================================
--- testsuite/util/testsuite_character.h	(revision 122039)
+++ testsuite/util/testsuite_character.h	(working copy)
@@ -3,7 +3,7 @@
 // Testing character type and state type with char_traits and codecvt
 // specializations for the C++ library testsuite.
 //
-// Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+// Copyright (C) 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
@@ -36,6 +36,7 @@
 #include <climits>
 #include <string> // for char_traits
 #include <locale> // for codecvt
+#include <algorithm> // for transform
 #include <ext/pod_char_traits.h>
 
 namespace __gnu_test
Index: config/locale/gnu/codecvt_members.cc
===================================================================
--- config/locale/gnu/codecvt_members.cc	(revision 122039)
+++ config/locale/gnu/codecvt_members.cc	(working copy)
@@ -1,6 +1,7 @@
 // std::codecvt implementation details, GNU version -*- C++ -*-
 
-// Copyright (C) 2002, 2003, 2005, 2006 Free Software Foundation, Inc.
+// Copyright (C) 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,8 @@
 // Written by Benjamin Kosnik <bkoz@redhat.com>
 
 #include <locale>
+#include <cstdlib>  // For MB_CUR_MAX
+#include <climits>  // For MB_LEN_MAX
 #include <bits/c++locale_internal.h>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
Index: config/locale/generic/codecvt_members.cc
===================================================================
--- config/locale/generic/codecvt_members.cc	(revision 122039)
+++ config/locale/generic/codecvt_members.cc	(working copy)
@@ -1,6 +1,7 @@
 // std::codecvt implementation details, generic version -*- C++ -*-
 
-// Copyright (C) 2002, 2005 Free Software Foundation, Inc.
+// Copyright (C) 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,8 @@
 // Written by Benjamin Kosnik <bkoz@redhat.com>
 
 #include <locale>
+#include <cstdlib>  // For MB_CUR_MAX
+#include <climits>  // For MB_LEN_MAX
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]