Commit Graph

122478 Commits

Author SHA1 Message Date
Joseph Myers
040f18a666 * zh_TW.po: Update.
From-SVN: r197172
2013-03-27 21:55:16 +00:00
Kai Tietz
b802ae5c6f config.build: Add support for cygwin x64 target.
* config.build: Add support for cygwin x64 target.
        * config.gcc: Likewise.
        * config.host: Likewise.
        * configure.ac: Likewise
        * configure: Regenerated.

From-SVN: r197171
2013-03-27 22:54:50 +01:00
Kai Tietz
8fecb5614a dfp.m4: Add support for cygwin x64 target.
* dfp.m4: Add support for cygwin x64 target.
        * picflag.m4: Likewise.

From-SVN: r197170
2013-03-27 22:53:32 +01:00
Kai Tietz
8269de5462 cygwin-stdint.h: Add support for cygwin x64 target.
* config/i386/cygwin-stdint.h: Add support for cygwin x64 target.
	* config/i386/t-cygwin-w64: New file.
	* config/i386/cygwin-w64.h: New file.
	* config/i386/cygwin.h (EXTRA_OS_CPP_BUILTINS): Extend
	and add support for x64-cygwin target.
	(CPP_SPEC): Likewise.
	(CXX_WRAP_SPEC_LIST): Undefine before define.
	(LIBGCJ_SONAME): Use 15 as version.

From-SVN: r197168
2013-03-27 21:54:01 +01:00
Jason Merrill
d348f17260 re PR c++/56749 (weird interaction between scoped enum used as non-type template parameter and template lookup)
PR c++/56749
	* semantics.c (finish_qualified_id_expr): Return early
	for enum scope.

From-SVN: r197166
2013-03-27 14:21:12 -04:00
Richard Biener
f49b33cb22 re PR target/56716 (during gcc 4.8.0 build on Cygwin: bid128_fma.c:4460:1: internal compiler error: Segmentation fault)
2013-03-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/56716
	* tree-ssa-structalias.c (perform_var_substitution): Adjust
	dumping for ref nodes.

From-SVN: r197165
2013-03-27 15:10:50 +00:00
Martin Jambor
b37a6ce509 re PR tree-optimization/55334 (mgrid regression (ipa-cp disables vectorization))
2013-03-27  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/55334
	* ipa-cp.c (initialize_node_lattices): Allow IPA-CP through and to
	restricted pointers to arrays.

From-SVN: r197163
2013-03-27 15:06:58 +01:00
Gabriel Dos Reis
9469b9b27b Makefile.in (.SUFFIXES): Add .cc.
* Makefile.in (.SUFFIXES): Add .cc.
	(.c.o): Apply same recipe for implicit rule .cc.o.

From-SVN: r197162
2013-03-27 13:20:12 +00:00
Tobias Burnus
1a8c1e35b3 re PR fortran/56650 (Odd error messages with C_SIZEOF for valid code)
2013-03-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/56650
        PR fortran/36437
        * check.c (gfc_check_sizeof, gfc_check_c_sizeof,
        gfc_check_storage_size): Update checks.
        * intrinsic.texi (SIZEOF): Correct class.
        * intrinsic.h (gfc_simplify_sizeof,
        gfc_simplify_storage_size): New prototypes.
        * intrinsic.c (add_functions): Use them.
        * simplify.c (gfc_simplify_sizeof,
        gfc_simplify_storage_size): New functions.

2013-03-27  Tobias Burnus  <burnus@net-b.de>

        PR fortran/56650
        PR fortran/36437
        * gfortran.dg/sizeof_2.f90: New.
        * gfortran.dg/sizeof_3.f90: New.
        * gfortran.dg/sizeof_proc.f90: Update dg-error.

From-SVN: r197159
2013-03-27 11:45:58 +01:00
Richard Biener
7d24f650fa re PR tree-optimization/37021 (Fortran Complex reduction / multiplication not vectorized)
2013-03-27  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/37021
	* tree-vect-data-refs.c (vect_check_strided_load): Allow
	REALPART/IMAGPART_EXPRs around the supported refs.
	* tree-ssa-structalias.c (find_func_aliases): Assume that
	floating-point values are not used to transfer pointers.

	* gfortran.dg/vect/fast-math-pr37021.f90: New testcase.

