Commit Graph

72781 Commits

Author SHA1 Message Date
Mark Mitchell
c3115fd2d9 re PR c++/24278 (ICE while trying to print out error)
PR c++/24278
	* init.c (expand_member_init): Print messages about baseclasses
	using %T rather than %D.
	PR c++/24278
	* g++.dg/template/ctor5.C: New test.

From-SVN: r108840
2005-12-20 04:59:42 +00:00
Mark Mitchell
6b20b203a6 re PR c++/24915 (Overload errors generated without template instantiations for class member templates)
PR c++/24915
	* class.c (add_method): Do not treat templates as identical unless
	their return types are the same.
	PR c++/24915
	* g++.dg/template/overload8.C: New test.

From-SVN: r108837
2005-12-20 04:44:20 +00:00
Roger Sayle
c2c22cd634 combine.c (try_combine): Improve splitting of binary operators by taking advantage of reassociative...
* combine.c (try_combine): Improve splitting of binary operators
	by taking advantage of reassociative transformations.

From-SVN: r108834
2005-12-20 04:17:58 +00:00
Jeff Law
ea65cd378b tree-ssa-dom.c (thread_across_edge): Do not use local_fold.
* tree-ssa-dom.c (thread_across_edge): Do not use local_fold.
	Strip away all type conversions after simplifying the
	condition.

        * tree-cfgcleanup.c (merge_phi_nodes): Allow merging in some
        cases the forwarder block dominates the destination.

From-SVN: r108833
2005-12-19 21:08:01 -07:00
DJ Delorie
4322a86f32 reload1.c (spill_failure): Dump failed reload data to dump file.
* reload1.c (spill_failure): Dump failed reload data to dump file.
(find_reload_regs): Likewise.

