2004-01-24 Paolo Carlini <pcarlini@suse.de>
* include/bits/basic_string.tcc (operator+(const _CharT*,
const basic_string&)): No need to go through the append
taking two iterators.
From-SVN: r76517
2004-01-22 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc
(money_put::do_put(..., long double)): Use the basic_string
constructor for char arrays, not that for C-strings, to pass
__digits to do_put(..., const string_type&): __ws isn't
null-terminated.
From-SVN: r76355
2004-01-19 Stefan Olsson <stefan@snon.net>
* include/ext/mt_allocator.h: If a thread, when it dies, still has
memory on it's freelist this memory is not returned to global
list. Simplification of deallocate so that memory is always
returned to the calling thread id's freelist instead of to
global. Fix typos. Add volatile where appropriate.
From-SVN: r76200
* testsuite/ext/stdio_filebuf/char/10063-2.cc: Treat unbuffered.
* testsuite/ext/stdio_filebuf/char/10063-3.cc: New test. Like -2 but
use __gnu_cxx::stdio_sync_filebuf<char> instead; allow buffered stream.
From-SVN: r76191
2004-01-16 Danny Smith <dannysmith@users.sourceforge.net>
* testsuite/testsuite_hooks.cc (try_mkfifo): Avoid calling
mkfifo for mingw32.
From-SVN: r75963
2004-01-15 Stefan Olsson <stefan@snon.net>
* include/ext/mt_allocator.h: Reuse thread id's as soon as
possible by changing the behaviour of thread_freelist to do
push_front when threads die instead of push_back.
From-SVN: r75939
2004-01-13 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get::do_get(void*&)):
Set correctly just basefield, the only group that matters.
From-SVN: r75810
2004-01-13 Paolo Carlini <pcarlini@suse.de>
* include/ext/rope (_Rope_rep_alloc_base): Eliminate.
(_Rope_rep_base): Inherit directly from the rope allocator;
use rebinding instead of _Alloc_traits; pick up data member
from _Rope_rep_alloc_base.
(_Rope_alloc_base): Eliminate.
(_Rope_base): Inherit directly from the rope allocator; use
rebinding instead of _Alloc_traits; pick up data member from
_Rope_alloc_base.
(rope::_S_new_RopeLeaf, rope::_S_new_RopeConcatenation,
rope::_S_new_RopeFunction, rope::_S_new_RopeSubstring): Tweak.
From-SVN: r75800
2004-01-13 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/13650
* include/bits/basic_string.tcc (compare(size_type, size_type,
const _CharT*, size_type)): Implement correctly the resolution
of DR 5: basically, s is a char array, -not- a C string.
* include/bits/basic_string.h: Tweak some comments.
* testsuite/21_strings/basic_string/compare/char/13650.cc: New.
* testsuite/21_strings/basic_string/compare/wchar_t/13650.cc: New.
From-SVN: r75798
2004-01-12 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (struct __numpunct_cache):
Add members _M_truename_len and _M_falsename_len, caching
the lengths of _M_truename and _M_falsename.
(__numpunct_cache<>::_M_cache): Assign the latter.
* include/bits/locale_facets.tcc (num_get::do_get(bool&),
num_put::do_put(bool)): Use the new members, thus avoiding
computing string lengths again and again.
* config/locale/generic/numeric_members.cc
(numpunct<>::_M_initialize_numpunct): Assign the new members.
* config/locale/gnu/numeric_members.cc
(numpunct<>::_M_initialize_numpunct): Likewise.
From-SVN: r75735
2004-01-11 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/13582
* include/bits/fstream.tcc (imbue): Exploit the external
buffer to imbue 'on the fly' a new locale and convert its
remainder with the new codecvt facet.
(underflow): Tweak slightly to deal with this special case.
* testsuite/27_io/basic_filebuf/imbue/char/13582-2.cc: New.
* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-2.cc: Ditto.
* testsuite/27_io/basic_filebuf/imbue/wchar_t/13582-3.cc: Ditto.
* testsuite/27_io/objects/wchar_t/13582-1_xin.cc: Ditto.
* testsuite/27_io/objects/wchar_t/13582-1_xin.in: Ditto.
From-SVN: r75677
2004-01-07 Gawain Bolton <gp.bolton@computer.org>
* include/bits/stl_list.h:
* include/bits/list.tc:
* src/list.cc:
Performance enhancements for destructor, push_front(),
push_back(), pop_front(), pop_back(), sort()
Eliminated static_casts where possible.
Moved code out of header files into new src/list.cc
implementation file for library where possible.
Remove inheritance from iterator class and create separate
classes for non-constant and constant iterators.
* include/bits/stl_tree.h (_Rb_tree class):
* src/tree.cc:
Only erase contents in destructor.
Eliminate unnecessary initialization in assignment operator.
Optimize for the nominal case by not checking whether
container is empty in clear().
Re-order test in _M_insert() to improve performance.
Move initialization of new node's left & right pointers to
src/tree.cc to where new node's colour is initialized
and to reduce the amount of inline code.
Use _M_leftmost() and _M_end() to improve readability where
appropriate.
Create separate classes for non-constant and constant
iterators to clarify code, avoid extra template parameters and
casting away constness.
2004-01-07 Benjamin Kosnik <bkoz@redhat.com>
* src/Makefile.am (sources): Add list.cc, tree.cc.
* src/stl_tree.cc: Move to...
* src/tree.cc: ...here.
* src/list.cc: Add.
* config/linker-map.gnu: Tweaks.
* testsuite/23_containers/map/operators/1_neg.cc: Add excess errors.
* testsuite/23_containers/set/operators/1_neg.cc: Add excess errors.
* bits/stl_vector.h: Column wrap comments.
From-SVN: r75515
2004-01-04 Paolo Carlini <pcarlini@suse.de>
* config/locale/generic/numeric_members.cc (_M_initialize_numpunct):
Avoid unnecessarily zero terminating _M_atoms_out and _M_atoms_in;
always use double underscored names.
* config/locale/gnu/numeric_members.cc (_M_initialize_numpunct):
Likewise.
* include/bits/locale_facets.h (struct __numpunct_cache):
Dimension _M_atoms_out and _M_atoms_in one position smaller.
(__numpunct_cache<>::_M_cache): Don't zero terminate _M_atoms_out
and _M_atoms_in.
From-SVN: r75393
2003-12-31 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get::_M_extract_int,
num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
_first_ look for thousands_sep, then for decimal_point and
finally for digits.
(num_get::_M_extract_float): After the decimal_point or
'e'/'E', decimal_point and thousands_sep just break out the
parsing loop.
* testsuite/22_locale/num_get/get/char/11.cc: Add tests.
* testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
From-SVN: r75259
2003-12-28 Paolo Carlini <pcarlini@suse.de>
* include/ext/pool_allocator.h (class __pool_alloc): Use
operator new and operator delete.
From-SVN: r75181
2003-12-23 Benjamin Kosnik <bkoz@redhat.com>
* include/ext/new_allocator.h (new_allocator): Proper allocator class.
(__new_alloc): Delete.
* include/ext/malloc_allocator.h (malloc_allocator): Same.
(__malloc_alloc): Delete.
* include/ext/mt_allocator.h: Same, but weakly.
* include/ext/debug_allocator.h: Convert to the new style.
* include/ext/pool_allocator.h: Use global new and delete directly.
* include/backward/alloc.h: Don't inject malloc_allocator, or
debug_allocator.
* testsuite/ext/allocators.cc: Minimal fixups for usage of new
classes. Comment out tests with __pool_alloc for now.
* testsuite/performance/allocator.cc: Same.
From-SVN: r74965
2003-12-22 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get::_M_extract_int,
num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
first look for decimal_point and thousands_sep, when parsing
sign, leading zeros (and 0, Ox, 0X for integer types) too.
* testsuite/22_locale/num_get/get/char/12.cc: New.
* testsuite/22_locale/num_get/get/wchar_t/12.cc: Likewise.
* testsuite/22_locale/num_get/get/char/11.cc: Add a comment.
* testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
From-SVN: r74932
namespace __gnu_cxx::demangler
(session<Allocator>::decode_encoding): Put the postfix
of the return type of (member) functions after the function
instead of after the return type.
From-SVN: r74853
2003-12-19 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get::_M_extract_int,
num_get::_M_extract_float): According to 22.2.2.1.2, p8-9,
first look for decimal_point and thousands_sep.
* testsuite/22_locale/num_get/get/char/11.cc: New.
* testsuite/22_locale/num_get/get/wchar_t/11.cc: Likewise.
From-SVN: r74841
* include/bits/demangle.h: Fix allocator type correctness,
i.e. make sure that when we instantiate a container with a value
type and an allocator, the allocator's value type matches the
container's.
* include/bits/stl_deque.h (_Deque_alloc_base): Eliminate.
(_Deque_base): inherit directly from the deque's allocator. Use
rebinding instead of _Alloc_traits. Pick up data members from
_Deque_alloc_base.
* include/bits/stl_list.h (_List_alloc_base): Eliminate.
(_List_base): Inherit directly from the list's allocator. Use
rebinding instead of _Alloc_traits. Pick up data members from
_List_alloc_base.
* include/bits/stl_vector.h (_Vector_alloc_base): Eliminate
(_Vector_base): Inherit directly from the vector's allocator. Use
rebinding instead of _Alloc_traits. Pick up data members from
_Vector_alloc_base.
* include/ext/hashtable.h: Fix allocator type correctness (the
vector of buckets must be passed an allocator for objects of
type _Node*). Use rebinding instead of _Alloc_traits.
From-SVN: r74787
2003-12-17 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
Use narrow to get from __format[__i] a char __c representing a
formatting code, don't use it to compare *__beg to __format[__i].
* testsuite/22_locale/time_get/get_date/wchar_t/4.cc: New.
From-SVN: r74755
2003-12-17 Paolo Carlini <pcarlini@suse.de>
* testsuite/performance/container_benchmark.cc: Tweak outputs.
* testsuite/performance/list_create_fill_sort.cc: Shrink a
bit some outputs.
* testsuite/testsuite_performance.h: Widen a few output fields.
* testsuite/performance/ifstream_extract_int.cc: New.
From-SVN: r74738
2003-12-16 Paolo Carlini <pcarlini@suse.de>
* testsuite/performance/container_benchmark.cc: New, a
benchmark developed by Bjarne Stroustrup and Alexander
Stepanov and made available with no restrictions.
* testsuite/testsuite_performance.h (report_header): New,
useful to produce header lines in the reports.
From-SVN: r74717
2003-12-16 Paolo Carlini <pcarlini@suse.de>
* testsuite/performance/container_benchmark.cc: New, a
benchmark developed by Bjarne Stroustrup and Alexander
Stepanov and made available with no restrictions.
* testsuite/testsuite_performance.h (report_header): New,
useful to produce header lines in the reports.
From-SVN: r74713
2003-12-16 Paolo Carlini <pcarlini@suse.de>
* testsuite/performance/narrow_widen_char.cc: Tweak the
number of iterations for each test.
* testsuite/performance/narrow_widen_wchar_t.cc: Add a
missing clear_counters.
From-SVN: r74692
2003-12-16 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/11723
* include/bits/locale_facets.h: Add _M_bit and _M_wmask,
used to speed up the computation of ctype::do_is.
* config/locale/generic/ctype_members.cc
(_M_initialize_ctype): Fill _M_bit and _M_wmask.
(ctype::do_is): Use _M_bit and _M_wmask.
* config/locale/gnu/ctype_members.cc: Likewise.
* testsuite/performance/is_wchar_t.cc: New.
* testsuite/performance/narrow_widen_wchar_t.cc: Tweak
string literal (incorrect citation ;)
* include/bits/locale_facets.h: Minor tweaks, const
correctness, unsigned -> size_t.
From-SVN: r74686
2003-12-15 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get::do_get(bool&)):
Fail as soon as the begins of both truename and falsename
stop to match; always leave __beg one position beyond the
last char successfully matched.
* testsuite/22_locale/num_get/get/char/8.cc: New.
* testsuite/22_locale/num_get/get/wchar_t/8.cc: Likewise.
2003-12-15 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (_M_widen): Reserve space
for all the possible widened chars.
* config/locale/generic/ctype_members.cc (_M_initialize_ctype):
Compute at construction time all the possible widened chars.
(do_widen): Tweak, simplify.
* config/locale/gnu/ctype_members.cc: Likewise.
* testsuite/performance/narrow_widen_wchar_t.cc: Add tests
for the array versions.
From-SVN: r74636
2003-12-12 Paolo Carlini <pcarlini@suse.de>
Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/13341
* include/bits/locale_facets.h (ctype<wchar_t>): Declare
_M_initialize_ctype() and _M_narrow_ok, _M_narrow and _M_widen.
* src/ctype.cc (ctype<wchar_t>::ctype(size_t),
ctype<wchar_t>::ctype(__c_locale, size_t)): Use
_M_initialize_ctype to fill _M_narrow and _M_widen.
(ctype_byname<wchar_t>::ctype_byname(const char*, size_t)):
Likewise.
* config/locale/generic/ctype_members.cc (do_narrow, do_widen)
Use _M_narrow and _M_widen when possible, instead of calling
wctob and btowc, respectively.
(_M_initialize_ctype): Define, it fills at construction time
_M_narrow and _M_widen.
* config/locale/gnu/ctype_members.cc: Likewise.
* testsuite/performance/narrow_widen_wchar_t.cc: New.
Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com>
From-SVN: r74580
2003-12-10 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/6243
* testsuite/lib/libstdc++.exp (v3-init): Add
original_ld_library_path, calculate ld_library path, set
LD_LIBRARY_PATH to both. Based on libjava.exp.
From-SVN: r74521
2003-12-10 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_put::do_put(void*)):
Remove the try/catch, not necessary.
From-SVN: r74493
2003-12-10 Paolo Carlini <pcarlini@suse.de>
* testsuite/22_locale/locale/cons/12438.cc: Tweak memory
limit and iterations to avoid spurious failures on some
64 bit machines.
From-SVN: r74489
2003-12-09 Paolo Carlini <pcaelini@suse.de>
* include/bits/demangle.h (struct implementation_details):
Keep in comments the names of the unused parameters.
From-SVN: r74478
2003-12-09 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_get::_M_extract_int):
Slightly streamline the code dealing with overflows and the
parsing of the sign.
From-SVN: r74476
2003-12-08 Paolo Carlini <pcarlini@suse.de>
* config/locale/generic/c_locale.cc (__convert_to_v(long&),
__convert_to_v(unsigned long&), __convert_to_v(long long&),
__convert_to_v(unsigned long long&): Remove.
(__convert_to_v(float&), __convert_to_v(double&),
__convert_to_v(long double&)): Remove last unused parameter.
* config/locale/gnu/c_locale.cc: Likewise.
* include/bits/locale_facets.h: Likewise.
(num_get::_M_extract_int): Update declaration.
(class __num_base): Tweak _S_ie and _S_iE according to the
_S_atoms_in changes.
* include/bits/locale_facets.tcc (num_get::_M_extract_int):
Provide directly the final _ValueT, not a string: accumulate
the result checking for overflow at each digit.
(num_get::do_get(bool&), num_get::do_get(long&),
num_get::do_get(unsigned short&), num_get::do_get(unsigned int&),
num_get::do_get(unsigned long&), num_get::do_get(long long&),
num_get::do_get(unsigned long long&), num_get::do_get(void*&)):
Use the new _M_extract_int, simplify.
* src/locale-inst.cc (num_get::_M_extract_int(long&),
num_get::_M_extract_int(unsigned short&),
num_get::_M_extract_int(unsigned int&),
num_get::_M_extract_int(unsigned long&),
num_get::_M_extract_int(long long&),
num_get::_M_extract_int(unsigned long long&): Instantiate.
* src/locale_facets.cc (__num_base::_S_atoms_in): Reorder
the chars in the natural order: abcdefABCDEF.
From-SVN: r74423
2003-12-08 David S. Miller <davem@redhat.com>
PR libstdc++/12496
* config/cpu/sparc/atomicity.h (__exchange_and_add, __atomic_add):
Extend increment to _Atomic_word before giving to assembler.
From-SVN: r74409
PR libstdc++/13045
* bits/demangle.h
namespace __gnu_cxx::demangler
(enum substitution_nt): Removed trailing comma.
(implementation_details): Added.
(session<Allocator>::M_implementation_details): Added.
(session<Allocator>::session): Pass implementation_details.
(session<Allocator>::decode_encoding): Same.
(session<Allocator>::decode_real): Added.
(_GLIBCXX_DEMANGLER_STYLE_VOID _GLIBCXX_DEMANGLER_STYLE_LITERAL
_GLIBCXX_DEMANGLER_STYLE_LITERAL_INT
_GLIBCXX_DEMANGLER_STYLE_COMPACT_EXPR_OPS
_GLIBCXX_DEMANGLER_STYLE_SIZEOF_TYPENAME): Replaced with
implementation_details equivalent.
(session<Allocator>::decode_expression):
Use M_implementation_details instead of macros. Add extra parentheses
around 'larger than' operator in expressions in template arguments.
(session<Allocator>::decode_bare_function_type): Idem.
(session<Allocator>::decode_literal):
Idem, and call decode_real for floating literals.
(session<Allocator>::decode_type_with_postfix): Put the postfix
of the return type of (member) functions after the function
instead of after the return type. Also, put a space after the
prefix of qualified function pointers: "int (* const<space>".
* src/demangle.cc: include most dependent header file first.
* testsuite/demangle/regression/cw-16.cc: Updated two
and added three tests.
From-SVN: r74304
2003-12-04 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/12653
* include/std/std_bitset.h (operator>>): Implement resolution
of DR 303 [WP]: use widen('0') and widen('1').
* docs/html/ext/howto.html: Add an entry for DR 303.
* include/std/std_bitset.h (operator>>): Implement the common
requirements of formatted input functions (27.6.1.2.1).
* include/std/std_bitset.h (operator>>): Set the failbit when
nothing was extracted and _Nb != 0.
* testsuite/23_containers/bitset/input/1.cc: New.
From-SVN: r74276
2003-12-03 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/12791
* include/bits/locale_facets.tcc (time_get::_M_extract_num):
Rewrite, stop the parsing as soon as a digit cannot possibly
lead to a final number within the bounds; otherwise, simplify,
avoiding __ctype.is() and atoi().
* testsuite/22_locale/time_get/get_date/char/12791.cc: New.
* testsuite/22_locale/time_get/get_date/wchar_t/12791.cc: New.
* include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
Minor tweak: a 4-digit integer cannot be bigger than 9999.
* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Use
type-correct wchar_t string literals.
* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Ditto.
From-SVN: r74222
2003-12-03 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/12791
* include/bits/locale_facets.tcc (time_get::_M_extract_num):
Rewrite, stop the parsing as soon as a digit cannot possibly
lead to a final number within the bounds; otherwise, simplify,
avoiding __ctype.is() and atoi().
* testsuite/22_locale/time_get/get_date/char/12791.cc: New.
* testsuite/22_locale/time_get/get_date/wchar_t/12791.cc: New.
* include/bits/locale_facets.tcc (time_get::_M_extract_via_format):
Minor tweak: a 4-digit integer cannot be bigger than 9999.
* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Use
type-correct wchar_t string literals.
* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Ditto.
From-SVN: r74220
2003-12-02 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (time_get::do_get_year):
Avoid using a basic_string and calling a full blown strtol
(via __convert_to_v) for simple 2 or 4 digits, base 10,
positive integers; simplify.
From-SVN: r74193
* config/locale/gnu/monetary_members.cc
(money_base::_S_construct_pattern): For case 3: and 4:
exchanging 'if (__precedes)' and 'if (__space)' allows
to factor out a few more assignments.
From-SVN: r74168
2003-11-30 Paolo Carlini <pcarlini@suse.de>
* config/locale/gnu/codecvt_members.cc (codecvt::do_in,
codecvt::do_length): More minor tweaks.
From-SVN: r74069
2003-11-30 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.tcc (num_put::do_put(..., bool)):
Minor tweaks, consistent with the style used in other facets.
From-SVN: r74056
2003-11-29 Paolo Carlini <pcarlini@suse.de>
* testsuite/27_io/basic_filebuf/imbue/char/13171-2.cc:
Tweak for a few small problems (fix timings, use VERIFY..)
From-SVN: r74034
2003-11-28 Paolo Carlini <pcarlini@suse.de>
* testsuite/27_io/basic_filebuf/imbue/char/13171-3.cc: Remove.
* testsuite/27_io/basic_filebuf/imbue/wchar_t/13171-3.cc: New,
the original third testcase for libstdc++/13171 belong here.
From-SVN: r74017