From-SVN: r197158
2013-03-27 10:38:29 +00:00
Alexander Ivchenko
173536ed5f ivinline-1.C: Add target nonpic.
* g++.dg/ipa/ivinline-1.C: Add target nonpic.
        * g++.dg/ipa/ivinline-2.C: Likewise.
        * g++.dg/ipa/ivinline-3.C: Likewise.
        * g++.dg/ipa/ivinline-4.C: Likewise.
        * g++.dg/ipa/ivinline-5.C: Likewise.
        * g++.dg/ipa/ivinline-7.C: Likewise.
        * g++.dg/ipa/ivinline-8.C: Likewise.
        * g++.dg/ipa/ivinline-9.C: Likewise.
        * g++.dg/cpp0x/noexcept03.C: Likewise.
        * gcc.dg/const-1.c: Likewise.
        * gcc.dg/ipa/pure-const-1.c: Likewise.
        * gcc.dg/noreturn-8.c: Likewise.
        * gcc.target/i386/mmx-1.c: Likewise.
        * gcc.dg/tree-ssa/ipa-split-5.c: Likewise.
        * gcc.dg/tree-ssa/loadpre6.c: Likewise.
        * gcc.c-torture/execute/pr33992.x: New file.

From-SVN: r197157
2013-03-27 10:00:43 +00:00
Alexander Ivchenko
2f251a0535 target.def (TARGET_HAS_IFUNC_P): New target hook.
* gcc/target.def (TARGET_HAS_IFUNC_P): New target hook.
        * gcc/doc/tm.texi.in (TARGET_HAS_IFUNC_P): New.
        * gcc/doc/tm.texi: Regenerate.
        * gcc/targhooks.h (default_has_ifunc_p): New.
        * gcc/targhooks.c (default_has_ifunc_p): Ditto.
        * gcc/config/linux-protos.h: New file.
        * gcc/config/linux-android.h (TARGET_HAS_IFUNC_P): Using version of
        this hook for linux which disables support of indirect functions in
        android.
        * gcc/config/linux-android.c: New file.
        * gcc/config/t-linux-android.c: Ditto.
        * gcc/config.gcc: Added new object file linux-android.o.
        * gcc/config/i386/i386.c (ix86_get_function_versions_dispatcher):
        Using TARGET_HAS_IFUNC hook instead of HAVE_GNU_INDIRECT_FUNCTION.
        * gcc/varasm.c (do_assemble_alias): Likewise.
        * configure.ac: Define HAVE_GNU_INDIRECT_FUNCTION as zero if the target
        doesn't support indirect functions.
        * configure: Regenerate.

From-SVN: r197156
2013-03-27 09:55:19 +00:00
Bin Cheng
78b4e425a6 re PR target/56102 (Wrong rtx cost calculated for Thumb1)
PR target/56102
	* config/arm/arm.c (thumb1_rtx_costs, thumb1_size_rtx_costs): Fix
	rtx costs for SET/ASHIFT/ASHIFTRT/LSHIFTRT/ROTATERT patterns with
	mult-word mode.

From-SVN: r197155
2013-03-27 08:16:54 +00:00
Andreas Krebbel
a5ba7b9285 I've committed the attached patch.
2013-03-27  Andreas Krebbel  <Andreas.Krebbel@de.ibm.com>

	* config/s390/s390.h (TARGET_FLT_EVAL_METHOD): Define.

---
 gcc/config/s390/s390.h |    5 +++++
 1 file changed, 5 insertions(+)

Index: gcc/config/s390/s390.h
===================================================================
*** gcc/config/s390/s390.h.orig
--- gcc/config/s390/s390.h
*************** enum processor_flags
*** 164,169 ****
--- 164,174 ----
  #define S390_TDC_INFINITY (S390_TDC_POSITIVE_INFINITY \
  			  | S390_TDC_NEGATIVE_INFINITY )
  
+ /* This is used by float.h to define the float_t and double_t data
+    types.  For historical reasons both are double on s390 what cannot
+    be changed anymore.  */
+ #define TARGET_FLT_EVAL_METHOD 1
+ 
  /* Target machine storage layout.  */
  
  /* Everything is big-endian.  */