From-SVN: r108830
2005-12-19 20:04:24 -05:00
Paolo Carlini
1b4454bfd5 stl_deque.h (deque<>::resize, [...]): Avoid troubles with ADL, user defined operators and _Deque_iterator.
2005-12-19  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_deque.h (deque<>::resize, _M_fill_assign):
	Avoid troubles with ADL, user defined operators and _Deque_iterator.
	(operator-(const _Deque_iterator<>&, const _Deque_iterator<>&):
	Add overload for left and right iterators of the same type.
	* include/bits/deque.tcc (erase(iterator)): Avoid troubles with ADL,
	user defined operators and _Deque_iterator.
	* testsuite/23_containers/deque/types/1.cc: Add.
	
	* include/bits/deque.tcc (_M_insert_aux(iterator, size_type,
	const value_type&)): Qualify with std:: fill call.

From-SVN: r108827
2005-12-20 00:29:18 +00:00
GCC Administrator
31ec030f39 Daily bump.
From-SVN: r108824
2005-12-20 00:17:21 +00:00
Zdenek Dvorak
9be7ee44c4 re PR tree-optimization/24793 (ICE: expected ssa_name, have var_decl in verify_ssa, at tree-ssa.c:746)
PR tree-optimization/24793
	* tree-ssa-loop-ivopts.c (get_ref_tag): Remember the
	original reference if there are subvars.
	* tree-ssa-operands.c (get_tmr_operands): Handle subvars.

From-SVN: r108808
2005-12-19 20:10:11 +00:00
Kenneth Zadeck
0bae56c460 df.c (df_analyze_1, [...]): Corrected basic block number calculations for changes in entry and exit numbering.
2005-12-19  Kenneth Zadeck <zadeck@naturalbridge.com>
	* df.c (df_analyze_1, df_analyze_subcfg, iterative_dataflow):
	Corrected basic block number calculations for changes in entry and
	exit numbering.
2005-12-19  Kenneth Zadeck <zadeck@naturalbridge.com>

	* gcc.c-torture/compile/pr25483 : New test.

From-SVN: r108805
2005-12-19 19:41:35 +00:00
Zdenek Dvorak
780e37d370 tree-flow.h (struct var_ann_d): Change type of may_aliases field to VEC(tree, gc) *.
* tree-flow.h (struct var_ann_d): Change type of
	may_aliases field to VEC(tree, gc) *.
	(may_aliases): Declaration changed.
	* tree-ssa-alias.c (group_aliases, add_may_alias,
	replace_may_alias, dump_may_aliases_for,
	is_aliased_with, add_type_alias, new_type_alias):
	Work with VEC(tree, gc) * instead of varray.
	* tree-flow-inline.h (may_aliases): Ditto.
	* tree-ssa.c (verify_flow_insensitive_alias_info,
	verify_name_tags): Ditto.
	* tree-ssa-operands.c (add_stmt_operand): Ditto.

From-SVN: r108804
2005-12-19 19:13:21 +00:00
Paul Brook
b214e1e755 Fix previous mis-applied patch.
* config/m68k/m68k.md (m68k_output_function_prologue): Always call
	dwarf2out_def_cfa. Only add space for frame pointer to cfa_offset
	when frame_pointer_needed.

From-SVN: r108801
2005-12-19 18:08:13 +00:00
Volker Reichelt
2f201ba050 re PR c++/20552 (ICE in write_type, at cp/mangle.c:1579)
PR c++/20552
	* g++.dg/ext/typeof10.C: New test.

From-SVN: r108796
2005-12-19 17:28:30 +00:00
Paolo Bonzini
8ef1f2df8f commit changelogs for previous change
From-SVN: r108794
2005-12-19 17:04:55 +00:00
Paolo Bonzini
d19bca389d configure.in: Select appropriate fragments for PowerPC/AIX.
2005-12-19  Paolo Bonzini  <bonzini@gnu.org>

	* configure.in: Select appropriate fragments for PowerPC/AIX.
	* configure: Regenerate.

	* Makefile.def (flags_to_pass): Add ADAFLAGS, BOOT_ADAFLAGS,
	BOOT_CFLAGS, BOOT_LDFLAGS.
	* Makefile.tpl (POSTSTAGE1_FLAGS_TO_PASS): Handle BOOT_ADAFLAGS,
	BOOT_CFLAGS, BOOT_LDFLAGS.
	(TARGET_FLAGS_TO_PASS): Handle ADAFLAGS_FOR_TARGET.
	(stage[+id+]-bubble): Pass flags recursively to the comparison target.
	(stage): Fail if we cannot complete the work.
	* Makefile.in: Regenerate.

From-SVN: r108793
2005-12-19 17:02:00 +00:00
J"orn Rennecke
c2fc545623 re PR rtl-optimization/20070 (If-conversion can't match equivalent code, and cross-jumping only works for literal matches)
* cfgcleanup.c: Temporarily revert patches for PR 20070 till Bernd
	comes back.

From-SVN: r108792
2005-12-19 14:36:59 +00:00
J"orn Rennecke
4264bbf9bd struct-equiv.c (struct_equiv_improve_checkpoint): Fix sets_cc0_p check.
* struct-equiv.c (struct_equiv_improve_checkpoint): Fix sets_cc0_p
	check.

From-SVN: r108791
2005-12-19 14:02:56 +00:00
Ben Elliston
f8ef405c57 * doc/install.texi (Configuration): Typo in Fortran subheading.
From-SVN: r108790
2005-12-20 00:02:32 +11:00
Nathan Sidwell
4d509057e8 * gcc.dg/mt-loopi1.c: New.
From-SVN: r108788
2005-12-19 11:01:38 +00:00
Nathan Sidwell
819f8bd767 mt.md (decrement_and_branch_until_zero): Add another scratch.
* config/mt/mt.md (decrement_and_branch_until_zero): Add another
	scratch.  Correct its reload split. Adjust its peephole.
	(doloop_end): Add additional scratch.
	(nop): Use 'nop'.
	* config/mt/mt.c (MT_INT_ARG_FIRST): Remove.
	(mt_asm_output_opcode, mt_print_operand): Use 'nop'.
	(mt_function_arg_slotno): Use FIRST_ARG_REGNUM.
	(mt_builtin_saveregs): Replace with ...
	(mt_setup_incoming_varargs): ... here.  Save just the varadic
	args.
	(mt_va_start): Remove.
	(mt_reorg_hazard): Ignore USE insns.  Don't call set_noop_p.
	(mt_machine_reorg): Split all insns here.
	(TARGET_SETUP_INCOMING_VARARGS): Override.
	* config/mt/mt.h (TARGET_CPU_CPP_BUILTINS): Define __mt__ only.
	Set to CPU type.
	(EXPAND_BUILTIN_VA_START): Remove.

From-SVN: r108787
2005-12-19 10:51:46 +00:00
Jerry DeLisle
2803e9970d re PR libfortran/25463 (T edit descriptor and ADVANCE="no")
2005-12-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/25463
	* gfortran.dg/advance.f90: New test.

From-SVN: r108785
2005-12-19 07:02:05 +00:00
Jerry DeLisle
0a73639369 re PR libfortran/25463 (T edit descriptor and ADVANCE="no")
2005-12-18  Jerry DeLisle  <jvdelisle@gcc.gnu.org>

	PR libgfortran/25463
	* io/transfer.c (finalize_transfer): Fix execution order so that
	next_record is set to zero in all cases.

From-SVN: r108784
2005-12-19 06:52:33 +00:00
Anthony Green
57b3c68ec5 natPlainDatagramSocketImplPosix.cc (getLocalAddress): New helper function.
2005-12-18  Anthony Green  <green@redhat.com>

	* gnu/java/net/natPlainDatagramSocketImplPosix.cc (getLocalAddress): 
	New helper function.
	(setOption): Use getLocalAddress.  Don't downcast value to
	InetAddress.
	(getOption): Use getLocalAddress.

From-SVN: r108779
2005-12-19 02:54:19 +00:00
Kenneth Zadeck
f988a24784 Fixed typo in changelog.
From-SVN: r108778
2005-12-19 02:36:45 +00:00
Kenneth Zadeck
3d5f877adf flow.c (update_life_info, [...]): Fixed latent bug that could happen if update_life_info was called with a blocks...
2005-12-17  Kenneth Zadeck <zadeck@naturalbridge.com>

        * flow.c (update_life_info, count_or_remove_death_notes): Fixed
	latent bug that could happen if update_life_info was called with a
	blocks parameter and the call to cleanup_cfg actually deleted one
	of those blocks.

From-SVN: r108777
2005-12-19 02:35:44 +00:00
Zdenek Dvorak
fd0bd27803 tree-ssa-structalias.c (update_alias_info): Remove handling of may_be_aliased (SSA_NAME_VAR (op)) case.
* tree-ssa-structalias.c (update_alias_info): Remove handling
	of may_be_aliased (SSA_NAME_VAR (op)) case.

From-SVN: r108776
2005-12-19 00:56:31 +00:00
Benjamin Kosnik
3cbc7af037 c++config: Add in revised namespace associations.
2005-12-18  Benjamin Kosnik  <bkoz@redhat.com>
	
	* include/bits/c++config: Add in revised namespace associations.
	_GLIBCXX_BEGIN_NAMESPACE: New macro.
	_GLIBCXX_END_NAMESPACE: Same.
	_GLIBCXX_BEGIN_NESTED_NAMESPACE: Same.
	_GLIBCXX_END_NESTED_NAMESPACE: Same.
	* acinclude.m4 (GLIBCXX_ENABLE_SYMVERS]): Add gnu-versioned-namespace.
	* configure: Regenerated.
	* config.h.in: Same.
	* config/abi/pre/gnu-versioned-namespace.ver: New.
	* config/abi/pre/gnu.ver (GLIBCXX_3.4.7): Add exports for nested
	debug mode items. 
	* include/Makefile.am (${host_builddir}/c++config.h): Fill in
	values for __GLIBCXX__ and _GLIBCXX_NAMESPACE_ASSOCIATION_VERSION.
	* include/Makefile.in: Regnerate.
	* src/compatibility.cc: Alias new, nested definitions to exported
	symbols from non-nested __gnu_debug.
	* src/Makefile.am:  Add in ENABLE_SYMVERS_GNU_NAMESPACE.
	* src/Makefile.in: Regenerate.
	
	* docs/html/debug_mode.html: Revise for nested design.
	* docs/html/debug.html: Use debug qualifications instead of
	__gnu_debug.
	* docs/html/configopts.html: Revise documentation for
	--enable-symvers.
	
	* include/debug/formatter: Simplify namespace qualifications for
	current, nested-only reality. Add top-level namespace alias,
	namespace debug, for debug-mode containers.
	* include/debug/safe_iterator.h: Same.	
	* include/debug/set.h: Same.
	* include/debug/hash_multimap.h: Same.
	* include/debug/hash_set.h: Same.
	* include/debug/bitset
	* include/debug/safe_sequence.h: Same.
	* include/debug/multiset.h: Same.
	* include/debug/safe_base.h: Same.
	* include/debug/functions.h: Same.
	* include/debug/safe_iterator.tcc
	* include/debug/hash_multiset.h: Same.
	* include/debug/vector
	* include/debug/map.h: Same.
	* include/debug/deque
	* include/debug/hash_map.h: Same.
	* include/debug/string
	* include/debug/macros.h: Same.
	* include/debug/list
	* include/debug/debug.h: Same.
	* include/debug/multimap.h: Same.	
	* src/debug.cc: Same.
	* testsuite/23_containers/vector/invalidation/1.cc: Cleanups.
	* testsuite/23_containers/vector/invalidation/2.cc: Same.
	* testsuite/23_containers/vector/invalidation/3.cc: Same.
	* testsuite/23_containers/vector/invalidation/4.cc: Same.
	* testsuite/23_containers/deque/invalidation/1.cc: Same.
	* testsuite/23_containers/deque/invalidation/2.cc: Same.
	* testsuite/23_containers/deque/invalidation/3.cc: Same.
	* testsuite/23_containers/deque/invalidation/4.cc: Same.
	* testsuite/23_containers/multiset/invalidation/1.cc: Same.
	* testsuite/23_containers/multiset/invalidation/2.cc: Same.
	* testsuite/23_containers/multimap/invalidation/1.cc: Same.
	* testsuite/23_containers/multimap/invalidation/2.cc: Same.
	* testsuite/23_containers/bitset/invalidation/1.cc: Same.
	* testsuite/23_containers/bitset/cons/16020.cc: Same.
	* testsuite/23_containers/bitset/operations/13838.cc: Same.
	* testsuite/23_containers/list/invalidation/1.cc: Same.
	* testsuite/23_containers/list/invalidation/2.cc: Same.
	* testsuite/23_containers/list/invalidation/3.cc: Same.
	* testsuite/23_containers/list/invalidation/4.cc: Same.
	* testsuite/23_containers/set/invalidation/1.cc: Same.
	* testsuite/23_containers/set/invalidation/2.cc: Same.
	* testsuite/23_containers/map/invalidation/1.cc: Same.
	* testsuite/23_containers/map/invalidation/2.cc: Same.
	* testsuite/23_containers/map/insert/16813.cc: Same.
	
	* include/bits/basic_ios.h: Use _GLIBCXX_BEGIN_NAMESPACE(std) and
	friends.	
	* include/bits/stl_list.h: Same.
	* include/bits/stl_map.h: Same.
	* include/bits/stl_algobase.h: Same.
	* include/bits/localefwd.h: Same.
	* include/bits/valarray_array.tcc: Same.
	* include/bits/valarray_after.h: Same.
	* include/bits/gslice_array.h: Same.
	* include/bits/stl_queue.h: Same.
	* include/bits/gslice.h: Same.
	* include/bits/locale_facets.tcc: Same.
	* include/bits/locale_classes.h: Same.
	* include/bits/stl_set.h: Same.
	* include/bits/locale_facets.h: Same.
	* include/bits/stl_stack.h: Same.
	* include/bits/stl_iterator_base_types.h: Same.
	* include/bits/stl_heap.h: Same.
	* include/bits/indirect_array.h: Same.
	* include/bits/atomicity.h: Same.
	* include/bits/stream_iterator.h: Same.
	* include/bits/concurrence.h: Same.
	* include/bits/basic_string.h: Same.
	* include/bits/stl_multimap.h: Same.
	* include/bits/stl_pair.h: Same.
	* include/bits/basic_ios.tcc: Same.
	* include/bits/stl_raw_storage_iter.h: Same.
	* include/bits/stl_vector.h: Same.
	* include/bits/stl_numeric.h: Same.
	* include/bits/ios_base.h: Same.
	* include/bits/stl_deque.h: Same.
	* include/bits/istream.tcc: Same.
	* include/bits/postypes.h: Same.
	* include/bits/stl_multiset.h: Same.
	* include/bits/mask_array.h: Same.
	* include/bits/stl_uninitialized.h: Same.
	* include/bits/ostream.tcc: Same.
	* include/bits/slice_array.h: Same.
	* include/bits/boost_concept_check.h: Same.
	* include/bits/sstream.tcc: Same.
	* include/bits/stl_iterator_base_funcs.h: Same.
	* include/bits/char_traits.h: Same.
	* include/bits/stl_algo.h: Same.
	* include/bits/stringfwd.h: Same.
	* include/bits/c++config
	* include/bits/stl_iterator.h: Same.
	* include/bits/valarray_array.h: Same.
	* include/bits/stl_tempbuf.h: Same.
	* include/bits/vector.tcc: Same.
	* include/bits/deque.tcc: Same.
	* include/bits/stl_bvector.h: Same.
	* include/bits/basic_string.tcc: Same.
	* include/bits/list.tcc: Same.
	* include/bits/streambuf_iterator.h: Same.
	* include/bits/valarray_before.h: Same.
	* include/bits/stl_construct.h: Same.
	* include/bits/stl_function.h: Same.
	* include/bits/cpp_type_traits.h: Same.
	* include/bits/streambuf.tcc: Same.
	* include/bits/allocator.h: Same.
	* include/bits/stl_tree.h: Same.
	* include/bits/fstream.tcc: Same.
	* include/bits/stl_relops.h: Same.
	* include/bits/functexcept.h: Same.
	* include/std/std_valarray.h: Same.
	* include/std/std_iostream.h: Same.
	* include/std/std_streambuf.h: Same.
	* include/std/std_bitset.h: Same.
	* include/std/std_iosfwd.h: Same.
	* include/std/std_iomanip.h: Same.
	* include/std/std_fstream.h: Same.
	* include/std/std_limits.h: Same.
	* include/std/std_stdexcept.h: Same.
	* include/std/std_istream.h: Same.
	* include/std/std_complex.h: Same.
	* include/std/std_memory.h: Same.
	* include/std/std_ostream.h: Same.
	* include/std/std_sstream.h: Same.
	* include/c_std/std_csignal.h: Same.
	* include/c_std/std_cstdlib.h: Same.
	* include/c_std/std_cstdio.h: Same.
	* include/c_std/std_cstdarg.h: Same.
	* include/c_std/std_cctype.h: Same.
	* include/c_std/std_cmath.h: Same.
	* include/c_std/std_ctime.h: Same.
	* include/c_std/std_clocale.h: Same.
	* include/c_std/std_csetjmp.h: Same.
	* include/c_std/std_cwchar.h: Same.
	* include/c_std/std_cstring.h: Same.
	* include/c_std/std_cstddef.h: Same.
	* include/c_std/std_cwctype.h: Same.
	* include/backward/iterator.h: Same.
	* include/backward/set.h: Same.
	* include/backward/hashtable.h: Same.
	* include/backward/fstream.h: Same.
	* include/backward/tempbuf.h: Same.
	* include/backward/istream.h: Same.
	* include/backward/bvector.h: Same.
	* include/backward/stack.h: Same.
	* include/backward/rope.h: Same.
	* include/backward/complex.h: Same.
	* include/backward/ostream.h: Same.
	* include/backward/heap.h: Same.
	* include/backward/iostream.h: Same.
	* include/backward/function.h: Same.
	* include/backward/multimap.h: Same.
	* include/backward/pair.h: Same.
	* include/backward/stream.h: Same.
	* include/backward/iomanip.h: Same.
	* include/backward/strstream
	* include/backward/slist.h: Same.
	* include/backward/tree.h: Same.
	* include/backward/vector.h: Same.
	* include/backward/deque.h: Same.
	* include/backward/multiset.h: Same.
	* include/backward/list.h: Same.
	* include/backward/map.h: Same.
	* include/backward/algobase.h: Same.
	* include/backward/hash_map.h: Same.
	* include/backward/algo.h: Same.
	* include/backward/queue.h: Same.
	* include/backward/streambuf.h: Same.
	* src/allocator-inst.cc: Same.
	* src/complex_io.cc: Same.
	* src/localename.cc: Same.
	* src/limits.cc: Same.
	* src/ios_failure.cc: Same.
	* src/locale-misc-inst.cc: Same.
	* src/streambuf-inst.cc: Same.
	* src/misc-inst.cc: Same.
	* src/concept-inst.cc: Same.
	* src/ios_locale.cc: Same.
	* src/pool_allocator.cc: Same.
	* src/fstream-inst.cc: Same.
	* src/istream-inst.cc: Same.
	* src/string-inst.cc: Same.
	* src/locale_init.cc: Same.
	* src/ctype.cc: Same.
	* src/strstream.cc: Same.
	* src/ostream-inst.cc: Same.
	* src/functexcept.cc: Same.
	* src/streambuf.cc: Same.
	* src/sstream-inst.cc: Same.
	* src/ios.cc: Same.
	* src/valarray-inst.cc: Same.
	* src/locale.cc: Same.
	* src/tree.cc: Same.
	* src/stdexcept.cc: Same.
	* src/istream.cc: Same.
	* src/compatibility.cc: Same.
	* src/locale-inst.cc: Same.
	* src/globals_io.cc: Same.
	* src/list.cc: Same.
	* src/ios_init.cc: Same.
	* src/locale_facets.cc: Same.
	* src/codecvt.cc: Same.

	* include/tr1/unordered_map: Use _GLIBCXX_BEGIN_NAMESPACE(tr1).
	* include/tr1/boost_shared_ptr.h: Same.
	* include/tr1/tuple
	* include/tr1/hashtable
	* include/tr1/type_traits_fwd.h: Same.
	* include/tr1/unordered_set
	* include/tr1/functional
	* include/tr1/ref_fwd.h: Same.
	* include/tr1/utility
	* include/tr1/type_traits
	* include/tr1/array

	* include/ext/hashtable.h: Use _GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx).
	* include/ext/typelist.h: Same.
	* include/ext/hash_map: Same.
	* include/ext/rc_string_base.h: Same.
	* include/ext/pool_allocator.h: Same.
	* include/ext/iterator: Same.
	* include/ext/rb_tree: Same.
	* include/ext/numeric: Same.
	* include/ext/vstring.tcc: Same.
	* include/ext/sso_string_base.h: Same.
	* include/ext/stdio_filebuf.h: Same.
	* include/ext/algorithm: Same.
	* include/ext/codecvt_specializations.h: Same.
	* include/ext/new_allocator.h: Same.
	* include/ext/array_allocator.h: Same.
	* include/ext/vstring_util.h: Same.
	* include/ext/vstring_fwd.h: Same.
	* include/ext/mt_allocator.h: Same.
	* include/ext/debug_allocator.h: Same.
	* include/ext/slist: Same.
	* include/ext/stdio_sync_filebuf.h: Same.
	* include/ext/hash_fun.h: Same.
	* include/ext/malloc_allocator.h: Same.
	* include/ext/functional: Same.
	* include/ext/bitmap_allocator.h: Same.
	* include/ext/pod_char_traits.h: Same.
	* include/ext/vstring.h: Same.
	* include/ext/ropeimpl.h: Same.
	* include/ext/hash_set: Same.
	* include/ext/memory: Same.
	* include/ext/rope: Same.
	* include/bits/boost_concept_check.h: Same.
	* include/bits/stl_iterator.h: Same.
	* include/bits/char_traits.h: Same.
	* include/bits/cpp_type_traits.h: Same.
	* include/bits/concurrence.h: Same.
	* include/bits/atomicity.h: Same.
	* config/locale/gnu/numeric_members.cc: Same.
	* config/locale/gnu/collate_members.cc: Same.
	* config/locale/gnu/ctype_members.cc: Same.
	* config/locale/gnu/c_locale.cc: Same.
	* config/locale/gnu/codecvt_members.cc: Same.
	* config/locale/gnu/messages_members.cc: Same.
	* config/locale/gnu/c_locale.h: Same.
	* config/locale/gnu/monetary_members.cc: Same.
	* config/locale/gnu/time_members.cc: Same.
	* config/locale/ieee_1003.1-2001/c_locale.h: Same.
	* config/locale/generic/numeric_members.cc: Same.
	* config/locale/generic/collate_members.cc: Same.
	* config/locale/generic/ctype_members.cc: Same.
	* config/locale/generic/c_locale.cc: Same.
	* config/locale/generic/codecvt_members.cc: Same.
	* config/locale/generic/messages_members.cc: Same.
	* config/locale/generic/c_locale.h: Same.
	* config/locale/generic/monetary_members.cc: Same.
	* config/locale/generic/time_members.cc: Same.
	* config/os/aix/atomicity.h: Same.
	* config/os/irix/atomicity.h: Same.
	* config/cpu/powerpc/atomicity.h: Same.
	* config/cpu/cris/atomicity.h: Same.
	* config/cpu/ia64/atomicity.h: Same.
	* config/cpu/alpha/atomicity.h: Same.
	* config/cpu/m68k/atomicity.h: Same.
	* config/cpu/hppa/atomicity.h: Same.
	* config/cpu/mips/atomicity.h: Same.
	* config/cpu/sparc/atomicity.h: Same.
	* config/cpu/i386/atomicity.h: Same.
	* config/cpu/i486/atomicity.h: Same.
	* config/cpu/sh/atomicity.h: Same.
	* config/cpu/generic/atomicity.h: Same.
	* config/cpu/s390/atomicity.h: Same.
	* config/io/c_io_stdio.h: Same.
	* config/io/basic_file_stdio.cc: Same.
	* config/io/basic_file_stdio.h: Same.	
	* src/misc-inst.cc: Same.
	* src/concept-inst.cc: Same.
	* src/ext-inst.cc: Same.
	* src/string-inst.cc: Same.
	* src/pool_allocator.cc: Same.
	* src/bitmap_allocator.cc: Same.
	* src/mt_allocator.cc: Same.
	* libsupc++/exception: Same.
	* libsupc++/vterminate.cc: Same.
	* testsuite/ext/hash_map/1.cc: Explicitly qualify __gnu_cxx::hash_map.
	* testsuite/ext/hash_map/14648.cc: Same.	

	* libsupc++/eh_alloc.cc: Correct comment line spacing.

