Alexandre Oliva
312209c6a5
Introduce sh4a support.
...
gcc/ChangeLog:
Introduce sh4a support.
* config.gcc: Handle sh4a multilibs and cpu selection.
* config/sh/sh.h: Likewise. Handle sh4a command line flags.
* config/sh/t-mlib-sh4a: New.
* config/sh/t-mlib-sh4al: New.
* config/sh/t-mlib-sh4a-nofpu: New.
* config/sh/t-mlib-sh4a-single: New.
* config/sh/t-mlib-sh4a-single-only: New.
2004-02-20 DJ Delorie <dj@redhat.com>
* config/sh/sh.md ("movua"): Change constraint from "m" to "Sua".
* config/sh/sh.h (EXTRA_CONSTRAINT_S): Add "Sua" support.
2003-08-22 Eric Christopher <echristo@redhat.com>
* config/sh/sh4a.md: Update for chip errata.
2003-08-07 Eric Christopher <echristo@redhat.com>
* config/sh/sh4a.md: New file. sh4a processor description.
2003-07-08 Alexandre Oliva <aoliva@redhat.com>
* config/sh/sh.h (TARGET_SWITCHES): Added 4al. Adjust description
of -m4a-nofpu.
(SH_ASM_SPEC): Pass -dsp for -m4al, not -m4a-nofpu.
* config/sh/t-sh (MULTILIB_MATCHES): Map -m4al to -m4a-nofpu.
* doc/invoke.texi (SH Options): Document -m4al.
2003-07-03 Alexandre Oliva <aoliva@redhat.com>
* config/sh/sh.c (expand_block_move): Remove commented-out code
checked in by mistake.
(sh_cannot_change_mode_class): Enable SUBREGs to be used to select
single elements from SFmode vectors.
* config/sh/sh.md (fsca): Use VEC_CONCAT to initialize the output
register.
(sinsf2, cossf2, sindf2, cosdf2): Don't emit CLOBBER.
2003-07-01 Alexandre Oliva <aoliva@redhat.com>
* config/sh/sh.h (sh_fsca_sf2int, sh_fsca_df2int,
sh_fsca_int2sf): Remove variable declarations.
* config/sh/sh.c (sh_fsca_sf2int, sh_fsca_df2int,
sh_fsca_int2sf): New functions.
(sh_fsca_sf2int_rtx, sh_fsca_df2int_rtx,
sh_fsca_int2sf_rtx): New static variables.
* config/sh/sh-protos.h (sh_fsca_sf2int, sh_fsca_df2int,
sh_fsca_int2sf): Declare.
* config/sh/sh.md: Adjust.
* doc/invoke.texi (SH Options): Document new options.
* config/sh/lib1funcs.asm (ic_invalidate): Remove SH4a forward
compatibility from SH4 code.
2003-06-27 Alexandre Oliva <aoliva@redhat.com>
* config/sh/sh.c (expand_block_move): Don't emit POST_INC too
early.
(memory_movsrc_operand): Renamed to...
(unaligned_load_operand): ... this. Simplified.
* config/sh/sh.h (PREDICATE_CODES): Adjust.
* config/sh/sh.md (movua, extv, extzv): Likewise. Change movua's
input operand to SImode, and adjust the others. Introduce
post-increment by peephole.
* config/sh/sh.c (expand_block_move): Give the target address the
same mode as the temp reg.
* config/sh/sh.c (expand_block_move): Use a temp reg for unaligned
copying.
2003-06-26 Alexandre Oliva <aoliva@redhat.com>
Introduce support for SH4a.
* config/sh/lib1funcs.asm (ic_invalidate): Use icbi if
__SH4A__. Emit 4 4kb blocks and touch all of them otherwise.
* config/sh/sh.c (sh_fsca_sf2int, sh_fsca_df2int,
sh_fsca_int2sf): New.
(sh_init_builtins): Initialize them.
(print_operand): Support `d'.
(expand_block_move): Use movua if src is misaligned.
(memory_movsrc_operand): New.
* config/sh/sh.h (TARGET_CPU_CPP_BUILTINS): Define __SH4A__
and one of the SH4 macros.
(SH4A_BIT, TARGET_SH4A_ARCH, TARGET_SH4A_FP,
SELECT_SH4A_NOFPU, SELECT_SH4A_SINGLE_ONLY, SELECT_SH4A,
SELECT_SH4A_SINGLE): New.
(TARGET_NONE): Add SH4A_BIT.
(TARGET_SWITCHES): Add 4a-single-only, 4a-single, 4a-nofpu and 4a.
(SH_ASM_SPEC): Pass -dsp if -m4a-nofpu.
(sh_fsca_sf2int, sh_fsca_df2int, sh_fsca_int2sf): Declare.
(OVERRIDE_OPTIONS): Set cpu to CPU_SH4A when appropriate.
(enum processor_type): Added PROCESSOR_SH4A.
(PREDICATE_CODES): Add memory_movsrc_operand.
* config/sh/sh.md: Removed unused variables.
(attr cpu): Add sh4a.
(attr type): Add movua, fsrra and fsca.
(prefetch): New, for SH4.
(ic_invalidate_line, ic_invalidate_line_sh4a): Use icbi.
(toggle_sz): Set type to fp.
(toggle_pr, rsqrtsf2, fsca, sinsf2, cossf2, sindf2, cosdf2): New.
(movua, extv, extzv): New.
* config/sh/t-sh: Add multilibs for 4a, 4a-nofpu, 4a-single
and 4a-single-only.
gcc/testsuite/ChangeLog:
2003-07-06 Alexandre Oliva <aoliva@redhat.com>
* gcc.dg/sh4a-memmovua.c: Tweak regular expression.
2003-07-01 Alexandre Oliva <aoliva@redhat.com>
* gcc.dg/sh4a-bitmovua.c: New.
* gcc.dg/sh4a-cos.c: New.
* gcc.dg/sh4a-cosf.c: New.
* gcc.dg/sh4a-fprun.c: New.
* gcc.dg/sh4a-fsrra.c: New.
* gcc.dg/sh4a-memmovua.c: New.
* gcc.dg/sh4a-sin.c: New.
* gcc.dg/sh4a-sincos.c: New.
* gcc.dg/sh4a-sincosf.c: New.
* gcc.dg/sh4a-sinf.c: New.
libstdc++-v3/ChangeLog:
2003-10-01 Eric Christopher <echristo@redhat.com>
* config/cpu/sh/atomicity.h (__exchange_and_add): Remove 'm'
constraint.
2003-07-09 Alexandre Oliva <aoliva@redhat.com>
* config/cpu/sh/atomicity.h: New. Use movli and movco on SH4a.
From-SVN: r85257
2004-07-28 09:13:58 +00:00
Benjamin Kosnik
9e80211469
[multiple changes]
...
2004-07-07 Benjamin Kosnik <bkoz@redhat.com>
* configure.ac (libtool_VERSION): To 6:2:0.
* configure: Regenerated.
* testsuite/testsuite_abi.cc (check_version): Add 3.4.2.
2004-07-07 Aaron W. LaFramboise <aaronraolete36@aaronwl.com>
PR libstdc++/16411
* config/linker-map.gnu: Add stdio_sync_filebuf::file exports.
From-SVN: r84264
2004-07-08 05:24:33 +00:00
Paul Brook
a7e4cdca85
cxxabi_tweaks.h: New file.
...
* config/cpu/arm/cxxabi_tweaks.h: New file.
* config/cpu/generic/cxxabi_tweaks.h: New file.
From-SVN: r84035
2004-07-02 23:58:41 +00:00
Benjamin Kosnik
bd535dc55c
linker-map.gnu: Revert.
...
2004-06-30 Benjamin Kosnik <bkoz@redhat.com>
* config/linker-map.gnu: Revert.
From-SVN: r83913
2004-06-30 16:38:42 +00:00
Benjamin Kosnik
9abf398dd9
linker-map.gnu: Add destructor exports for abstract base classes to conform to LSB.
...
2004-06-30 Benjamin Kosnik <bkoz@redhat.com>
Stuart Anderson <anderson@netsweng.com>
* config/linker-map.gnu: Add destructor exports for abstract base
classes to conform to LSB.
Co-Authored-By: Stuart Anderson <anderson@netsweng.com>
From-SVN: r83910
2004-06-30 16:19:45 +00:00
Paolo Carlini
61c53cd36b
2004-06-28 Paolo Carlini <pcarlini@suse.de>
...
* config/locale/gnu/monetary_members.cc
(moneypunct<wchar_t>::_M_initialize_moneypunct): Clean up
assignments of _M_decimal_point and _M_thousands_sep.
From-SVN: r83767
2004-06-28 09:27:18 +00:00
Benjamin Kosnik
838d430929
concurrence.h (__gnu_cxx::lock): New.
...
2004-06-24 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/concurrence.h (__gnu_cxx::lock): New.
* include/ext/pool_allocator.h (__pool_base::_Lock::_S_lock): Remove.
(__pool_base::_M_get_mutex): New.
* include/bits/allocator.h: Tweak.
* src/allocator.cc (__pool_base::_M_get_free_list): Correct offset.
* config/linker-map.gnu: Remove __pool_base::_Lock::_S_lock.
* include/bits/stl_threads.h: Remove.
* include/Makefile.am: Also here.
* include/Makefile.in: Regenerate.
* src/locale_init.cc: Use __gnu_cxx::lock.
* src/allocator.cc: Move all instantiations...
* src/allocator-inst.cc: ...here.
From-SVN: r83638
2004-06-25 06:10:44 +00:00
Loren J. Rittle
88c499cce7
linker-map.gnu: Use wildcards for __basic_file::sys_open(FILE*, _Ios_Openmode).
...
* config/linker-map.gnu: Use wildcards for
__basic_file::sys_open(FILE*, _Ios_Openmode).
From-SVN: r83470
2004-06-22 00:24:52 +00:00
Benjamin Kosnik
2832d07bd1
pool_allocator.h: Qualify __throw_bad_alloc.
...
2004-06-18 Benjamin Kosnik <bkoz@redhat.com>
* include/ext/pool_allocator.h: Qualify __throw_bad_alloc.
(__pool_base): Remove unused template parameter. Add
protected. Move lock data into __pool_base::_Lock. Remove static
on member functions.
(__pool_base::_M_get_free_list): New.
(__pool_alloc): Move _S_force new here.
* src/allocator.cc: Move out of line __pool_base definitions here.
* config/linker-map.gnu: Export bits from __pool_base.
From-SVN: r83355
2004-06-18 16:52:42 +00:00
Paolo Carlini
a80e0e831f
2004-06-18 Paolo Carlini <pcarlini@suse.de>
...
* config/locale/gnu/numeric_members.cc
(numpunct<wchar_t>::_M_initialize_numpunct): Clean up
assignments of _M_decimal_point and _M_thousands_sep.
* config/locale/gnu/time_members.cc
(__timepunct<wchar_t>::_M_initialize_timepunct): Clean up
and reformat assignments of date and time fields.
From-SVN: r83346
2004-06-18 10:54:44 +00:00
Jason Merrill
37f3105a58
linker-map.gnu: Use wildcards for __basic_file::{xsgetn,xsputn,seekoff,xsputn_2}.
...
* config/linker-map.gnu: Use wildcards for
__basic_file::{xsgetn,xsputn,seekoff,xsputn_2}.
From-SVN: r82813
2004-06-08 23:56:34 -04:00
Benjamin Kosnik
7c9fee34e5
linker-map.gnu (GLIBCXX_3.4.1): Add.
...
2004-05-31 Benjamin Kosnik <bkoz@redhat.com>
* config/linker-map.gnu (GLIBCXX_3.4.1): Add.
* testsuite/testsuite_abi.cc: Same.
* configure.ac (libtool_VERSION): Bump to 6:1:0.
* configure: Regenerate.
* aclocal.m4: Regenerate.
From-SVN: r82498
2004-05-31 21:19:52 +00:00
Richard B. Kreckel
803cb0b5c9
re PR libstdc++/14600 (__gnu_cxx::stdio_sync_filebuf should expose internal FILE*)
...
2004-05-29 Richard B. Kreckel <Richard.Kreckel@Framatome-ANP.com>
Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/14600
* include/ext/stdio_sync_filebuf.h (stdio_sync_filebuf::file): New.
* include/ext/stdio_filebuf.h (stdio_filebuf::file): New.
* config/io/basic_file_stdio.cc (__basic_file::file): New.
* config/io/basic_file_stdio.h: Define.
Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com>
From-SVN: r82419
2004-05-29 14:40:59 +00:00
Benjamin Kosnik
26c691a88b
re PR libstdc++/12854 (libstdc++ vs. -Weffc++)
...
2004-05-22 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/12854
Fixups for -Weffc++.
* include/bits/basic_string.h (basic_string::operator=): Return
pointer to this instead of result of assign. Although redundant,
this doesn't impact resultant codegen.
* include/bits/locale_facets.h (__numpunct_cache): Declare
assignment opxserator and copy constructor private.
(__timepunct_cache): Same.
(__moneypunct_cache): Same.
(collate): Use member initialization list for _M_c_locale_collate.
* config/locale/gnu/messages_members.h: Same.
* config/locale/gnu/time_members.h (__timepunct): Same.
* src/codecvt.cc: Use member initialization list to initialize
_M_c_locale_codecvt.
* src/ctype.cc: Same, with _M_c_locale_ctype and _M_narrow_ok.
* config/os/gnu-linux/ctype_noninline.h: Same.
* src/locale.cc (_Impl): Same.
* src/locale_init.cc: Same.
* src/localename.cc: Same.
* include/bits/basic_ios.h (basic_ios): Complete member
initialization list.
* include/bits/istream.tcc (basic_istream::sentry): Same.
* include/bits/ostream.tcc (basic_ostream::sentry): Same.
* include/bits/fstream.tcc (basic_filebuf): Add _M_lock and
_M_pback to member initialization list.
* include/std/std_streambuf.h: Same.
* include/std/std_sstream.h: Same, for _M_mode.
* src/ios.cc (ios_base): Same.
* include/ext/rope: Make derived classes match exception
specifications. Add copy constructors and assignment operators.
* include/debug/safe_base.h (_Safe_sequence_base): Declare copy
constructor and assignment operator protected.
(_Safe_iterator_base): Same.
* include/debug/formatter.h (_Error_formatter): Define copy
constructor and assignment operator.
* include/backward/strstream: Declare assignment operator and copy
constructor private.
From-SVN: r82153
2004-05-22 23:46:34 +00:00
Simon Marshall
95b147fe4a
re PR libstdc++/15090 (-fno-for-scope vs. libstdc++)
...
2004-05-13 Simon Marshall <simon.marshall@misys.com>
Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/15090
* include/bits/locale_facets.h: Fix for -fno-for-scope.
* include/debug/safe_sequence.h: Same.
* include/debug/safe_iterator.tcc: Same.
* src/debug.cc: Same.
* src/locale.cc: Same.
* src/locale_init.cc: Same.
* src/localename.cc: Same.
* config/locale/gnu/ctype_members.cc: Same.
* config/locale/gnu/numeric_members.cc: Same.
* testsuite/testsuite_abi.cc: Same.
* testsuite/testsuite_hooks.cc: Same.
Co-Authored-By: Benjamin Kosnik <bkoz@redhat.com>
From-SVN: r81795
2004-05-13 16:29:39 +00:00
Benjamin Kosnik
390e4c0dbe
c++config (_GLIBCXX_STD): New.
...
2004-04-16 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/c++config (_GLIBCXX_STD): New.
* src/list.cc: Use it.
* include/std/std_bitset.h: Same.
* include/bits/vector.tcc: Same.
* include/bits/stl_set.h: Same.
* include/bits/stl_multiset.h: Same.
* include/bits/stl_multimap.h: Same.
* include/bits/stl_map.h: Same.
* include/bits/stl_list.h: Same.
* include/bits/stl_vector.h: Same.
* include/bits/stl_bvector.h: Same.
* include/bits/stl_deque.h: Same.
* include/bits/deque.tcc: Same.
* include/bits/list.tcc: Same.
* include/debug/vector: Same.
* include/debug/set.h: Same.
* include/debug/multiset.h: Same.
* include/debug/multimap.h: Same.
* include/debug/map.h: Same.
* include/debug/list: Same.
* include/debug/deque: Same.
* include/debug/bitset: Same.
* include/debug/formatter.h (__gnu_debug): Remove using directive.
Add using declaration for std::type_info.
* include/debug/safe_iterator.h: Add using declaration for
std::iterator_traits and std::pair.
* src/debug_list.cc: New.
* src/Makefile.am: Add debug_list.cc.
* src/Makefile.in: Regenerate.
* config/linker-map.gnu: Add _List_node_base exports for std and
__gnu_norm.
* include/bits/stl_bvector.h (_Bvector_base): Use _Bvector_impl
idiom that other containers use.
* testsuite/23_containers/vector/bool/clear_allocator.cc: New.
From-SVN: r80763
2004-04-16 19:04:07 +00:00
Paolo Carlini
af55af57e1
acconfig.h: Remove _GLIBCXX_USE_LONG_DOUBLE entry, not used anymore.
...
2004-04-16 Paolo Carlini <pcarlini@suse.de>
* acconfig.h: Remove _GLIBCXX_USE_LONG_DOUBLE entry, not
used anymore.
* config.h.in: Regenerate.
2004-04-16 Paolo Carlini <pcarlini@suse.de>
* config/locale/generic/monetary_members.cc
(moneypunct<wchar_t>::_M_initialize_moneypunct): Avoid calling
btowc unnecessarily, just cast to wchar_t (the concerned chars
all belong to the basic character set).
* config/locale/generic/numeric_members.cc
(numpunct<wchar_t>::_M_initialize_numpunct): Likewise.
* config/locale/gnu/monetary_members.cc
(moneypunct<wchar_t>::_M_initialize_moneypunct): Likewise.
* config/locale/gnu/numeric_members.cc
(numpunct<wchar_t>::_M_initialize_numpunct): Likewise.
From-SVN: r80746
2004-04-16 09:23:05 +00:00
Paolo Carlini
92861ad4a0
2004-04-12 Paolo Carlini <pcarlini@suse.de>
...
* config/locale/gnu/numeric_members.cc
(numpunct<wchar_t>::_M_initialize_numpunct): No need to wrap
in __uselocale, since btowc is called for chars belonging to
the basic character set.
From-SVN: r80618
2004-04-12 08:36:23 +00:00
Paolo Carlini
ba98a8d81a
time_members.cc (__timepunct<char>::_M_initialize_timepunct, [...]): the correct _M_amonth07 in the "C" locale is "Jul" and L"Jul", respectively.
...
2004-04-07 Paolo Carlini <pcarlini@suse.de>
* config/locale/generic/time_members.cc
(__timepunct<char>::_M_initialize_timepunct,
__timepunct<wchar_t>::_M_initialize_timepunct): the correct
_M_amonth07 in the "C" locale is "Jul" and L"Jul", respectively.
* config/locale/gnu/time_members.cc
(__timepunct<char>::_M_initialize_timepunct,
__timepunct<wchar_t>::_M_initialize_timepunct): Ditto.
* testsuite/22_locale/time_get/get_monthname/char/4.cc: New.
* testsuite/22_locale/time_get/get_monthname/wchar_t/4.cc: New.
* testsuite/22_locale/time_get/date_order/char/1.cc: Remove junk.
* testsuite/22_locale/time_get/date_order/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_date/char/1.cc: Ditto.
* testsuite/22_locale/time_get/get_date/char/2.cc: Ditto.
* testsuite/22_locale/time_get/get_date/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_date/wchar_t/2.cc: Ditto.
* testsuite/22_locale/time_get/get_monthname/char/1.cc: Ditto.
* testsuite/22_locale/time_get/get_monthname/char/2.cc: Ditto.
* testsuite/22_locale/time_get/get_monthname/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_monthname/wchar_t/2.cc: Ditto.
* testsuite/22_locale/time_get/get_time/char/1.cc: Ditto.
* testsuite/22_locale/time_get/get_time/char/2.cc: Ditto.
* testsuite/22_locale/time_get/get_time/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_time/wchar_t/2.cc: Ditto.
* testsuite/22_locale/time_get/get_weekday/char/1.cc: Ditto.
* testsuite/22_locale/time_get/get_weekday/char/2.cc: Ditto.
* testsuite/22_locale/time_get/get_weekday/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_get/get_weekday/wchar_t/2.cc: Ditto.
* testsuite/22_locale/time_get/get_year/char/1.cc: Ditto.
* testsuite/22_locale/time_get/get_year/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_put/put/char/1.cc: Ditto.
* testsuite/22_locale/time_put/put/char/2.cc: Ditto.
* testsuite/22_locale/time_put/put/char/3.cc: Ditto.
* testsuite/22_locale/time_put/put/char/4.cc: Ditto.
* testsuite/22_locale/time_put/put/char/5.cc: Ditto.
* testsuite/22_locale/time_put/put/char/6.cc: Ditto.
* testsuite/22_locale/time_put/put/char/7.cc: Ditto.
* testsuite/22_locale/time_put/put/char/8.cc: Ditto.
* testsuite/22_locale/time_put/put/wchar_t/1.cc: Ditto.
* testsuite/22_locale/time_put/put/wchar_t/2.cc: Ditto.
* testsuite/22_locale/time_put/put/wchar_t/3.cc: Ditto.
* testsuite/22_locale/time_put/put/wchar_t/4.cc: Ditto.
* testsuite/22_locale/time_put/put/wchar_t/5.cc: Ditto.
* testsuite/22_locale/time_put/put/wchar_t/6.cc: Ditto.
* testsuite/22_locale/time_put/put/wchar_t/7.cc: Ditto.
* testsuite/22_locale/time_put/put/wchar_t/8.cc: Ditto.
* testsuite/22_locale/time_put/put/char/9780-1.cc: Fix typos.
From-SVN: r80493
2004-04-07 23:14:08 +00:00
Paolo Carlini
f332a090b2
2004-04-07 Paolo Carlini <pcarlini@suse.de>
...
* config/locale/gnu/monetary_members.cc
(moneypunct<wchar_t>::_M_initialize_moneypunct): Prefer
_NL_MONETARY_DECIMAL_POINT_WC, _NL_MONETARY_THOUSANDS_SEP_WC,
and __MON_GROUPING to _NL_NUMERIC_DECIMAL_POINT_WC,
_NL_NUMERIC_THOUSANDS_SEP_WC, and GROUPING.
* config/locale/gnu/numeric_members.cc
(numpunct<char>::_M_initialize_numpunct): Prefer DECIMAL_POINT
and THOUSANDS_SEP to the deprecated RADIXCHAR and THOUSEP.
From-SVN: r80477
2004-04-07 14:32:47 +00:00
Benjamin Kosnik
563ae04fec
Fixups for EDG front end.
...
2004-04-06 Benjamin Kosnik <bkoz@redhat.com>
Fixups for EDG front end.
* include/ext/rope: Instead of non-existent function
_Data_allocate, use allocator's allocate. Use this.
(namespace _Rope_constants): Move _S_max_rope_depth, and _Tag
enumerations from _Rope_RopeRep here.
* include/ext/ropeimpl.h: Same.
* src/ext-inst.cc (_S_min_len): Fix up definition.
* config/locale/gnu/ctype_members.cc: Qualify base class members
with this.
* config/locale/generic/ctype_members.cc: Same.
* config/locale/gnu/messages_members.h: Same.
* config/locale/generic/messages_members.h: Same.
* src/ctype.cc: Same.
* include/bits/codecvt.h: Same.
* include/bits/boost_concept_check.h: Declare.
(__error_type_must_be_an_unsigned_integer_type): Remove this.
(__error_type_must_be_an_integer_type): Remove this.
(__error_type_must_be_a_signed_integer_type): Remove this.
* config/io/basic_file_stdio.cc (__basic_file::sys_open): Remove cast.
* libsupc++/eh_alloc.cc (__cxa_free_exception): Add exception
specification to definition.
(__cxa_allocate_exception): Same.
* libsupc++/eh_catch.cc (__cxa_begin_catch): Same.
* libsupc++/eh_globals.cc (__cxa_get_globals_fast): Same.
(__cxa_get_globals): Same.
* libsupc++/del_op.cc: Add comment about freestanding.
From-SVN: r80475
2004-04-07 03:33:36 +00:00
Paolo Carlini
e004c3313e
c_locale.cc (__convert_to_v(long double&)): In v3 uses of sscanf...
...
2004-03-31 Paolo Carlini <pcarlini@suse.de>
* config/locale/generic/c_locale.cc (__convert_to_v(long double&)):
In v3 uses of sscanf, the special floating-point numbers INF,
INFINITY, etc., cannot occur in input, therefore, if the latter
is too large, ERANGE is always stored in errno, no need of finitel.
From-SVN: r80247
2004-03-31 09:13:10 +00:00
Benjamin Kosnik
a5f105b590
[multiple changes]
...
2004-03-27 Benjamin Kosnik <bkoz@redhat.com>
libstdc++ PR/13598
* config/locale/ieee_1003.1-2001/codecvt_specializations.h
(__enc_traits::_M_destroy): New.
(__enc_traits::~__enc_traits): Use it.
(__enc_traits::operator=): Use _M_destroy, _M_init.
(__enc_traits::__enc_traits): Same.
2004-03-27 Petur Runolfsson <peturr02@ru.is>
* testsuite/ext/enc_filebuf/char/13598.cc: New.
From-SVN: r80027
2004-03-27 16:21:21 +00:00
Paolo Carlini
29d4adf460
acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Add pool_allocator.
...
2004-03-22 Paolo Carlini <pcarlini@suse.de>
* acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): Add pool_allocator.
* configure: Regenerate.
* config/allocator/pool_allocator_base.h: New.
* include/ext/pool_allocator.h: Convert to a standard-conforming
allocator.
* src/allocator.cc: Tweak instantiations.
* testsuite/performance/20_util/allocator/insert.cc: Add __pool_alloc.
* testsuite/performance/20_util/allocator/insert_insert.cc: Ditto.
* testsuite/performance/20_util/allocator/list_sort_search.cc: Ditto.
* testsuite/performance/20_util/allocator/map_mt_find.cc: Ditto.
* testsuite/performance/20_util/allocator/map_thread.cc: Ditto.
* testsuite/performance/20_util/allocator/producer_consumer.cc: Ditto.
From-SVN: r79824
2004-03-22 13:07:13 +00:00
Hans-Peter Nilsson
fea41ef911
atomicity.h (__atomic_add): Remove "static inline" and attribute-unused.
...
* config/cpu/cris/atomicity.h (__atomic_add): Remove "static
inline" and attribute-unused. Qualify parameter __mem with
"volatile".
(__exchange_and_add): Ditto. Add back memory clobber to asm.
From-SVN: r79804
2004-03-22 01:37:04 +00:00
Michael Eager
1b1a632b4d
atomicity.h: Prevent reg loads between LL and SC instructions.
...
2004-03-19 Michael Eager <eager@mvista.com>
* config/cpu/mips/atomicity.h: Prevent reg loads between LL and
SC instructions.
From-SVN: r79711
2004-03-19 23:12:10 +00:00
Benjamin Kosnik
8b0d605196
allocator: New.
...
2004-03-13 Benjamin Kosnik <bkoz@redhat.com>
* config/allocator: New.
* config/allocator/bitmap_allocator_base.h: New.
* config/allocator/malloc_allocator_base.h: New.
* config/allocator/mt_allocator_base.h: New.
* config/allocator/new_allocator_base.h: New.
* include/bits/allocator.h: Include c++allocator.h.
* acinclude.m4 (GLIBCXX_ENABLE_ALLOCATOR): New.
* aclocal.m4: Regenerate.
* configure.ac: Use GLIBCXX_ENABLE_ALLOCATOR.
* configure: Regenerate.
* include/Makefile.am (host_headers_extra): Add c++allocator.h.
* include/Makefile.in: Regenerate.
* docs/html/configopts.html: Add enable-libstdcxx-allocator.
From-SVN: r79435
2004-03-13 06:54:25 +00:00
Benjamin Kosnik
f83295bafc
re PR libstdc++/12658 (Thread safety problems in locale::global() and locale::locale())
...
2004-03-06 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/12658
* src/locale_init.cc (locale::locale): Lock critical regions with
external mutexes.
(locale::global): Same.
* include/bits/concurrence.h (__glibcxx_mutex_define_initialized):
Add in once bits for cases without __GTHREAD_MUTEX_INIT.
(__glibcxx_mutex_lock): Same.
* config/cpu/generic/atomicity.h: Remove
_GLIBCXX_NEED_GENERIC_MUTEX, use concurrence.h.
* src/misc-inst.cc: Move all locking bits out of this file.
* config/os/hpux/os_defines.h: Remove _GLIBCXX_INST_ATOMICITY_LOCK.
* src/misc-inst.cc: Same.
* config/cpu/hppa/atomicity.h: Same.
* config/linker-map.gnu: Remove types in the signature of atomic
exports, as they may vary.
From-SVN: r79043
2004-03-07 01:32:43 +00:00
John David Anglin
3a1a4ed26e
atomicity.h (__atomic_add): Make first argument volatile.
...
* config/cpu/hppa/atomicity.h (__atomic_add): Make first argument
volatile.
* config/os/hpux/os_defines.h (_GLIBCXX_INST_ATOMICITY_LOCK): Use
__GXX_WEAK__ instead of _GLIBCXX_SUPPORTS_WEAK.
From-SVN: r78633
2004-02-28 22:46:32 +00:00
Benjamin Kosnik
00d04db682
atomicity.h: Include c++config.h to get defines.
...
2004-02-27 Benjamin Kosnik <bkoz@redhat.com>
* config/cpu/hppa/atomicity.h: Include c++config.h to get defines.
* src/misc-inst.cc (_S_atomicity_lock): Move to __gnu_cxx.
* config/os/irix/irix5.2/atomicity.h: Merge..
* config/os/irix/irix6.5/atomicity.h: Merge..
* config/os/irix/atomicity.h: ...into this.
* config/os/irix/atomic_word.h: New.
* configure.host: Set atomic_word_dir for irix.
* hppa/atomicity.h: Change __Atomicity_lock to _Atomicity_lock.
* i386/atomicity.h: Same.
* m68k/atomicity.h: Same.
* sparc/atomicity.h: Same.
From-SVN: r78577
2004-02-27 20:56:46 +00:00
David Edelsohn
c284a1261d
atomicity.h: Use __gnu_cxx namespace.
...
* config/os/aix/atomicity.h: Use __gnu_cxx namespace. Remove
static, and inline keyworks.
From-SVN: r78574
2004-02-27 13:59:31 -05:00
Benjamin Kosnik
2c5d0ae842
atomicity.h: New, forward declarations for __atomic_add and __exchange_and_add.
...
2004-02-25 Benjamin Kosnik <bkoz@redhat.com>
* include/bits/atomicity.h: New, forward declarations for __atomic_add
and __exchange_and_add.
* config/cpu/generic/atomic_word.h: New, typdef for atomic word.
* config/cpu/cris/atomic_word.h: Same.
* config/cpu/sparc/atomic_word.h: Same.
* include/bits/ios_base.h (_Callback_list::_M_remove_reference):
Qualifiy with __gnu_cxx.
(_Callback_list::_M_add_reference): Same.
* include/bits/locale_classes.h (locale::facet::_M_add_reference): Add.
(locale::facet::_M_remove_reference): Same.
(locale::_Impl::_M_add_reference): Add.
(locale::_Impl::_M_remove_reference): Same.
* include/bits/basic_string.h (basic_string::_Rep::_M_refcopy): Same.
(basic_string::_Rep::_M_dispose): Same.
* src/ios.cc (ios_base::xalloc): Same.
* src/ios_init.cc (ios_base::Init::Init): Same.
(ios_base::Init::~Init): Same.
* src/locale.cc (locale:🆔 :_M_id): Same.
* config/cpu/i486/atomicity.h: Use __gnu_cxx namespace. Remove
static, and inline keyworks.
* config/cpu/alpha/atomicity.h: Same.
* config/cpu/cris/atomicity.h: Same.
* config/cpu/generic/atomicity.h: Same.
* config/cpu/hppa/atomicity.h: Same.
* config/cpu/i386/atomicity.h: Same.
* config/cpu/ia64/atomicity.h: Same.
* config/cpu/m68k/atomicity.h: Same.
* config/cpu/mips/atomicity.h: Same.
* config/cpu/powerpc/atomicity.h: Same.
* config/cpu/s390/atomicity.h: Same.
* config/cpu/sparc/atomicity.h: Same.
* src/Makefile.am (host_sources): Add atomicity.cc.
(atomicity.cc): New rule.
* src/Makefile.in: Regenerate.
* include/Makefile.am (host_headers): Remove host atomicity.h.
(host_headers): Add atomic_word.h.
(bits_headers): Add bits atomicity.h.
Change ATOMICITY_INC_SRCDIR to ATOMICITY_SRCDIR.
* include/Makefile.in: Regenerate.
* configure.host (atomic_word_dir): Add.
* configure.ac: Substitute ATOMIC_WORD_SRCDIR. Change
ATOMICITY_INC_SRCDIR to ATOMICITY_SRCDIR.
* configure: Regenerate.
* config/linker-map.gnu: Export __exchange_and_add, and __atomic_add.
* testsuite/27_io/ios_base/cons/assign_neg.cc: Adjust line numbers.
* testsuite/27_io/ios_base/cons/copy_neg.cc: Same.
From-SVN: r78544
2004-02-27 00:49:50 +00:00
Paolo Carlini
fe932e504b
locale_facets.h (class money_base): Add { _S_minus, _S_zero, _S_end } enum, _S_atoms.
...
2004-02-21 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (class money_base): Add { _S_minus,
_S_zero, _S_end } enum, _S_atoms.
(struct __moneypunct_cache<>): Parameterize on _Intl too; add
_M_grouping_size, _M_curr_symbol_size, _M_positive_sign_size,
_M_negative_sign_size, _M_atoms; tweak constructor consistently.
(__moneypunct_cache<>::~__moneypunct_cache): Update.
(__moneypunct_cache<>::_M_cache): Fill the cache.
(class moneypunct): Tweak __cache_type typedef.
(class money_put): Inherit from money_base too; tweak declaration
of _M_insert, now parameterized on _Intl.
* include/bits/locale_facets.tcc
(struct __use_cache<__moneypunct_cache<_CharT, _Intl> >): New.
(money_put<>::_M_insert): Update definition to use the cache;
call reserve on __res to avoid multiple reallocations.
(money_put<>::do_put(long double),
money_put<>::do_put(const string_type&): Update calls of _M_insert.
* config/locale/generic/monetary_members.cc
(moneypunct<char, true>::_M_initialize_moneypunct,
moneypunct<char, false>::_M_initialize_moneypunct,
moneypunct<wchar_t, true>::_M_initialize_moneypunct,
moneypunct<wchar_t, false>::_M_initialize_moneypunct): Update.
* config/locale/gnu/monetary_members.cc: Likewise.
* config/locale/gnu/monetary_members.cc
(moneypunct<wchar_t, true>::~moneypunct(),
moneypunct<wchar_t, false>::~moneypunct()): Likewise.
* src/globals_locale.cc: Tweak fake_money_cache_c.
* src/locale-inst.cc: Add instantiations for
money_put::_M_insert<false> and money_put::_M_insert<true> and
__moneypunct_cache<C, false>, __moneypunct_cache<C, true>.
* src/locale_facets.cc: Define money_base::_S_atoms.
* src/locale_init.cc: Update placement new of
__moneypunct_cache<char, false>, __moneypunct_cache<char, true>,
__moneypunct_cache<wchar_t, false>, __moneypunct_cache<wchar_T, true>.
* config/locale/generic/numeric_members.cc: Clean up.
* config/locale/gnu/numeric_members.cc: Likewise.
* testsuite/22_locale/money_put/put/char/1.cc: Likewise.
* testsuite/22_locale/money_put/put/char/2.cc: Likewise.
* testsuite/22_locale/money_put/put/char/3.cc: Likewise.
* testsuite/22_locale/money_put/put/wchar_t/1.cc: Likewise.
* testsuite/22_locale/money_put/put/wchar_t/2.cc: Likewise.
* testsuite/22_locale/money_put/put/wchar_t/3.cc: Likewise.
From-SVN: r78216
2004-02-21 09:26:35 +00:00
Paolo Carlini
94b8de97c4
basic_file_stdio.cc (__gnu_internal::xwritev): Rewrite, avoiding recursion.
...
2004-02-18 Paolo Carlini <pcarlini@suse.de>
* config/io/basic_file_stdio.cc (__gnu_internal::xwritev):
Rewrite, avoiding recursion.
(__gnu_internal::xwrite): Minor tweaks.
From-SVN: r78015
2004-02-18 08:36:27 +00:00
Paolo Carlini
2e9a1f6b05
PR libstdc++/13731 (final part: writev)
...
2004-02-12 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/13731 (final part: writev)
* config/io/basic_file_stdio.cc (__gnu_internal::xwrite):
New, a wrapper around writev() handling partial writes.
(__basic_file<char>::xwrite): Move to __gnu_internal and make
static.
(__basic_file<char>::xsputn): Update call.
(__basic_file<char>::xsputn_2): Likewise.
* config/io/basic_file_stdio.h (__basic_file<char>::write):
Don't declare, now static.
From-SVN: r77717
2004-02-12 18:24:07 +00:00
Paolo Carlini
98e9678463
PR libstdc++/13731 (first part: write)
...
2004-02-11 Paolo Carlini <pcarlini@suse.de>
PR libstdc++/13731 (first part: write)
* config/io/basic_file_stdio.h (__basic_file<char>::xwrite):
New, declare.
* config/io/basic_file_stdio.cc (__basic_file<char>::xwrite):
Define it: a wrapper around write() handling partial write.
(__basic_file<char>::xsputn): Use it.
(__basic_file<char>::xsputn_2): Likewise.
From-SVN: r77680
2004-02-12 00:05:35 +00:00
Loren J. Rittle
d318a8ba74
re PR libstdc++/14097 ([3.4 only] Severe disparity between stdio_filebuf and stdio_sync_filebuf.)
...
PR libstdc++/14097
* config/linker-map.gnu: Add typeinfo and typeinfo name for
__gnu_cxx::stdio_filebuf<char, std::char_traits<char> >.
From-SVN: r77636
2004-02-11 05:21:57 +00:00
Loren J. Rittle
64bd39ccc7
re PR libstdc++/14098 ([3.4 only] typeinfo issue with __gnu_cxx::stdio_sync_filebuf)
...
PR libstdc++/14098
* config/linker-map.gnu: Add typeinfo and typeinfo name for
__gnu_cxx::stdio_sync_filebuf<char, std::char_traits<char> >.
From-SVN: r77635
2004-02-11 05:03:13 +00:00
Richard Sandiford
d232925f0b
os_defines.h (_GLIBCXX_FIONREAD_TAKES_OFF_T): Define.
...
* config/os/irix/irix6.5/os_defines.h (_GLIBCXX_FIONREAD_TAKES_OFF_T):
Define.
* config/io/basic_file_stdio.cc (__basic_file<char>::showmanyc): Use
it to decide whether FIONREAD should take an off_t or int argument.
From-SVN: r77336
2004-02-05 20:11:32 +00:00
Zack Weinberg
9fe7e2b747
Revert previous change to config/abi/*/baseline_symbols.txt.
...
From-SVN: r77305
2004-02-05 07:25:58 +00:00
Benjamin Kosnik
6a734d618f
basic_file_stdio.cc (__gnu_internal::fopen_mode): New function.
...
2004-02-04 Benjamin Kosnik <bkoz@redhat.com>
Zack Weinberg <zack@codesourcery.com>
* config/io/basic_file_stdio.cc (__gnu_internal::fopen_mode):
New function.
(__basic_file<char>::sys_open, __basic_file<char>::open): Use it.
(__basic_file<char>::_M_open_mode): Delete.
* config/io/basic_file_stdio.cc: Delete declaration of _M_open_mode.
* testsuite/27_io/basic_filebuf/close/char/9964.cc
* testsuite/27_io/basic_filebuf/open/char/9507.cc:
Correct flags to filebuf::open calls.
* config/abi/alpha-freebsd5/baseline_symbols.txt
* config/abi/alpha-linux-gnu/baseline_symbols.txt
* config/abi/hppa-linux-gnu/baseline_symbols.txt
* config/abi/i386-freebsd4/baseline_symbols.txt
* config/abi/i386-freebsd5/baseline_symbols.txt
* config/abi/i486-linux-gnu/baseline_symbols.txt
* config/abi/ia64-linux-gnu/baseline_symbols.txt
* config/abi/mips-linux-gnu/baseline_symbols.txt
* config/abi/sparc-freebsd5/baseline_symbols.txt
* config/abi/sparc-linux-gnu/baseline_symbols.txt
* config/abi/x86_64-linux-gnu/baseline_symbols.txt:
Remove entry for __basic_file<char>::_M_open_mode.
From-SVN: r77298
2004-02-05 05:24:18 +00:00
Paolo Carlini
9924f721bf
c++locale_internal.h: Remove prototypes of no longer used GLIBC thread locale functions.
...
2004-02-02 Paolo Carlini <pcarlini@suse.de>
* config/locale/gnu/c++locale_internal.h: Remove prototypes
of no longer used GLIBC thread locale functions.
From-SVN: r77140
2004-02-02 23:45:34 +00:00
Stephen M. Webb
917a9fd4d5
c_locale.h: Change ::malloc() to new char[].
...
2004-01-29 Stephen M. Webb <stephen.webb@bregmasoft.com>
* config/local/generic/c_locale.h: Change ::malloc() to new char[].
* config/local/gnu/c_locale.h: Change ::malloc() to new char[].
* include/bits/stl_tempbuf.h: Convert _Temporary_buffer to use
std::get_temporary_buffer() instead of duplicating its code.
Update to C++STYLE conventions.
* include/std/std_memory.h (get_temporary_buffer): Use ::operator
new() instead of std::malloc().
(return_temporary_buffer): Use ::operator delete() instead of
std::free().
From-SVN: r76922
2004-01-30 03:43:00 +00:00
Benjamin Kosnik
ba9d552e03
Makefile.am (bits_headers): Remove allocator_traits.h.
...
2004-01-28 Benjamin Kosnik <bkoz@redhat.com>
* include/Makefile.am (bits_headers): Remove allocator_traits.h.
* include/Makefile.in: Regenerate.
* include/bits/allocator_traits.h: Remove.
* include/bits/allocator.h: Remove allocator_traits.h include, and
relevant comments.
(allocator): Empty base class, inherit from the underlying allocator.
* src/allocator-inst.cc: Move __pool_alloc instantiation to...
* src/allocator.cc: ...here. New. For the underlying allocators.
Add __mt_alloc, __pool_alloc, new_allocator, malloc_allocator bits.
* config/linker-map.gnu: Remove __pool_alloc bits.
* src/Makefile.am (sources): Add allocator.cc.
* src/Makefile.in: Regenerate.
* testsuite/20_util/allocator/1.cc: Split second test into...
* testsuite/20_util/allocator/8230.cc: ...this.
* include/bits/stl_bvector.h (__gnu_norm): Change bit_vector
typedef to use std::allocatore. Format.
* include/ext/pool_allocator.h: Remove allocator_traits.h include,
_Alloc_traits.
* include/ext/mt_allocator.h (__gnu_cxx): Qualify
__throw_bad_alloc calls. Don't include <memory>.
* include/ext/malloc_allocator.h: Remove <memory> include.
* include/ext/new_allocator.h (new_allocator): Same.
* include/ext/ropeimpl.h (__gnu_cxx): Remove __alloc using
declaration. Switch __alloc to _Alloc.
* include/ext/hashtable.h: Remove __alloc.
* include/backward/alloc.h: Only inject allocator, not
implementation details.
* include/ext/mt_allocator.h: Replace free with delete.
From-SVN: r76821
2004-01-29 00:18:40 +00:00
Ulrich Weigand
6e198ee05d
configure.host: Add support for *-tpf.
...
* configure.host: Add support for *-tpf.
* crossconfig.m4: Likewise.
* configure: Regenerate.
* config/os/tpf: New directory.
* config/os/tpf/os_defines.h: New file.
* config/os/tpf/ctype_base.h: Likewise.
* config/os/tpf/ctype_inline.h: Likewise.
* config/os/tpf/ctype_noninline.h: Likewise.
Co-Authored-By: PJ Darcy <darcypj@us.ibm.com>
From-SVN: r76724
2004-01-27 15:36:22 +00:00
Paolo Carlini
ba9119ec89
c_locale.cc: Fix throw messages to use the __N marker.
...
2004-01-26 Paolo Carlini <pcarlini@suse.de>
* config/locale/generic/c_locale.cc: Fix throw messages
to use the __N marker.
* config/locale/gnu/c_locale.cc: Likewise.
* config/locale/ieee_1003.1-2001/codecvt_specializations.h:
Likewise.
* docs/html/17_intro/C++STYLE: Likewise.
* include/bits/basic_ios.tcc: Likewise.
* include/bits/fstream.tcc: Likewise.
* include/bits/vector.tcc: Likewise.
* include/ext/ropeimpl.h: Likewise.
* include/std/std_bitset.h: Likewise.
* src/ios.cc: Likewise.
* src/locale.cc: Likewise.
* src/localename.cc: Likewise.
From-SVN: r76684
2004-01-27 00:49:03 +00:00
Andreas Schwab
f942e78de9
monetary_members.cc: Restore locale before rethrowing exception.
...
* config/locale/gnu/monetary_members.cc: Restore locale before
rethrowing exception.
From-SVN: r76595
2004-01-25 23:31:43 +00:00
Kaveh R. Ghazi
129057c1ee
re PR c/13814 (rejects different prototypes than builtin function)
...
PR c/13814
* config/linker-map.gnu (nan): Delete.
* libmath/mathconf.h (NAN, nan): Delete.
* linkage.m4 (nan): Don't check for it.
* libmath/nan.c: Delete file.
* config.h.in, configure: Regenerate.
From-SVN: r76431
2004-01-23 16:47:06 +00:00
Paolo Carlini
47f62b27c8
locale_facets.h (struct __numpunct_cache): Add member _M_grouping_size, caching the length of _M_grouping.
...
2004-01-14 Paolo Carlini <pcarlini@suse.de>
* include/bits/locale_facets.h (struct __numpunct_cache):
Add member _M_grouping_size, caching the length of _M_grouping.
(__numpunct_cache<>::_M_cache): Assign the latter.
(__verify_grouping): Move declaration...
* include/bits/locale_facets.tcc (__verify_grouping):
... here, change signature to take a const char* and a size_t
for the grouping; not a template anymore.
(__add_grouping, num_put::_M_group_int, num_put::_M_group_float):
Likewise change signature and tweak consistently.
(num_get::_M_extract_float, num_get::_M_extract_int,
num_put::_M_insert_int, num_put::_M_insert_float,
money_get::do_get(string_type&), money_get::do_put(string_type)):
Update callers.
* config/locale/generic/numeric_members.cc
(numpunct<>::_M_initialize_numpunct): Assign the new member.
* config/locale/gnu/numeric_members.cc
(numpunct<>::_M_initialize_numpunct): Likewise.
* src/locale-inst.cc (__add_grouping): Tweak signature.
(__verify_grouping): Don't instantiate, not a template anymore.
* include/bits/locale_facets.h: Rename _M_truename_len ->
_M_truename_size, _M_falsename_len -> _M_falsename_size.
* include/bits/locale_facets.tcc: Likewise.
* config/locale/generic/numeric_members.cc: Likewise.
* config/locale/gnu/numeric_members.cc: Likewise.
From-SVN: r75876
2004-01-14 19:14:39 +00:00
Paolo Carlini
dc6798f865
locale_facets.h (struct __numpunct_cache): Add members _M_truename_len and _M_falsename_len...
...
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-12 17:02:08 +00:00