From-SVN: r197154
2013-03-27 07:46:19 +00:00
Terry Guo
be6249867a arm-cores.def: Added core cortex-r7.
2013-03-27  Terry Guo  <terry.guo@arm.com>

	* config/arm/arm-cores.def: Added core cortex-r7.
	* config/arm/arm-tune.md: Regenerated.
	* config/arm/arm-tables.opt: Regenerated.
	* doc/invoke.texi: Added entry for core cortex-r7.

From-SVN: r197153
2013-03-27 07:37:32 +00:00
Walter Lee
801d9b2ac2 Fix typo in ChangeLog.
From-SVN: r197152
2013-03-27 06:53:21 +00:00
Walter Lee
0a514f47b8 tilegx.c (tilegx_expand_prologue): Avoid double-decrement of next_scratch_regno.
* config/tilegx/tilegx.c (tilegx_expand_prologue): Avoid
	double-decrement of next_scratch_regno.

From-SVN: r197139
2013-03-27 06:18:49 +00:00
Walter Lee
9332b0d294 tilegx.md (insn_v1mulu): Fix constraints on input operands.
* config/tilegx/tilegx.md (insn_v1mulu): Fix constraints on
	input operands.
	(insn_v1mulus): Ditto.
	(insn_v2muls): Ditto.

From-SVN: r197138
2013-03-27 06:17:18 +00:00
Walter Lee
f54ea5dd2e tilegx.h (ASM_OUTPUT_ADDR_VEC_ELT): Delete extra tab.
* config/tilegx/tilegx.h (ASM_OUTPUT_ADDR_VEC_ELT): Delete
	extra tab.
	(ASM_OUTPUT_ADDR_DIFF_ELT): Ditto.

From-SVN: r197137
2013-03-27 06:13:11 +00:00
Walter Lee
bf60f4ca46 tilegx.md (*sibcall_insn): Fix type atribute for jr.
* config/tilegx/tilegx.md (*sibcall_insn): Fix type atribute
	for jr.
	(*sibcall_value): Ditto.

From-SVN: r197136
2013-03-27 06:11:35 +00:00
Walter Lee
e3b51eeba1 tilegx.md (insn_mnz_<mode>): Replaced by ...
* config/tilegx/tilegx.md (insn_mnz_<mode>): Replaced by ...
	(insn_mnz_v8qi): ... this ...
	(insn_mnz_v4hi): ... and this.  Replace (const_int 0) with the
	vector equivalent.
	(insn_v<n>mnz): Replaced by ...
	(insn_v1mnz): ... this ...
	(insn_v2mnz): ... and this.  Replace (const_int 0) with the vector
	equivalent.
	(insn_mz_<mode>): Replaced by ...
	(insn_mz_v8qi): ... this ...
	(insn_mz_v4hi): ... and this.  Replace (const_int 0) with the
	vector equivalent.
	(insn_v<n>mz): Replaced by ...
	(insn_v1mz): ... this ...
	(insn_v2mz): ... and this.  Replace (const_int 0) with the vector
	equivalent.

From-SVN: r197135
2013-03-27 06:08:01 +00:00
Gabriel Dos Reis
591cb3cfed call.c (build_new_method_call_1): Use INDIRECT_REF_P.
* call.c (build_new_method_call_1): Use INDIRECT_REF_P.
	* cvt.c (convert_to_void): Likewise.
	* error.c (dump_expr): Likewise.
	* mangle.c (write_expression): Likewise.
	* parser.c (cp_parser_template_argument): Likewise.
	* pt.c (convert_nontype_argument): Likewise.
	(tsubst_copy_and_build): Likewise.
	* rtti.c (build_typeid): Likewise.
	* semantics.c (finish_call_expr): Likewise.
	(finish_decltype_type): Likewise.
	(build_data_member_initialization): Likewise.
	* tree.c (is_dummy_object): Likewise.
	* typeck.c (decay_conversion): Likewise.
	(build_class_member_access_expr): Likewise.
	(cp_build_addr_expr_1): Likewise.
	(unary_complex_lvalue): Likewise.
	(check_return_expr): Likewise.
	* typeck2.c (cxx_readonly_error): Likewise.