From-SVN: r108775
2005-12-19 00:56:05 +00:00
GCC Administrator
402840fd9b Daily bump.
From-SVN: r108772
2005-12-19 00:17:49 +00:00
Zdenek Dvorak
ff88c5aa41 tree-flow.h (struct stmt_ann_d): Remove makes_aliased_loads and makes_aliased_stores fields.
* tree-flow.h (struct stmt_ann_d): Remove
	makes_aliased_loads and makes_aliased_stores fields.
	* tree-ssa-ccp.c (likely_value): Do not use makes_aliased_stores
	and makes_aliased_loads fields.
	* tree-ssa-dom.c (eliminate_redundant_computations): Do not
	use makes_aliased_stores.
	* tree-ssa-operands.c (clobbered_aliased_loads,
	clobbered_aliased_stores, ro_call_aliased_loads): Removed.
	(build_ssa_operands, add_stmt_operand, add_call_clobber_ops,
	add_call_read_ops): Do not set makes_aliased_stores and
	makes_aliased_loads fields.
	* tree-ssa.c (verify_ssa): Do not verify makes_aliased_stores
	field.

From-SVN: r108766
2005-12-19 00:12:14 +00:00
Geoffrey Keating
56c779bcc9 darwin.h: Don't include darwin-sections.def to declare global variables...
* config/darwin.h: Don't include darwin-sections.def to declare
	global variables; instead create darwin_section_enum.
	(darwin_section_enum): New.
	(darwin_sections): New.
	* config/darwin.c: Don't include darwin-sections.def to define
	global variables.
	(darwin_sections): New.
	(output_objc_section_asm_op): Rewrite to take advantage of
	darwin_sections.
	(darwin_init_sections): Rewrite to use darwin_sections.
	(machopic_output_indirection): Update for darwin_sections array.
	(machopic_select_section): Likewise.
	(machopic_select_rtx_section): Likewise.
	(machopic_asm_out_constructor): Likewise.
	(machopic_asm_out_destructor): Likewise.
	(darwin_file_end): Likewise.
	* config/rs6000/rs6000.c (machopic_output_stub): Likewise.
	* config/i386/i386.c (machopic_output_stub): Likewise.

