2003-03-21 Jerry Quinn <jlquinn@optonline.net>
PR libstdc++/5730
* include/bits/c++config (_GLIBCPP_FAST_MATH): Define.
* include/std/std_complex.h (norm): Use faster,
less accurate computation for builtin float types under --fast-math.
From-SVN: r64701
2003-03-11 Carlo Wood <carlo@alinoe.com>
* include/bits/demangle.h: Prepend accessors of
class qualifier with 'get_' in order to fix warnings
when compiling with -Wshadow.
From-SVN: r64172
2003-03-08 Jerry Quinn <jlquinn@optonline.net>
PR libstdc++/9561
* include/bits/basic_ios.h (_M_setstate): New.
* include/bits/ostream.tcc (operator<<): Use it.
* include/bits/istream.tcc (operator>>): Use it.
* include/std/std_ostream.h (operator<<): Make friends.
* include/std/std_istream.h (operator>>): Make friends.
* testsuite/27_io/ostream_exception.cc,
testsuite/27_io/istream_exception.cc: New tests.
From-SVN: r64021
2003-03-08 Jerry Quinn <jlquinn@optonline.net>
* include/bits/locale_facets.tcc (num_put::do_put(bool)): Use
locale cache for truename and falsename.
From-SVN: r63970
2003-03-07 Paolo Carlini <pcarlini@unitus.it>
* include/bits/fstream.tcc (_M_convert_to_external):
Set __elen to zero if codecvt::out eventually fails.
From-SVN: r63954
2003-03-07 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/9182
* include/bits/fstream.tcc (_M_really_overflow): Check
for _M_convert_to_external possible failures.
* include/std/std_fstream.h (sync): Check _M_really_overflow
return value and return -1 in case of failure.
* testsuite/27_io/filebuf_virtuals.cc (test13, test14): Add.
2003-03-07 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/9826
* include/bits/istream.tcc (operator>>(_CharT*),
operator>>(basic_string&), ws): Pass a char_type to __ctype.is.
* testsuite/27_io/stringstream.cc (test02): Add.
* include/bits/istream.tcc (operator>>(_CharT*)):
Assign a char_type to *__s.
From-SVN: r63953
2003-03-07 Jerry Quinn <jlquinn@optonline.net>
* include/bits/streambuf_iterator.h (_M_put): Set _M_failed if
sputn fails.
* testsuite/27_io/ostream_fail.cc: New test.
From-SVN: r63944
2003-03-05 Carlo Wood <carlo@alinoe.com>
* include/bits/ios_base.h(ios_base::Init::_S_initialized()): Added
_S_initialized() in order to allow debugging libraries to detect
when the std streams are initialized from an overloaded operator
new.
From-SVN: r63852
* src/strstream.cc (strstreambuf::overflow): Make sure operands of
min and max have the same type.
* include/bits/basic_string.tcc (append, rfind, compare): Likewise.
From-SVN: r63802
2003-02-25 Phil Edwards <pme@gcc.gnu.org>
* docs/doxygen/Intro.3: Update with new (proper) names.
* docs/doxygen/TODO: Update.
* docs/doxygen/run_doxygen: More comments, fix up man pages.
Fake entries for standard typedefs.
* docs/doxygen/user.cfg.in: Turn INLINE_INHERITED_MEMB back on.
* docs/html/documentation.html: Top-level man page is now called
C++Intro.
* include/std/std_limits.h: Doxygenate.
From-SVN: r63433
2003-02-24 Paolo Carlini <pcarlini@unitus.it>
Nathan Myers <ncm@cantrip.org>
PR libstdc++/9404, PR libstdc++/9701 (partial)
(aka pptr == epptr implies overflow)
* include/bits/fstream.tcc (_M_allocate_internal_buffer):
Consistently, _M_out_end points to the end of the buffer just
created.
(overflow): Tweak to use _M_out_buf_size().
(_M_convert_to_external): The role of the old _M_out_end is
now played by _M_out_lim.
(_M_really_overflow): Likewise.
(seekoff): Likewise.
(setbuf): _M_out_end points to the end of the external buffer.
* include/bits/sstream.tcc (overflow): Rewrote, taking into
account the resolution of DR 169 (TC).
(seekoff): Use _M_string.capacity(); ios_base::end is now _M_out_lim.
(seekpos): Use _M_string.capacity(); tweak.
* include/bits/streambuf.tcc (sputc, xsputn): Remove comments.
* include/std/std_fstream.h (sync): The role of the old
_M_out_end is now played by _M_out_lim.
(_M_set_indeterminate): Use _M_set_determinate.
(_M_set_determinate): _M_out_end is now _M_out_lim.
(_M_is_indeterminate): Likewise.
* include/std/std_sstream.h (str()): _M_out_end is now _M_out_lim.
(_M_stringbuf_init): Don't set _M_buf_size, unused for sstreams,
which have the information readily available as _M_string.capacity();
for ate and app modes, pass the string size to _M_really_sync.
(_M_really_sync): Consistently set _M_out_end and _M_out_lim, to
point to the end of the buffer (i.e., epptr) and to the string end,
respectively.
* include/std/std_streambuf.h: tweak comments, add _M_out_lim,
which points to the right limit of the used put area.
(_M_out_cur_move): The role of the old _M_out_end is now played
by _M_out_lim.
(_M_out_buf_size): Simplify: now (when _M_out_cur) return simply
_M_out_end - _M_out_cur (i.e., pptr), _very_ close to the letter
of the standard.
(basic_streambuf()): Initialize _M_out_lim too.
* testsuite/27_io/filebuf_virtuals.cc (test10): Trivial tweak.
* testsuite/27_io/filebuf_virtuals.cc (test11): Add.
* testsuite/27_io/stringbuf_virtuals.cc (test09): Add.
Co-Authored-By: Nathan Myers <ncm@cantrip.org>
From-SVN: r63367
2003-02-21 Jerry Quinn <jlquinn@optonline.net>
* include/bits/locale_facets.tcc (_M_convert_float): Replace
numpunct facet accesses with data from __locale_cache.
From-SVN: r63213
2003-02-19 Paolo Carlini <pcarlini@unitus.it>
* include/bits/sstream.tcc (overflow): According to
27.7.1.3, p5, actual output is performed by sputc(c).
From-SVN: r63147
2003-02-18 Paolo Carlini <pcarlini@unitus.it>
* include/std/std_sstream.h (str()): the size of the
current string may be different from the initial one
whenever _M_out_end > _M_out_beg.
* testsuite/27_io/stringbuf_members.cc (test07): Add.
From-SVN: r63066
2003-02-13 Paolo Carlini <pcarlini@unitus.it>
* include/bits/ostream.tcc (sentry::sentry): Improve
performance-wise the fix for libstdc++/9563.
From-SVN: r62855
2003-02-12 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/9563
* include/bits/ostream.tcc (sentry::sentry): Check
the state of the stream after the preparation.
* testsuite/27_io/ostream_sentry.cc (test02): Add.
From-SVN: r62779
2003-02-11 Jerry Quinn <jlquinn@optonline.net>
Benjamin Kosnik <benjamin@redhat.com>
* include/bits/locale_facets.h (__num_base): Add _S_atoms_out.
Add indexes into this array.
(__num_base::_S_atoms): To _S_atoms_in.
(num_put::_M_insert): Rename to _M_pad.
(num_put::_M_convert_int): Adjust remove __mod, __modl arguments.
(num_put::_M_widen_int): Rename to _M_group_int.
(num_put::_M_widen_float): Rename to _M_group_float.
* include/bits/locale_facets.tcc (__int_to_char): New inline
function and adapter functions.
(num_put::_M_group_int): Streamline.
(num_put::_M_group_float): Streamline.
(num_put::_M_convert_int): Remove unused parameter names. Choose
large enough buffer for text. Use __int_to_char instead of
__convert_from_v. Formatted text is now at the end of the buffer.
(num_put::_M_convert_float): Preliminary fixups.
* src/locale-inst.cc (__convert_from_v<long long>): Add ifdef.
(__int_to_char<unsigned long long>): Same.
(__int_to_char<char, unsigned long>): New.
(__int_to_char<char, unsigned long long>): New.
(__int_to_char<wchar_t, unsigned long>): New.
(__int_to_char<wchar_t, unsigned long long>): New.
Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com>
From-SVN: r62731
2003-02-11 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/9320
* include/ext/stdio_filebuf.h
(stdio_filebuf(int, std::ios_base::openmode, bool, int_type),
stdio_filebuf(std::__c_file*, std::ios_base::openmode, int_type)):
Change to take a __size parameter of type size_t, not
of type (template parameter dependent) int_type.
* src/ios.cc (ios_base::Init::_S_ios_create): Change type of
size vars to size_t.
* testsuite/ext/stdio_filebuf.cc: Add.
From-SVN: r62691
2003-02-06 Benjamin Kosnik <bkoz@redhat.com>
* testsuite/22_locale/codecvt/encoding/wchar_t/1.cc (test01):
Explicitly use the "C" locale.
* testsuite/22_locale/codecvt/max_length/wchar_t/1.cc (test01): Same.
2003-02-06 Petur Runolfsson <peturr02@ru.is>
DR 75
DR 305
PR libstdc++/9028 (partial)
PR libstdc++/9224
PR libstdc++/9246
PR libstdc++/9247
* src/codecvt.cc
(codecvt<wchar_t, char, mbstate_t>::do_encoding,
codecvt<wchar_t, char, mbstate_t>::do_length,
codecvt<wchar_t, char, mbstate_t>::do_max_length):
Move...
* config/locale/generic/codecvt_members.cc: ...here.
* config/locale/gnu/codecvt_members.cc: ...and here.
* config/locale/generic/codecvt_members.cc,
* config/locale/gnu/codecvt_members.cc
(codecvt<wchar_t, char, mbstate_t>::do_encoding
codecvt<wchar_t, char, mbstate_t>::do_in,
codecvt<wchar_t, char, mbstate_t>::do_length,
codecvt<wchar_t, char, mbstate_t>::do_max_length,
codecvt<wchar_t, char, mbstate_t>::do_out):
New implementation that handles stateless encodings,
including UTF-8.
* config/locale/generic/codecvt_members.cc,
* config/locale/gnu/codecvt_members.cc,
* config/locale/ieee_1003.1-2001/codecvt_specializations.h,
* include/bits/codecvt.h,
* src/codecvt.cc
(codecvt::length, codecvt::do_length):
Change type of first argument of length and do_length from
'const state_type&' to 'state_type&' according to DR 75.
* testsuite/22_locale/codecvt/always_noconv/wchar_t/1.cc: Cleanup.
* testsuite/22_locale/codecvt/always_noconv/wchar_t/2.cc: New test.
* testsuite/22_locale/codecvt/always_noconv/wchar_t/3.cc: New test.
* testsuite/22_locale/codecvt/always_noconv/wchar_t/4.cc: New test.
* testsuite/22_locale/codecvt/encoding/wchar_t/1.cc:
Cleanup and check for correct return value from encoding
for "C" locale.
* testsuite/22_locale/codecvt/encoding/wchar_t/2.cc: New test.
* testsuite/22_locale/codecvt/encoding/wchar_t/3.cc: New test.
* testsuite/22_locale/codecvt/encoding/wchar_t/4.cc: New test.
* testsuite/22_locale/codecvt/in/wchar_t/1.cc: Cleanup.
* testsuite/22_locale/codecvt/in/wchar_t/2.cc: New test.
* testsuite/22_locale/codecvt/in/wchar_t/3.cc: New test.
* testsuite/22_locale/codecvt/in/wchar_t/4.cc: New test.
* testsuite/22_locale/codecvt/in/wchar_t/5.cc: New test.
* testsuite/22_locale/codecvt/in/wchar_t/6.cc: New test.
* testsuite/22_locale/codecvt/in/wchar_t/7.cc: New test.
* testsuite/22_locale/codecvt/in/wchar_t/8.cc: New test.
* testsuite/22_locale/codecvt/in/wchar_t/9.cc: New test.
* testsuite/22_locale/codecvt/length/char/1.cc: Cleanup.
* testsuite/22_locale/codecvt/length/char/2.cc: New test.
* testsuite/22_locale/codecvt/length/wchar_t/1.cc: Cleanup.
* testsuite/22_locale/codecvt/length/wchar_t/2.cc: New test.
* testsuite/22_locale/codecvt/length/wchar_t/3.cc: New test.
* testsuite/22_locale/codecvt/length/wchar_t/4.cc: New test.
* testsuite/22_locale/codecvt/length/wchar_t/5.cc: New test.
* testsuite/22_locale/codecvt/length/wchar_t/6.cc: New test.
* testsuite/22_locale/codecvt/length/wchar_t/7.cc: New test.
* testsuite/22_locale/codecvt/max_length/wchar_t/1.cc: Cleanup.
* testsuite/22_locale/codecvt/max_length/wchar_t/2.cc: New test.
* testsuite/22_locale/codecvt/max_length/wchar_t/3.cc: New test.
* testsuite/22_locale/codecvt/max_length/wchar_t/4.cc: New test.
* testsuite/22_locale/codecvt/out/wchar_t/1.cc: Cleanup.
* testsuite/22_locale/codecvt/out/wchar_t/2.cc: New test.
* testsuite/22_locale/codecvt/out/wchar_t/3.cc: New test.
* testsuite/22_locale/codecvt/out/wchar_t/4.cc: New test.
* testsuite/22_locale/codecvt/out/wchar_t/5.cc: New test.
* testsuite/22_locale/codecvt/out/wchar_t/6.cc: New test.
* testsuite/22_locale/codecvt/out/wchar_t/7.cc: New test.
* testsuite/22_locale/codecvt/unicode/1.cc: New test.
* testsuite/22_locale/codecvt/unshift/wchar_t/1.cc: Cleanup.
* testsuite/22_locale/codecvt/unshift/wchar_t/2.cc: New test.
* testsuite/22_locale/codecvt/unshift/wchar_t/3.cc: New test.
* testsuite/22_locale/codecvt/unshfit/wchar_t/4.cc: New test.
From-SVN: r62474
2003-02-04 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/9439, PR libstdc++/9425
* config/io/basic_file_stdio.cc
(__basic_file<char>::seekoff, seekpos): Return -1L if
fseek fails.
* include/bits/fstream.tcc (basic_filebuf::seekoff):
Check _M_file.seekoff return value; always return
pos_type(off_type(-1)) in case of failure.
(basic_filebuf::pbackfail): Check this->seekoff return
value and return traits_type::eof() in case of failure.
* testsuite/27_io/filebuf_virtuals.cc (test09): Add.
From-SVN: r62408
* c-common.c (builtin_define_float_constants): Define
__<TYPE>_HAS_INFINITY__ and __<TYPE>_HAS_QUIET_NAN__.
* call.c (build_field_call): Use build_new_op, not build_opfncall.
(prep_operand): New function.
(build_new_op): Use it. Remove dead code.
* class.c (pushclass): Change "modify" parameter type from int to
bool.
(currently_open_class): Use same_type_p, not pointer equality.
(push_nested_class): Adjust calls to pushclass, remove modify
parameter.
* cp-tree.h (INTEGRAL_OR_ENUMERATION_TYPE_P): New macro.
(pushclass): Change prototype.
(push_nested_class): Likewise.
(grokoptypename): Remove.
(build_opfncall): Remove.
(value_dependent_expression_p): Declare.
(resolve_typename_type): Likewise.
(resolve_typename_type_in_current_instantiation): Likewise.
(enter_scope_of): Remove.
(tsubst): Remove.
(tsubst_expr): Likewise.
(tsubst_copy): Likewise.
(tsubst_copy_and_build): Likewise.
* decl.c (warn_about_implicit_typename_lookup): Remove.
(finish_case_label): Return error_mark_node for erroneous labels.
(start_decl): Adjust calls to push_nested_class.
(grokfndecl): Call push_scope/pop_scope around call to
duplicate_decls.
(grokdeclarator): Do not call tsubst.
(start_function): Adjust calls to push_nested_class.
* decl2.c (grok_array_decl): Use build_new_op, not build_opfncall.
(check_classfn): Use push_scope/pop_scope around type comparisions.
(grokoptypename): Remove.
(push_sscope): Adjust call to push_nested_class.
* error.c (dump_type): Show cv-qualification of typename types.
* init.c (build_member_call): Use build_new_op, not
build_opfncall.
* method.c (build_opfncall): Remove.
* parser.c (cp_parser): Add allow_non_constant_expression_p and
non_constant_expression_p.
(cp_parser_constant_expression): Adjust prototype.
(cp_parser_resolve_typename_type): Remove.
(cp_parser_non_constant_expression): New function.
(cp_parser_non_constant_id_expression): Likewise.
(cp_parser_new): Set allow_non_constant_expression_p and
non_constant_expression_p.
(cp_parser_primary_expression): Reject `this' and `va_arg' in
constant-expressions. Note that dependent names aren't really
constant.
(cp_parser_postfix_expression): Reject conversions to non-integral
types in constant-expressions. Neither are increments or
decrements.
(cp_parser_unary_expression): Reject increments and decrements in
constant-expressions.
(cp_parser_direct_new_declarator): Adjust call to
cp_parser_constant_expression.
(cp_parser_cast_expression): Reject conversions to non-integral
types in constant-expressions.
(cp_parser_assignment_expression): Rejects assignments in
constant-expressions.
(cp_parser_expression): Reject commas in constant-expressions.
(cp_parser_labeled_statement): Adjust call to
cp_parser_constant_expression.
(cp_parser_direct_declarator): Simplify array bounds, even in
templates, when they are non-dependent. Use
resolve_typename_type, not cp_parser_resolve_typename_type.
(cp_parser_class_head): Use resolve_typename_type, not
cp_parser_resolve_typename_type.
(cp_parser_member_declaration): Adjust call to
cp_parser_constant_expression.
(cp_parser_constant_initializer): Likewise.
(cp_parser_constructor_declarator): Use resolve_typename_type, not
cp_parser_resolve_typename_type.
(cp_parser_late_parsing_default_args): Adjust call to
push_nested_class.
* pt.c (tsubst): Give it internal linkage.
(tsubst_expr): Likewise.
(tsubst_copy): Likewise.
(tsubst_copy_and_build): Likewise.
(push_access_scope_real): Likewise.
(tsubst_friend_class): Likewise.
(instantiate_class_template): Adjust call to pushclass.
(value_dependent_expression_p): Give it external linkage.
Robustify.
(resolve_typename_type): New function.
* semantics.c (finish_call_expr): Use build_new_op, not
build_opfncall.
(begin_constructor_declarator): Remove.
(begin_class_definition): Adjust call to pushclass.
(enter_scope_of): Remove.
* typeck.c (comptypes): Resolve typename types as appropriate.
(build_x_indirect_ref): Use build_new_op, not build_opfncall.
(build_x_compound_expr): Likewise.
(build_modify_expr): Likewise.
(build_x_modify_expr): Likewise.
* typeck2.c (build_x_arrow): Likewise.
* g++.dg/parser/constant1.C: New test.
* include/std/std_limits.h (numeric_limits<float>::has_infinity):
Use __FLT_HAS_INIFINITY__ to initialize.
(numeric_limits<float>::has_quiet_NaN): Likewise.
(numeric_limits<double>::has_infinity): Use __DBL_HAS_INIFINITY__
to initialize.
(numeric_limits<double>::has_quiet_NaN): Likewise.
(numeric_limits<long double>::has_infinity): Use
__LDBL_HAS_INIFINITY__ to initialize.
(numeric_limits<long_double>::has_quiet_NaN): Likewise.
From-SVN: r62130
libf2c:
2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
* Makefile.in (FLAGS_TO_PASS): Also pass DESTDIR.
(install, uninstall): Prepend $(DESTDIR) to destination
paths in all (un)installation commands.
libiberty:
2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
* Makefile.in (FLAGS_TO_PASS): Also pass DESTDIR.
libobjc:
2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
* Makefile.in (FLAGS_TO_PASS): Also pass DESTDIR.
(install-libs, install-headers): Prepend $(DESTDIR) to
destination paths in all (un)installation commands.
libstdc++:
2003-01-09 Christian Cornelssen <ccorn@cs.tu-berlin.de>
* include/Makefile.am (install-data-local): Prepend
$(DESTDIR) to destination paths in all (un)installation
commands. Use ${c_base_builddir} and ${std_builddir}
as destination subdirectories to achieve consistency with
preceding mkinstalldirs commands. No effect because both
variables contain "." only.
* include/Makefile.in: Regenerate.
From-SVN: r61082
2002-12-26 Phil Edwards <pme@gcc.gnu.org>
* include/std/std_bitset.h (_Base_bitset::_M_do_left_shift,
_Base_bitset::_M_do_right_shift): Expect a non-zero shift.
(bitset::operator<<=, bitset::operator>>=): When shifting more bits
than are in the bitset, zero memory rather than segfault.
(operator>>(basic_istream,bitset): Only call setstate once, after
all work has been done.
* testsuite/23_containers/bitset_members.cc (test03): New test.
* testsuite/23_containers/bitset_shift.cc (test02): New test.
From-SVN: r60533
2002-11-22 Laszlo Ersek <erseklaszlo@chello.hu>
Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/8645
* include/bits/stl_tree.h (_Rb_tree_rebalance_for_erase):
Don't check that __w->_M_left != 0 and __w->_M_right != 0
when they can't be otherwise.
Co-Authored-By: Paolo Carlini <pcarlini@unitus.it>
From-SVN: r59381
2002-11-21 Phil Edwards <pme@gcc.gnu.org>
* include/bits/streambuf.tcc (basic_streambuf::sputbackc): Prefix
"this->" to call to pbackfail.
From-SVN: r59327
2002-11-20 Benjamin Kosnik <bkoz@redhat.com>
Jonathan Lennox <lennox@cs.columbia.edu>
* include/bits/streambuf.tcc (__copy_streambufs):
Revert previous fix for the interactive half of
libstdc++/6745, use _M_buf_size_opt to set dynamically
the correct buffer size.
Co-Authored-By: Jonathan Lennox <lennox@cs.columbia.edu>
From-SVN: r59314
2002-11-18 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/6745 (continued)
* include/bits/streambuf.tcc (__copy_streambufs):
Deal with interactive input by using isatty as in the
fix for libstdc++/8399.
From-SVN: r59229
2002-11-15 Benjamin Kosnik <bkoz@redhat.com>
Gabriel Dos Reis <gdr@integrable-solutions.net>
PR libstdc++/8230
* include/bits/stl_alloc.h: Use builtin_expect for the most
obvious limit checks.
(__default_alloc_template::allocate): Check for null, throw
bad_alloc.
* include/bits/vector.tcc: Formatting tweaks.
* include/bits/stl_vector.h: Same.
* testsuite/20_util/allocator_members.cc (test02): Add.
* testsuite/23_containers/vector_capacity.cc (test03): Add.
Co-Authored-By: Gabriel Dos Reis <gdr@integrable-solutions.net>
From-SVN: r59169
2002-11-11 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/6746
* include/bits/fstream.tcc (filebuf::open): Set input pointers.
* config/io/basic_file_stdio.cc (__basic_file::_M_open_mode): Set
__p_mode as well.
(__basic_file::open): Set to non-block for input.
* testsuite/27_io/istream_unformatted.cc (test12): Add.
(test13): Same.
From-SVN: r59030
2002-11-05 Paolo Carlini <pcarlini@unitus.it>
PR libstdc++/8466
* include/std/std_sstream.h
(basic_stringbuf::str(const __string_type&)):
Cannot use simple assignment since the COW-nature of v3
basic_string is not taken into account in basic_stringbuf.
* testsuite/27_io/stringstream_members.cc: Add test04 from PR.
From-SVN: r58838
2002-11-01 John Carter <john.carter@tait.co.nz>
PR libstdc++/7961
* include/bits/basic_string.tcc
(compare(const _CharT* __s)): Don't access __s past its length.
From-SVN: r58717