From-SVN: r197132
2013-03-27 03:22:31 +00:00
Jason Merrill
6c74ff2300 re PR c++/52597 ([C++11] confusing diagnostics for invalid use of non-static member function in decltype)
PR c++/52597
	* typeck.c (invalid_nonstatic_memfn_p): Use get_first_fn.  Take tree.
	* semantics.c (finish_decltype_type): Check it before type_unknown_p.
	* cp-tree.h: Adjust prototype.

From-SVN: r197131
2013-03-26 23:01:41 -04:00
Jason Merrill
845367eb3b re PR c++/45282 (wrong decltype result for .*)
PR c++/45282
	* typeck2.c (build_m_component_ref): Handle prvalue object.

From-SVN: r197130
2013-03-26 23:01:34 -04:00
GCC Administrator
a323d79533 Daily bump.
From-SVN: r197129
2013-03-27 00:16:48 +00:00
Eric Botcazou
21c802250b * gcc.c-torture/execute/20011008-3.c: Cap VLEN with STACK_SIZE too.
From-SVN: r197125
2013-03-26 22:32:12 +00:00
Janne Blomqvist
092e08c069 PR 25708 Use a temporary buffer when parsing module files.
2013-03-27  Janne Blomqvist  <jb@gcc.gnu.org>

	PR fortran/25708
        * module.c (module_locus): Use long for position.
        (module_content): New variable.
        (module_pos): Likewise.
        (prev_character): Remove.
        (bad_module): Free data instead of closing mod file.
        (set_module_locus): Use module_pos.
        (get_module_locus): Likewise.
        (module_char): use buffer rather than stdio file.
        (module_unget_char): Likewise.
        (read_module_to_tmpbuf): New function.
        (gfc_use_module): Call read_module_to_tmpbuf.

From-SVN: r197124
2013-03-27 00:08:17 +02:00
Eric Botcazou
4fc7b1459e * doc/invoke.texi (SPARC options): Remove -mlittle-endian.
From-SVN: r197120
2013-03-26 22:04:26 +00:00
Gabriel Dos Reis
cb6da767b0 cp-gimplify.c (cp_genericize_r): Use VAR_OR_FUNCTION_DECL_P.
* cp-gimplify.c (cp_genericize_r): Use VAR_OR_FUNCTION_DECL_P.
	* decl.c (duplicate_decls): Likewise.
	(cp_finish_decl): Likewise.
	(check_class_member_definition_namespace): Likewise.
	* decl2.c (grokfield): Likewise.
	(decl_needed_p): Likewise.
	(import_export_decl): Likewise.
	(mark_used): Likewise.
	* name-lookup.c (pushdecl_maybe_friend_1): Likewise.
	* pt.c (push_access_scope): Likewise.
	(instantiate_decl): Likewise.
	* ptree.c (cxx_print_decl): Likewise.
	* repo.c (repo_emit_p): Likewise.
	* semantics.c (note_decl_for_pch): Likewise.
	* tree.c (decl_linkage): Likewise.

From-SVN: r197119
2013-03-26 20:05:55 +00:00
Joseph Myers
7e10b75601 * de.po, sv.po: Update.
From-SVN: r197117
2013-03-26 17:11:44 +00:00
Paolo Carlini
515e4d1d5a re PR c++/55951 (ICE in check_array_designated_initializer, at cp/decl.c:4785)
/cp
2013-03-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/55951
	* decl.c (check_array_designated_initializer): Handle CONST_DECL
	as ce->index.

/testsuite
2013-03-26  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/55951
	* g++.dg/ext/desig5.C: New.

From-SVN: r197116
2013-03-26 16:49:49 +00:00
Roland McGrath
6f33817e6a arm.c (arm_print_operand: case 'w'): Use fputs rather than fprintf with a non-constant, non-format string.
* config/arm/arm.c (arm_print_operand: case 'w'): Use fputs rather
	than fprintf with a non-constant, non-format string.