From-SVN: r108765
2005-12-18 23:32:52 +00:00
Richard Guenther
04743a370f re PR tree-optimization/25481 (Segfault in tree-ssa-structalias.c)
2005-12-18  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/25481
	* tree-ssa-structalias.c (handle_ptr_arith): Handle
	accesses we don't have a varinfo for.

	* gcc.dg/torture/pr25481.c: New testcase.

From-SVN: r108763
2005-12-18 22:20:31 +00:00
Jon Grimm
15ed7b52cb optabs.c (init_floating_libfuncs): Handle decimal float modes.
* optabs.c (init_floating_libfuncs): Handle decimal float modes.
	(init_optabs): Handle libfuncs for decimal float.
	* genopinit.c (gen_insn): Handle MODE_DECIMAL_FLOAT.
	* stor-layout.c (int_mode_for_mode): Likewise.
	* simplify-rtx.c (simplify_immed_subreg): Likewise.
	(simplify_unary_operation_1): Skip optimisations for decimal float
	modes.
	* varasm.c (output_constant_pool_2): Handle MODE_DECIMAL_FLOAT.
	* emit-rtl.c (gen_const_vector): Add assertion check.
	(init_emit_once): Populate const_tiny_rtx with constants in each
	decimal float mode.
	* expmed.c (extract_high_half, expand_mult_highpart_optab,
	expand_mult_highpart): Assert that mode is not a scalar float
	mode.
	* expr.c (convert_move): Handle conversion between decimal and
	binary floats of the same size.
	* convert.c (convert_to_real): Consider decimal float types when
	folding.
	* dwarf2out.c (base_type_die): Use DW_ATE_decimal_float to
	describe decimal floating point types.

