This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
[Patch] libstdc++/28080: do not include <cstdlib>
- From: Paolo Carlini <pcarlini at suse dot de>
- To: libstdc++ <libstdc++ at gcc dot gnu dot org>
- Date: Sun, 04 Mar 2007 18:46:41 +0100
- Subject: [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)