From-SVN: r197115
2013-03-26 16:43:09 +00:00
Uros Bizjak
93a4145ba1 i386.md (*cmpqi_ext_1): Merge with *cmpqi_ext_1_rex64 using nox64 isa attribute.
* config/i386/i386.md (*cmpqi_ext_1): Merge with *cmpqi_ext_1_rex64
	using nox64 isa attribute.  Use nonimmediate_x86nomem_operand as
	operand 0 predicate.
	(*cmpqi_ext_3): Merge with *cmpqi_ext_3_rex64 using nox64 isa
	attribute.  Use general_x64nomem_operand as operand 1 predicate.
	(*movqi_extv_1): Merge with *movqi_extv_1_rex64 using nox64 isa
	attribute.  Use nonimmediate_x64nomem_operand as operand 0 predicate.
	(*movqi_extzv_2): Merge with *movqi_extzv_2_rex64 using nox64 isa
	attribute.  Use nonimmediate_x64nomem_operand as operand 0 predicate.
	(mov<mode>_insv_1): Remove expander.  Merge insn with
	movsi_insv_1 using SWI48 mode iterator and nox64 isa attribute.
	Use general_x64nomem_operand as operand 1 predicate.
	(addqi_ext_1): Merge with *addqi_ext_1_rex64 using nox64 isa attribute.
	(*testqi_ext_1): Merge with *testqi_ext_1_rex64 using nox64 isa
	attribute.  Use nonimmediate_x64nomem_operand as operand 1 predicate.
	(*andqi_ext_1): Merge with *andqi_ext_1_rex64 using nox64 isa
	attribute.  Use nonimmediate_x64nomem_operand as operand 2 predicate.
	(*<code>qi_ext_1): Merge with *<code>qi_ext_1_rex64 using nox64 isa
	attribute.  Use nonimmediate_x64nomem_operand as operand 1 predicate.
	(*xorqi_cc_ext_1): Merge with *xorqi_cc_ext_1_rex64 using nox64
	isa attribute.  Use general_x64nomem_operand as operand 2 predicate.
	* config/i386/predicates.md (nonimmediate_x64nomem_operand): New.
	(general_x64nomem_operand): Ditto.

From-SVN: r197114
2013-03-26 17:24:48 +01:00
Joel Sherrill
c6a9ed5a41 Fix date.
From-SVN: r197112
2013-03-26 15:48:39 +00:00
Sebastian Huber
df599020cc rtems.opt: Add -pthread option.
2013-01-29  Sebastian Huber  <sebastian.huber@embedded-brains.de>

	* config/rtems.opt: Add -pthread option.

From-SVN: r197111
2013-03-26 15:47:12 +00:00
Richard Biener
31b0a96096 alias.c (find_base_term): Avoid redundant and not used recursion.
2013-03-26  Richard Biener  <rguenther@suse.de>

	* alias.c (find_base_term): Avoid redundant and not used
	recursion.
	(base_alias_check): Get the initial base term from the
	caller.
	(true_dependence_1): Compute and pass base terms to base_alias_check.
	(write_dependence_p): Likewise.
	(may_alias_p): Likewise.

From-SVN: r197110
2013-03-26 15:20:38 +00:00
Tobias Burnus
0358013033 re PR fortran/56649 (ICE gfc_conv_structure with MERGE)
2013-03-26  Tobias Burnus  <burnus@net-b.de>

        PR fortran/56649
        * simplify.c (gfc_simplify_merge): Simplify more.

2013-03-26  Tobias Burnus  <burnus@net-b.de>

        PR fortran/56649
        * gfortran.dg/merge_init_expr_2.f90: New.
        * gfortran.dg/merge_char_1.f90: Modify test to
        stay a run-time test.
        * gfortran.dg/merge_char_3.f90: Ditto.

From-SVN: r197109
2013-03-26 15:51:56 +01:00
Sofiane Naci
795175513e aarch64.c (aarch64_classify_address): Support PC-relative load in SI modes and above only.
* config/aarch64/aarch64.c (aarch64_classify_address): Support
	PC-relative load in SI modes and above only.

From-SVN: r197107
2013-03-26 14:41:11 +00:00
Xinyu Qi
a76213b9b3 For Xinyu Qi - Fix define_constants for WCGR.
From-SVN: r197104
2013-03-26 14:01:24 +00:00
Uros Bizjak
37ff93553c i386.md (*movdfcc_1): Merge with *movdfcc_1_rex64.
* config/i386/i386.md (*movdfcc_1): Merge with *movdfcc_1_rex64.
	Use x64 and nox64 isa attributes.