Co-Authored-By: Ben Elliston <bje@au.ibm.com>
Co-Authored-By: Janis Johnson <janis187@us.ibm.com>

From-SVN: r108762
2005-12-19 08:40:47 +11:00
Ulrich Weigand
5a575f77fd re PR rtl-optimization/21041 (ICE: output_operand: Cannot decompose address)
PR rtl-optimization/21041
	* reload.c (find_reloads_subreg_address): Replace paradoxical
	subreg of MEM by widened access only if the resulting memory
	is properly aligned, even on !STRICT_ALIGNMENT targets.

	PR rtl-optimization/21041
	* gcc.dg/pr21041.c: New test.

From-SVN: r108760
2005-12-18 16:06:55 +00:00
Paolo Carlini
e75ea710dd stl_algobase.h (__copy_normal::copy_n): Uglify to __copy_n.
2005-12-18  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_algobase.h (__copy_normal::copy_n): Uglify
	to __copy_n.
	(__copy_backward::copy_b): Likewise to __copy_b.
	(__copy_backward_normal::copy_b_n): Likewise to __copy_b_n.
	(copy, __copy_backward_aux, copy_backward): Adjust.

2005-12-18  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_algo.h (partial_sort_copy): Add
	_BinaryPredicateConcept<_Compare, _InputValueType, _OutputValueType>
	(merge, set_union, set_symmetric_difference): Add
	_OutputIteratorConcept<_OutputIterator, _ValueType2>.
	(binary_search): Remove redundant _BinaryPredicateConcept<_Compare,
	_ValueType, _Tp>, taken care by lower_bound.
	* include/bits/stl_algo.h: Cosmetic changes.

