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]

[Patch] libstdc++/28080: do not include <cstdlib>


Hi,

nothing ground-shaking, but we can easily avoid including <cstdlib> in most of the headers - the only exception in the current standard being <algorithm> because of rand() - thus removing ~25-30 Kb of junk. I mean to apply this in a day or two, the other changes settled a bit more...

Tested x86_64-linux, both locale models, without PCHs + check-performance.

Paolo.

PS: for ext/pb_ds I'm playing very safe.

///////////////
2007-03-05  Paolo Carlini  <pcarlini@suse.de>

	PR libstdc++/28080 (partial)
	* include/bits/stl_algobase.h: Do not include <cstdlib>.
	* src/localename.cc: Do it here.
	* src/ctype.cc: Likewise.
	* include/ext/pb_ds/detail/map_debug_base.hpp: Likewise.
	* include/ext/pb_ds/exception.hpp: Likewise.
	* include/ext/pb_ds/list_update_policy.hpp: Likewise.
	* include/bits/stl_algo.h: Likewise.
	* include/tr1/random: Likewise.
	* testsuite/util/testsuite_hooks.cc: Likewise.
	* testsuite/util/testsuite_abi_check.cc: Likewise.
	* testsuite/util/testsuite_abi.cc: Likewise.
	* testsuite/util/performance/assoc/timing/
	tree_order_statistics_test.hpp: Likewise.
	* config/locale/darwin/ctype_members.cc: Likewise.
	* config/locale/gnu/c++locale_internal.h: Likewise.
	* config/locale/generic/ctype_members.cc: Likewise.
	* config/locale/generic/time_members.cc: Likewise.

	* include/ext/pb_ds/detail/resize_policy/
	hash_load_check_resize_trigger_imp.hpp: Qualify abort.
	* testsuite/util/performance/assoc/timing/
	multimap_find_test.hpp: Likewise.
	* include/std/valarray: Do include <cstdlib>.
	* include/tr1/hashtable: Likewise.
Index: src/localename.cc
===================================================================
--- src/localename.cc	(revision 122524)
+++ src/localename.cc	(working copy)
@@ -1,4 +1,5 @@
-// Copyright (C) 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+// 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
@@ -28,6 +29,7 @@
 
 #include <clocale>
 #include <cstring>
+#include <cstdlib>
 #include <locale>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
Index: src/ctype.cc
===================================================================
--- src/ctype.cc	(revision 122524)
+++ src/ctype.cc	(working copy)
@@ -28,6 +28,7 @@
 // the GNU General Public License.
 
 #include <locale>
+#include <cstdlib>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
@@ -74,7 +75,7 @@
   // XXX At some point, just rename this file to ctype_configure_char.cc
   // and compile it as a separate file instead of including it here.
   // Platform-specific initialization code for ctype tables.
-  #include <bits/ctype_noninline.h>
+#include <bits/ctype_noninline.h>
 
   const size_t ctype<char>::table_size;
 
Index: include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
===================================================================
--- include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp	(revision 122524)
+++ include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp	(working copy)
@@ -280,7 +280,7 @@
 void
 PB_DS_CLASS_C_DEC::
 do_resize(size_type)
-{ abort(); }
+{ std::abort(); }
 
 #ifdef _GLIBCXX_DEBUG
 PB_DS_CLASS_T_DEC
Index: include/ext/pb_ds/detail/map_debug_base.hpp
===================================================================
--- include/ext/pb_ds/detail/map_debug_base.hpp	(revision 122524)
+++ include/ext/pb_ds/detail/map_debug_base.hpp	(working copy)
@@ -1,6 +1,6 @@
 // -*- 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 terms
@@ -51,6 +51,7 @@
 
 #include <list>
 #include <utility>
+#include <cstdlib>
 #include <ext/throw_allocator.h>
 #include <debug/debug.h>
 
@@ -157,7 +158,7 @@
       if (find(r_key) != m_key_set.end())
 	{
 	  std::cerr << "insert_new " << r_key << std::endl;
-	  abort();
+	  std::abort();
 	}
 
       try
@@ -167,7 +168,7 @@
       catch(...)
 	{
 	  std::cerr << "insert_new 1" << r_key << std::endl;
-	  abort();
+	  std::abort();
 	}
       alloc.set_throw_prob(orig_throw_prob);
       _GLIBCXX_DEBUG_ONLY(assert_valid();)