From-SVN: r197101
2013-03-26 13:37:46 +01:00
Paolo Carlini
5cf2a08413 decl.c (grokfndecl): Handle separately <inline> and <constexpr> error messages.
/cp
2013-03-26  Paolo Carlini  <paolo.carlini@oracle.com>

	* decl.c (grokfndecl): Handle separately <inline> and <constexpr>
	error messages.

	* decl.c (grokdeclarator): Declare typedef_p and use it everywhere.

/testsuite
2013-03-26  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/cpp0x/constexpr-friend-2.C: New.
	* g++.dg/cpp0x/constexpr-main.C: Likewise.

From-SVN: r197097
2013-03-26 10:23:59 +00:00
Richard Biener
30b0317cb9 emit-rtl.c (set_mem_attributes_minus_bitpos): Remove alignment computations and rely on get_object_alignment_1 for the...
2013-03-26  Richard Biener  <rguenther@suse.de>

	* emit-rtl.c (set_mem_attributes_minus_bitpos): Remove
	alignment computations and rely on get_object_alignment_1
	for the !TYPE_P case.
	Commonize DECL/COMPONENT_REF handling in the ARRAY_REF path.

From-SVN: r197095
2013-03-26 09:14:59 +00:00
Walter Lee
cbcdb1406c tilegx.h (PROFILE_BEFORE_PROLOGUE): Define.
* config/tilegx/tilegx.h (PROFILE_BEFORE_PROLOGUE): Define.
	* config/tilegx/tilepro.h (PROFILE_BEFORE_PROLOGUE): Define.

From-SVN: r197084
2013-03-26 05:02:28 +00:00
Walter Lee
a6406324ae t-crtstuff: Add -fno-asynchronous-unwind-tables -mcmodel=large to CRTSTUFF_T_CFLAGS_S variable.
* config/tilegx/t-crtstuff: Add -fno-asynchronous-unwind-tables
	-mcmodel=large to CRTSTUFF_T_CFLAGS_S variable.

From-SVN: r197083
2013-03-26 04:34:45 +00:00
Jeff Law
dd884525bb tree-ssa-dom.c (record_equivalences_from_incoming_edge): Add missing check for INTEGRAL_TYPE_P that was missing due to checking in wrong...
* tree-ssa-dom.c (record_equivalences_from_incoming_edge): Add missing
        check for INTEGRAL_TYPE_P that was missing due to checking in wrong
        version of prior patch.

From-SVN: r197082
2013-03-25 22:00:20 -06:00
Walter Lee
0051d3ece0 tilegx-builtins.h (enum tilegx_builtin): Add TILEGX_INSN_SHUFFLEBYTES1.
* config/tilegx/tilegx-builtins.h (enum tilegx_builtin): Add
	TILEGX_INSN_SHUFFLEBYTES1.
	* config/tilegx/tilegx.c (tilegx_builtin_info): Add entry for
	shufflebytes1.
	(tilegx_builtins): Ditto.
	* config/tilegx/tilegx.md (insn_shufflebytes1): New pattern.

From-SVN: r197080
2013-03-26 00:54:47 +00:00
Walter Lee
065a36055e tilegx.md (floatsisf2): New pattern.
2013-03-25  Walter Lee  <walt@tilera.com>

	* config/tilegx/tilegx.md (floatsisf2): New pattern.
        (floatunssisf2): New pattern.
        (floatsidf2): New pattern.
        (floatunssidf2): New pattern.

From-SVN: r197079
2013-03-26 00:46:35 +00:00
GCC Administrator
9b2732d64f Daily bump.
From-SVN: r197078
2013-03-26 00:16:17 +00:00
Walter Lee
5b2a3c829c tilegx.c (expand_set_cint64_one_inst): Inline tests for constraint J, K, N, P.
* config/tilegx/tilegx.c (expand_set_cint64_one_inst): Inline
       tests for constraint J, K, N, P.

From-SVN: r197074
2013-03-25 23:59:38 +00:00
Walter Lee
192ea533be Switch eh data to always use pc relative/indirect encoding, to avoid
relocations of unaligned words.

From-SVN: r197073
2013-03-25 23:50:52 +00:00