2005-12-18  Paolo Carlini  <pcarlini@suse.de>
	    Howard Hinnant  <hhinnant@apple.com>

	* include/bits/stl_algo.h (merge, includes, set_union,
	set_intersection, set_difference, set_symmetric_difference):
	Fix concept checks.

2005-12-18  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_algo.h (partial_sort_copy, lower_bound,
	upper_bound, equal_range, binary_search): Fix concept checks.

Co-Authored-By: Howard Hinnant <hhinnant@apple.com>

From-SVN: r108758
2005-12-18 15:53:10 +00:00
Andreas Krebbel
6a60530dd6 tree-cfg.c (tree_flow_call_edges_add): Check for empty basic blocks.
2005-12-18  Andreas Krebbel  <krebbel1@de.ibm.com>

	* tree-cfg.c (tree_flow_call_edges_add): Check for empty basic blocks.

	* gcc.dg/20051201-1.c: New test.

From-SVN: r108755
2005-12-18 15:44:00 +00:00
Paul Thomas
e7f79e123c re PR fortran/25018 (Segfault with simple expression)
2005-12-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25018
	*expr.c(check_inquiry): Return FAILURE if there is no symtree to
	provide a name. Error/warning for assumed character length argument
	to LEN for an initialization expression, using GFC_GNU_STD. Add an
	argument to flag that the expression is not restricted.
	(check_init_expr): Improve the message for a failing variable.
	(gfc_match_init_expr): Call check_enquiry again to make sure that
	unsimplified expressions are not causing unnecessary errors.

2005-12-18  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/25018
	*gfortran.dg/initialization_1.f90: New test.
	*gfortran.dg/enum_5.f90: Change dg-error to new message.
	*gfortran.dg/g77/980616-0.f: The same.

From-SVN: r108753
2005-12-18 14:01:00 +00:00
Steven Bosscher
ab9a1ff8ee gcse.c (gcse_main, [...]): Fix non-GNU-isms from the 2005-12-17 patch to renumber the entry and exit blocks.
* gcse.c (gcse_main, bypass_jumps): Fix non-GNU-isms from
	the 2005-12-17 patch to renumber the entry and exit blocks.