@@ -183,7 +184,7 @@
       if (it == m_key_set.end())
 	{
 	  std::cerr << "erase_existing " << r_key << std::endl;
-	  abort();
+	  std::abort();
 	}
       m_key_set.erase(it);
       _GLIBCXX_DEBUG_ONLY(assert_valid();)
@@ -208,7 +209,7 @@
       if (find(r_key) == m_key_set.end())
         {
           std::cerr << "check_key_exists " << r_key << std::endl;
-          abort();
+          std::abort();
         }
       _GLIBCXX_DEBUG_ONLY(assert_valid();)
     }
@@ -222,7 +223,7 @@
       if (find(r_key) != m_key_set.end())
         {
 	  std::cerr << "check_key_does_not_exist " << r_key << std::endl;
-          abort();
+          std::abort();
         }
     }
 
@@ -237,7 +238,7 @@
 	{
 	  std::cerr << "check_size " << size 
 		    << " " << key_set_size << std::endl;
-	  abort();
+	  std::abort();
 	}
       _GLIBCXX_DEBUG_ONLY(assert_valid();)
      }
Index: include/ext/pb_ds/list_update_policy.hpp
===================================================================
--- include/ext/pb_ds/list_update_policy.hpp	(revision 122524)
+++ include/ext/pb_ds/list_update_policy.hpp	(working copy)
@@ -1,6 +1,6 @@
 // -*- 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 terms
@@ -47,6 +47,7 @@
 #ifndef PB_DS_LU_POLICY_HPP
 #define PB_DS_LU_POLICY_HPP
 
+#include <cstdlib>
 #include <ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp>
 
 namespace pb_ds
Index: include/ext/pb_ds/exception.hpp
===================================================================
--- include/ext/pb_ds/exception.hpp	(revision 122524)
+++ include/ext/pb_ds/exception.hpp	(working copy)
@@ -1,6 +1,6 @@
 // -*- 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 terms
@@ -48,6 +48,7 @@
 #define PB_DS_EXCEPTION_HPP
 
 #include <stdexcept>
+#include <cstdlib>
 
 namespace pb_ds
 {
Index: include/bits/stl_algobase.h
===================================================================
--- include/bits/stl_algobase.h	(revision 122524)
+++ include/bits/stl_algobase.h	(working copy)
@@ -65,7 +65,6 @@
 #include <bits/c++config.h>
 #include <cstring>
 #include <cwchar>
-#include <cstdlib>
 #include <cstddef>
 #include <bits/functexcept.h>
 #include <bits/stl_pair.h>
Index: include/bits/stl_algo.h
===================================================================
--- include/bits/stl_algo.h	(revision 122524)
+++ include/bits/stl_algo.h	(working copy)
@@ -1,6 +1,6 @@
 // Algorithm implementation -*- 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
@@ -64,6 +64,7 @@
 
 #include <bits/stl_heap.h>
 #include <bits/stl_tempbuf.h>  // for _Temporary_buffer
+#include <cstdlib>             // for rand
 #include <debug/debug.h>
 
 // See concept_check.h for the __glibcxx_*_requires macros.
Index: include/tr1/random
===================================================================
--- include/tr1/random	(revision 122524)
+++ include/tr1/random	(working copy)
@@ -37,6 +37,7 @@
 
 #include <cmath>
 #include <cstdio>
+#include <cstdlib>
 #include <string>
 #include <iosfwd>
 #include <limits>
Index: include/tr1/hashtable
===================================================================
--- include/tr1/hashtable	(revision 122524)
+++ include/tr1/hashtable	(working copy)
@@ -1,6 +1,6 @@
 // Internal 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
@@ -56,7 +56,6 @@
 #include <memory>
 #include <iterator>
 #include <cstddef>
-#include <cstdlib>
 #include <cmath>
 #include <bits/functexcept.h>
 #include <tr1/type_traits>	// For true_type and false_type
Index: include/std/valarray
===================================================================
--- include/std/valarray	(revision 122527)
+++ include/std/valarray	(working copy)
@@ -43,7 +43,6 @@
 #include <bits/c++config.h>
 #include <cstddef>
 #include <cmath>
-#include <cstdlib>
 #include <algorithm>
 #include <debug/debug.h>
 
Index: testsuite/util/testsuite_hooks.cc
===================================================================
--- testsuite/util/testsuite_hooks.cc	(revision 122524)
+++ testsuite/util/testsuite_hooks.cc	(working copy)
@@ -43,6 +43,7 @@
 #include <stdexcept>
 #include <cstddef>
 #include <clocale>
+#include <cstdlib>
 #include <locale>
 #include <cxxabi.h>
 
Index: testsuite/util/testsuite_abi_check.cc
===================================================================
--- testsuite/util/testsuite_abi_check.cc	(revision 122524)
+++ testsuite/util/testsuite_abi_check.cc	(working copy)
@@ -1,6 +1,6 @@
 // -*- C++ -*-
 
-// Copyright (C) 2004 Free Software Foundation, Inc.
+// Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
 
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU General Public License as
@@ -33,6 +33,7 @@
  
 #include "testsuite_abi.h"
 #include <iostream>
+#include <cstdlib>
 #include <unistd.h>    // for access(2)
 
 int
Index: testsuite/util/testsuite_abi.cc
===================================================================
--- testsuite/util/testsuite_abi.cc	(revision 122524)
+++ testsuite/util/testsuite_abi.cc	(working copy)
@@ -33,6 +33,7 @@
 #include <sstream>
 #include <fstream>
 #include <iostream>
+#include <cstdlib>
 
 using namespace std;
 
Index: testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp
===================================================================
--- testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp	(revision 122524)
+++ testsuite/util/performance/assoc/timing/tree_order_statistics_test.hpp	(working copy)
@@ -52,6 +52,7 @@
 #include <common_type/assoc/string_form.hpp>
 #include <ext/pb_ds/detail/type_utils.hpp>
 #include <iterator>
+#include <cstdlib>
 
 namespace pb_ds
 {
@@ -84,7 +85,7 @@
 	      const size_t max_size = m_r_container.size();
 	      while (it != e)
 		if (m_r_container.order_of_key(*(it++)) > max_size)
-		  abort();
+		  std::abort();
 	    }
 	}
 