From-SVN: r108751
2005-12-18 11:39:02 +00:00
Gabriel Dos Reis
8a6024c17b * doc/objc.texi (Type encoding): Fix typo.
From-SVN: r108749
2005-12-18 09:49:15 +00:00
Benjamin Kosnik
fb5c309d63 post: New.
2005-12-18  Benjamin Kosnik  <bkoz@redhat.com>

	* config/abi/post: New.
	* config/abi/*-linux-gnu: Move to..
	* config/abi/post/*-linux-gnu: ... here.	
	* config/abi/pre: New.
	* config/linker-map.gnu: Move to ..
	* config/abi/pre/gnu.ver: ... here.	
	* config/linker-map.dummy: Move to..
	* config/abi/pre/none.ver: ... here.
	* src/Makefile.am: Use ENABLE_SYMVERS_GNU,
	ENABLE_SYMVERS_DARWIN, ENABLE_SYMVERS_GNU_NAMESPACE.
	Use libstdc++-symbols.ver instead of libstdc++-symbol.ver.
	* src/Makefile.in: Regnerate.
	* acinclude.m4 (GLIBCXX_CONFIGURE_TESTSUITE): Adjust paths for new
	placement of abi baseline files.
	(GLIBCXX_ENABLE_SYMVERS): Add ENABLE_SYMVERS, ENABLE_SYMVERS_GNU,
	ENABLE_SYMVERS_DARWIN.  SYMVER_MAP to SYMVER_FILE.
	* configure: Regnerate.
	* config.h.in: Regnerate.
	* src/compatibility.cc: Adjust macro usage.

From-SVN: r108748
2005-12-18 09:39:23 +00:00
Gabriel Dos Reis
e1111e8ebe tree-tailcall.c (find_tail_calls): Use XNEW.
* tree-tailcall.c (find_tail_calls): Use XNEW.
        * tree-ssa-dom.c (allocate_edge_info): Use XCNEW.
        (free_all_edge_infos): Use explicit cast to convert from void
        * *.
        (vrp_free): Likewise.
        (dom_opt_finalize_block): Likewise.
        (record_equivalences_from_incoming_edge): Likewise.
        (thread_across_edge): Likewise.  Use XCNEWVEC.
        (record_cond): Use XCNEW.
        (record_conditions): Use XNEWVEC.
        (record_edge_info): Use XCNEWVEC.
        (lookup_avail_expr): Use XNEW.
        (record_range): Likewise.  Use GGC_NEW.
        * tree-nested.c (var_map_hash): Use explicit cast to convert
        * from
        void *.
        (var_map_eq): Likewise.
        (lookup_field_for_decl): Likewise.
        (convert_nonlocal_reference): Likewise.
        (convert_local_reference): Likewise.
        (convert_nl_goto_reference): Likewise.
        (convert_nl_goto_receiver): Likewise.
        (convert_call_expr): Likewise.
        (convert_tramp_reference): Likewise.
        (lookup_tramp_for_decl): Likewise.Use GGC_NEW.
        (convert_nl_goto_reference): Likewise.
        (lookup_field_for_decl): Use GGC_NEW.
        (create_nesting_tree): Use GGC_CNEW.
        * tree-ssa-phiopt.c (blocks_in_phiopt_order): Use XNEWVEC.
        * tree-ssa-alias.c (init_alias_info): Use XCNEW.
        (create_alias_map_for): Likewise.
        (setup_pointers_and_addressables): Use XCNEWVEC.
        (get_ptr_info): Use GGC_NEW.
        (used_part_map_eq): Use explicit cast to convert from void *.
        (up_lookup): Likewise.
        (up_insert): Use XNEW.
        (get_or_create_used_part_for): Use XCNEW.
        (get_tmt_for): Likewise.
        * tree-ssa-operands.c (ssa_operand_alloc): Use GGC_NEW.
        * tree-ssa-pre.c (phi_trans_add): Use XNEW.
        (bitmap_set_new): Use explicit cast to convert from void *.
        (set_new): Likewise.
        (insert_into_set): Likewise.
        (pool_copy_list): Likewise.
        (phi_translate): Likewise.
        (create_value_expr_from): Likewise.
        (insert_aux): Use XCNEWVEC.
        (compute_avail): Use XNEWVEC.
        * tree-ssa-live.c (calculate_live_on_entry): Likewise.
        (sort_coalesce_list): Likewise.
        (build_tree_conflict_graph): Use XCNEWVEC.
        * tree-ssa-dce.c (tree_dce_init): Use XNEWVEC.
        * tree-ssa-copy.c (init_copy_prop): Likewise.
        (fini_copy_prop): Likewise.
        * tree-ssa-uncprop.c (associate_equivalences_with_edges): Use
        * XNEW
        and XCNEWVEC.
        (record_equiv): Use XNEW.
        (uncprop_into_successor_phis): Use explicit cast to convert
        * from
        void *.
        (uncprop_initialize_block): Likewise.

From-SVN: r108747
2005-12-18 09:26:53 +00:00
Dorit Nuzman
a1bdf726b7 re PR tree-optimization/24378 (gcc.dg/vect/pr24300.c (test for excess errors) fails)
PR tree-optimization/24378
        * tree-vect-transform.c (vect_transform_loop): Create single-predecessor
        basic-block after loop-versioning.

From-SVN: r108746
2005-12-18 08:46:30 +00:00
Benjamin Kosnik
6fbcd2e574 re PR libstdc++/25472 (--disable-hosted-libstdcxx does not work)
2005-12-17  Benjamin Kosnik  <bkoz@redhat.com>

        * src/io-inst.cc: Separate instantiations into...
        * src/ios-inst.cc: .. this.
        * src/iostream-inst.cc: ... and this.
        * src/Makefile.am (sources): Update.
        * src/Makefile.in: Regenerate.	

2005-12-17  Benjamin Kosnik  <bkoz@redhat.com>
	
	PR libstdc++/25472
        * include/c_std/std_cstdlib.h: Fix for freestanding.

2005-12-17  Benjamin Kosnik  <bkoz@redhat.com>

	* testsuite/libstdc++-dg/normal.exp: Rename to..
	* testsuite/libstdc++-dg/conformance.exp: ... this.

From-SVN: r108743
2005-12-18 08:08:07 +00:00
Jeff Law
6b62dff819 tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Code to simplify SWITCH_EXPR_CODE moved from here to ...
* tree-ssa-dom.c (simplify_switch_and_lookup_avail_expr): Code
	to simplify SWITCH_EXPR_CODE moved from here to ...
	* tree-ssa-forwprop.c (simplify_switch_expr): Here.
	(tree-ssa-forward_propagate_single_use_vars): Call
	simplify_switch_expr when appropriate.

From-SVN: r108738
2005-12-18 00:23:08 -07:00
Andrew Pinski
a7ceba73e5 objc.texi (Type encoding): Add documentation about encoding complex types and _Bool.
2005-12-17  Andrew Pinski  <pinskia@physics.uc.edu>

        * doc/objc.texi (Type encoding): Add documentation about encoding
        complex types and _Bool.

From-SVN: r108737
2005-12-17 20:48:28 -08:00
Gabriel Dos Reis
858904db9e tree-vn.c (vn_add): Use XNEW.
* tree-vn.c (vn_add): Use XNEW.
        * tree-ssa-ccp.c (ccp_initialize): Use XNEWVEC.
        (ccp_fold): Likewise.
        (fold_stmt_r): Use explicit cast to convert from void *.
        * tree-outof-ssa.c (new_temp_expr_table): Use XCNEWVEC.
        (new_temp_expr_table): Likewise.
        * gimplify.c (lookup_tmp_var): Use XNEW.
        (gimplify_asm_expr): Use explcit cast to convert from void *.
        * tree-into-ssa.c (get_ssa_name_ann): Likewise.
        (get_def_blocks_for): Use XNEW.
        (add_to_repl_tbl): Likewise.
        (mark_def_sites): Use explicit cast to convert from void *.
        (def_blocks_free): Likewise.
        (mark_def_sites_initialize_block): Likewise.
        (update_ssa): Use XNEWVEC.
        * tree-dfa.c (create_var_ann): Use GGC_NEW.
        (create_stmt_ann): Likewise.
        (create_tree_ann): Likewise.
        (referenced_var_insert): Likewise.
        (set_default_def): Likewise.
        (referenced_var_lookup_if_exists): Use explicit cast to
        * convert
        from void *.
        (referenced_var_lookup): Likewise.
        (default_def): Likewise.
        (set_default_def): Likewise.
        * tree-cfg.c (create_bb): Likewise.
        (edge_to_cases_cleanup): Likewise.
        (verify_node_sharing): Likewise.
        (record_switch_edge): Use XNEW.
        (cleanup_dead_labels): Use XCNEWVEC.
        (tree_duplicate_sese_region): Use XNEWVEC.
        * tree-scalar-evolution.c (get_instantiated_value): Likewise.
        * tree-ssa.c (verify_ssa): Use XCNEWVEC.
        (int_tree_map_eq): Use explicit cast to convert from void *.
        * libgcov.c (gcov_exit): Use explicit cast to convert from
        * void *.
        (__gcov_execl): Likewise.
        (__gcov_execlp): Likewise.
        (__gcov_execle): Likewise.
        * tree-eh.c (struct_ptr_eq): Likewise.
        (struct_ptr_hash): Likewise.
        (lookup_stmt_eh_region_fn): Likewise.
        (outside_finally_tree): Likewise.
        (find_goto_replacement): Likewise.
        (make_eh_edge): Likewise.
        (mark_eh_edge): Likewise.
        (add_stmt_to_eh_region_fn): Use GGC_NEW.
        (record_in_finally_tree): Use XNEW.
        (maybe_record_in_goto_queue): Use XRESIZEVEC.
        (lower_try_finally_copy): Use XCNEWVEC.

From-SVN: r108736
2005-12-18 01:19:20 +00:00
GCC Administrator
0e27ef71a5 Daily bump.
From-SVN: r108733
2005-12-18 00:17:43 +00:00
Paolo Carlini
d2cc7f9266 stl_vector.h (vector(const vector&)): Use _M_get_Tp_allocator.
2005-12-17  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_vector.h (vector(const vector&)): Use
	_M_get_Tp_allocator.
	* include/bits/stl_deque.h (deque(const deque&)): Likewise.
	(_M_destroy_data): Adjust.

2005-12-17  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_deque.h (deque<>::_M_erase_at_end,
	_M_erase_at_begin, _M_destroy_data, _M_destroy_data_dispatch,
	_M_destroy_data_aux): New, optimize erase at begin() / end() and
	consistently use the "segmented iterator" optimization.
	(deque<>::~deque(), resize, clear, _M_assign_aux, _M_fill_assign):
	Use the above.
	* include/bits/deque.tcc (deque<>::operator=, _M_assign_aux): Same.
	(erase(iterator, iterator)): Likewise, clean-up.
	(erase(iterator)): Tweak, don't call copy unnecessarily. 
	(_M_destroy_data_aux): Define.
	* testsuite/23_containers/deque/modifiers/erase/1.cc: New.
	* testsuite/23_containers/deque/modifiers/erase/2.cc: Likewise.

From-SVN: r108727
2005-12-17 23:42:58 +00:00
Paul Brook
d9e88af0e2 m68k.md (m68k_output_function_prologue): Always call dwarf2out_def_cfa.
2005-12-17  Paul Brook  <paul@codesourcery.com>

	* config/m68k/m68k.md (m68k_output_function_prologue): Always call
	dwarf2out_def_cfa. Only add space for frame pointer to cfa_offset
	when frame_pointer_needed.

From-SVN: r108725
2005-12-17 23:29:21 +00:00
Gabriel Dos Reis
cceb18855e tree-inline.c (copy_body_r): Use explicit cast when converting from void *.
* tree-inline.c (copy_body_r): Use explicit cast when
          converting
        from void *.
        (copy_bb): Likewise.
        (copy_edges_for_bb): Likewise.
        (remap_decl_1): Likewise.
        (estimate_num_insns_1): Likewise.
        * cgraph.c (hash_node): Use explicit cast when converting from
        void *.
        (eq_node): Likewise.
        (cgraph_create_node): Use GGC_CNEW.
        (cgraph_create_edge): Use GGC_NEW.
        (cgraph_remove_node): Use explicit cast when converting from
          void *.
        (hash_varpool_node): Likewise.
        (eq_varpool_node): Likewise.
        (cgraph_varpool_node): Use GGC_CNEW.
        * lambda.h (lambda_vector_new): Use GGC_CNEWVEC.
        * tree-scalar-evolution.c (new_scev_info_str): Use XNEW.
        (eq_scev_info): Use explicit cast when converting from void *.
        (find_var_scev_info): Likewise.
        (set_instantiated_value): Likewise.
        (gather_stats_on_scev_database_1): Likewise.
        * cfgloop.h (simple_loop_desc): Use explicit cast when
          converting
        from void *.
        * c-pch.c (c_common_write_pch): Use XNEWVEC.
        (c_common_read_pch): Likewise.
        * prefix.c (save_string): Use XNEWVEC.
        (translate_name): Use explicit cast when converting from void
          *.
        * c-ppoutput.c (print_line): Use explicit cast when converting
        from void *.
        (pp_dir_change): Likewise.
        * c-cppbuiltin.c (builtin_define_std): Likewise.
        (builtin_define_with_value): Likewise.
        (builtin_define_with_value_n): Likewise.
        (builtin_define_with_int_value): Likewise.
        (builtin_define_type_max): Likewise.
        * c-incpath.c (add_env_var_paths): Use XNEWVEC.
        (add_path): Use XNEW.
        * c-format.c (check_format_info_main): Use GGC_NEW.
        (format_type_warning): Use explicit cast when converting from
          void *.
        * c-typeck.c (alloc_tagged_tu_seen_cache): Use XNEW instead of
        xmalloc. 
        (start_init): Likewise.
        * tree-flow-inline.h (first_referenced_var): Use explicit cast
        when converting from void *.
        (next_referenced_var): Likewise.
        * c-pragma.c (push_alignment): Use GGC_NEW instead of
          ggc_alloc.
        * gensupport.c (lookup_predicate): Use explicit cast to
          convert
        from void *.
        (init_predicate_table): Use XCNEW instead of xcalloc.
        * genpreds.c (process_define_predicate): Likewise.

From-SVN: r108723
2005-12-17 20:45:46 +00:00
Steven G. Kargl
ef98c52a44 re PR fortran/25458 ([4.1] Kind of constants in generic intrinsics)
PR fortran/25458
	* simplify.c (gfc_simplify_ibset, gfc_simplify_not): Add call to
	twos_complement.

	* gfortran.dg/chkbits.f90: New test.


Co-Authored-By: Tobias Schlüter <tobias.schlueter@physik.uni-muenchen.de>

From-SVN: r108720
2005-12-17 17:30:26 +00:00
Gabriel Dos Reis
573b07c751 floatformat.c (floatformat_i387_ext_is_valid): Use explicit cast to convert from "from".
* floatformat.c (floatformat_i387_ext_is_valid): Use explicit cast
        to convert from "from".
        (floatformat_to_double): Likewise.
        (floatformat_from_double): Use explicit cast to convert from "to".

From-SVN: r108717
2005-12-17 17:21:34 +00:00