@@ -113,7 +114,7 @@
 		{
 		  const_iterator f_it = m_r_container.find(*(it++));
 		  if (static_cast<size_t>(std::distance(b, f_it)) > max_size)
-		    abort();
+		    std::abort();
 		}
 	    }
 	}
Index: testsuite/util/performance/assoc/timing/multimap_find_test.hpp
===================================================================
--- testsuite/util/performance/assoc/timing/multimap_find_test.hpp	(revision 122524)
+++ testsuite/util/performance/assoc/timing/multimap_find_test.hpp	(working copy)
@@ -1,6 +1,6 @@
 // -*- 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 terms
@@ -84,7 +84,7 @@
 	    }
 
 	  if (not_found_count != 0)
-            abort();
+            std::abort();
 	}
 
       private:
@@ -116,7 +116,7 @@
 	    }
 
 	  if (not_found_count != 0)
-            abort();
+            std::abort();
 	}
 
       private:
Index: config/locale/darwin/ctype_members.cc
===================================================================
--- config/locale/darwin/ctype_members.cc	(revision 122524)
+++ config/locale/darwin/ctype_members.cc	(working copy)
@@ -36,6 +36,7 @@
 
 #include <locale>
 #include <bits/c++locale_internal.h>
+#include <cstdlib>
 
 namespace std
 {
Index: config/locale/gnu/c++locale_internal.h
===================================================================
--- config/locale/gnu/c++locale_internal.h	(revision 122524)
+++ config/locale/gnu/c++locale_internal.h	(working copy)
@@ -1,6 +1,7 @@
 // Prototypes for GLIBC thread locale __-prefixed functions -*- C++ -*-
 
-// Copyright (C) 2002, 2004, 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
@@ -36,6 +37,7 @@
 
 #include <bits/c++config.h>
 #include <clocale>
+#include <cstdlib>
 
 #if __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2)
                                                   
Index: config/locale/generic/ctype_members.cc
===================================================================
--- config/locale/generic/ctype_members.cc	(revision 122524)
+++ config/locale/generic/ctype_members.cc	(working copy)
@@ -35,6 +35,7 @@
 // Written by Benjamin Kosnik <bkoz@redhat.com>
 
 #include <locale>
+#include <cstdlib>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 
Index: config/locale/generic/time_members.cc
===================================================================
--- config/locale/generic/time_members.cc	(revision 122524)
+++ config/locale/generic/time_members.cc	(working copy)
@@ -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
@@ -35,6 +36,7 @@
 // Written by Benjamin Kosnik <bkoz@redhat.com>
 
 #include <locale>
+#include <cstdlib>
 
 _GLIBCXX_BEGIN_NAMESPACE(std)
 

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