Commit Graph

143999 Commits

Author SHA1 Message Date
Uros Bizjak aec0b19e79 re PR target/69459 (wrong code with -O2 and vector arithmetics @ x86_64)
PR target/69459
	* config/i386/constraints.md (C): Only accept constant zero operand.
	(BC): New constraint.
	* config/i386/sse.md (*mov<mode>_internal): Use BC constraint
	instead of C constraint.
	* doc/md.texi (Machine Constraints): Update description
	of C constraint.

testsuite/ChangeLog:

	PR target/69459
	* gcc.target/i386/pr69459.c: New test.

From-SVN: r232955
2016-01-28 23:32:47 +01:00
Steve Ellcey df113ce7de re PR target/68400 (ICE in change_address_1, at emit-rtl.c:2125)
PR target/68400
	* gcc.target/mips/mips.exp (mips_option_groups): Add stack-protector.
	* gcc.target/mips/pr68400.c: New test.

From-SVN: r232954
2016-01-28 22:28:04 +00:00
Steve Ellcey 0b16c7b99c re PR target/68400 (ICE in change_address_1, at emit-rtl.c:2125)
2016-01-28  Steve Ellcey  <sellcey@imgtec.com>

	PR target/68400
	* config/mips/mips.c (and_operands_ok): Add MIPS16 check.

From-SVN: r232952
2016-01-28 22:25:55 +00:00
Martin Sebor 494de84f5e PR target/17381 - Unnecessary register move for float extend
2016-01-28  Martin Sebor  <msebor@redhat.com>

	PR target/17381
	* gcc.target/powerpc/pr17381.c: New test.

From-SVN: r232947
2016-01-28 14:05:39 -07:00
Jakub Jelinek eb1b1f0156 re PR middle-end/69542 (-fcompare-debug failure in simplify-rtx.c on i?86 since r232905)
PR middle-end/69542
	* lra-remat.c (calculate_local_reg_remat_bb_data): Only consider
	non-debug insns.

	* gcc.dg/torture/pr69542.c: New test.

From-SVN: r232946
2016-01-28 22:01:51 +01:00
Pat Haugen d7e2ecf330 rs6000.c (output_cbranch): Don't statically predict branches if using guessed profile.
* config/rs6000/rs6000.c (output_cbranch): Don't statically predict
	branches if using guessed profile.

From-SVN: r232945
2016-01-28 20:34:49 +00:00
H.J. Lu 2036f41326 Fix optimize_isl dump
* graphite-optimize-isl.c (optimize_isl): Fix dump.

From-SVN: r232939
2016-01-28 10:23:24 -08:00
Richard Henderson ef22810a29 re PR target/69305 (wrong code with -O and int128 @ aarch64)
PR target/69305

  * config/aarch64/aarch64-modes.def (CC_Cmode): New
  * config/aarch64/aarch64-protos.h: Update.
  * config/aarch64/aarch64.c (aarch64_zero_extend_const_eq): New.
  (aarch64_select_cc_mode): Add check for use of CC_Cmode.
  (aarch64_get_condition_code_1): Handle CC_Cmode.
  * config/aarch64/aarch64.md (addti3): Use adddi3_compareC.
  (*add<mode>3_compareC_cconly_imm): New.
  (*add<mode>3_compareC_cconly): New.
  (*add<mode>3_compareC_imm): New.
  (add<mode>3_compareC): New.
  (add<mode>3_carryin, *addsi3_carryin_uxtw): Sort compare operand
  to be first.  Use aarch64_carry_operation.
  (*add<mode>3_carryin_alt1, *addsi3_carryin_alt1_uxtw): Remove.
  (*add<mode>3_carryin_alt2, *addsi3_carryin_alt2_uxtw): Remove.
  (*add<mode>3_carryin_alt3, *addsi3_carryin_alt3_uxtw): Remove.
  (subti3): Use subdi3_compare1.
  (*sub<mode>3_compare0): Rename from sub<mode>3_compare0.
  (sub<mode>3_compare1): New.
  (*sub<mode>3_carryin0, *subsi3_carryin_uxtw): New.
  (*sub<mode>3_carryin): Use aarch64_borrow_operation.
  (*subsi3_carryin_uxtw): Likewise.
  (*ngc<mode>, *ngcsi_uxtw): Likewise.
  (*sub<mode>3_carryin_alt, *subsi3_carryin_alt_uxtw): New.
  * config/aarch64/iterators.md (DWI): New.
  * config/aarch64/predicates.md (aarch64_carry_operation): New.
  (aarch64_borrow_operation): New.

From-SVN: r232936
2016-01-28 09:48:22 -08:00
Abderrazek Zaafrani 8d18bd108a make debug comment more explicit
2016-01-28  Abderrazek Zaafrani  <a.zaafrani@samsung.com>

	* graphite-optimize-isl.c (optimize_isl): Print a different debug
	message when isl does not return a valid schedule.

From-SVN: r232935
2016-01-28 16:39:18 +00:00
Sebastian Pop 16bccd7a73 remove out of sync comments
* graphite-isl-ast-to-gimple.c (class translate_isl_ast_to_gimple):
	Remove comments from class declarations: they are already in the code
	close by the defs.

From-SVN: r232934
2016-01-28 16:39:10 +00:00
Sebastian Pop 0baa616ac8 use codegen_error_p
* graphite-isl-ast-to-gimple.c (binary_op_to_tree): Call codegen_error_p.
	(ternary_op_to_tree): Same.
	(unary_op_to_tree): Same.
	(nary_op_to_tree): Same.
	(gcc_expression_from_isl_expr_op): Same.
	(gcc_expression_from_isl_expression): Same.
	(graphite_create_new_loop): Same.
	(graphite_create_new_loop_guard): Same.
	(build_iv_mapping): Same.
	(graphite_create_new_guard): Same.
	(translate_isl_ast_to_gimple::copy_loop_phi_nodes): Same.
	(translate_isl_ast_to_gimple::translate_pending_phi_nodes): Same.

From-SVN: r232933
2016-01-28 16:39:01 +00:00
Sebastian Pop 9b496f67e7 assert instead of silently failing code gen
* graphite-isl-ast-to-gimple.c (get_rename_from_scev): Assert instead of
	setting codegen_error to fail codegen.

From-SVN: r232932
2016-01-28 16:38:52 +00:00
Jason Merrill 9925bb881f * tree.h (BINFO_FLAG_0): Rename from BINFO_MARKED.
From-SVN: r232931
2016-01-28 10:45:44 -05:00
Wilco Dijkstra 6dfeb7ceac A recent change added UNSPEC to the CCMP patterns to stop combine optimizing the immediate in a rare case.
A recent change added UNSPEC to the CCMP patterns to stop combine optimizing
the immediate in a rare case.  This requires a fix to the CCMP cost
calculation as the CCMP instruction with unspec is no longer recognized.
Fix the ccmp_1.c test by adding -ffinite-math-only so FCCMPE is emitted on
relational compares.

2016-01-28  Wilco Dijkstra  <wdijkstr@arm.com>

    gcc/
	* config/aarch64/aarch64.c (aarch64_if_then_else_costs):
	Remove CONST_INT_P check in CCMP cost calculation.

    gcc/testsuite/
	* gcc.target/aarch64/ccmp_1.c: Fix test issue.

From-SVN: r232930
2016-01-28 15:41:46 +00:00
Jason Merrill e448880c20 re PR c++/67407 (ice in friend_accessible_p)
PR c++/67407

	* search.c (dfs_walk_once, dfs_walk_once_r)
	(dfs_walk_once_accessible_r, dfs_walk_once_accessible): Use
	hash_set instead of BINFO_MARKED.
	(dfs_unmark_r): Remove.

From-SVN: r232929
2016-01-28 10:07:56 -05:00
Jakub Jelinek e2eb505656 * directives.c (destringize_and_run): Adjust prototype.
From-SVN: r232928
2016-01-28 15:33:55 +01:00
David Edelsohn 4b7471a4c0 pr65980.c: Skip on AIX.
* gcc.dg/pr65980.c: Skip on AIX.
        * gcc.dg/pr66688.c: Same.

From-SVN: r232927
2016-01-28 08:52:06 -05:00
David Edelsohn b271fd2183 re PR target/63679 ([AArch64] Failure to constant fold.)
PR target/63679
        * gcc.dg/tree-ssa/sra-17.c: Adjust regex for more label styles.
        * gcc.dg/tree-ssa/sra-18.c: Same.

From-SVN: r232926
2016-01-28 08:48:00 -05:00
John David Anglin 69b0daeb4a re PR libstdc++/69450 (libstdc++-v3/include/math.h:66:1 2: error: 'constexpr bool std::isnan(double)' conflicts with a previous declaration)
PR libstdc++/69450
	* acinclude.m4 (GLIBCXX_CHECK_MATH11_PROTO): Split check for obsolete
	isinf and isnan functions into two independent checks.  Check on hpux.
	* config.h.in: Regenerate.
	* configure: Regenerate.
	* include/c_global/cmath (isinf(double), isnan(double)): Use
	_GLIBCXX_HAVE_OBSOLETE_ISINF and _GLIBCXX_HAVE_OBSOLETE_ISNAN,
	respectively.

From-SVN: r232925
2016-01-28 13:09:23 +00:00
Eric Botcazou e0ef6912de gigi.h (enum attr_type): Rename into...
* gcc-interface/gigi.h (enum attr_type): Rename into...
	(enum attrib_type): ...this.
	(struct attrib): Adjust.
	* gcc-interface/decl.c (prepend_one_attribute): Likewise.

From-SVN: r232923
2016-01-28 11:59:14 +00:00
Wilco Dijkstra c428f91cb7 Add support for vector permute cost since various permutes can expand into a complex sequence of instructions.
Add support for vector permute cost since various permutes can expand
into a complex sequence of instructions.  This fixes major performance
regressions due to recent changes in SLP vectorizer (which now vectorizes
more aggressively and emits many complex permutes).  Set the cost to > 1
for all microarchitectures so that the number of permutes is usually zero
and regressions disappear.

2016-01-28  Wilco Dijkstra  <wdijkstr@arm.com>

	* config/aarch64/aarch64.c (generic_vector_cost):
	Set vec_permute_cost.
	(cortexa57_vector_cost): Likewise.
	(exynosm1_vector_cost): Likewise.
	(xgene1_vector_cost): Likewise.
	(aarch64_builtin_vectorization_cost): Use vec_permute_cost.
	* config/aarch64/aarch64-protos.h (cpu_vector_cost):
	Add vec_permute_cost entry.

From-SVN: r232922
2016-01-28 11:52:08 +00:00
Wilco Dijkstra e2b691c420 Several instructions disassemble a zero immediate as wzr/xzr due to using a register operand in the disassembly.
Several instructions disassemble a zero immediate as wzr/xzr due to
using a register operand in the disassembly.  Avoid this by removing
the register operand.

2016-01-28  Wilco Dijkstra  <wdijkstr@arm.com>

	* config/aarch64/aarch64.md (ccmp<mode>): Disassemble
	immediate as %1.
	(add<mode>3_compare0): Likewise.
	(addsi3_compare0_uxtw): Likewise.
	(add<mode>3nr_compare0): Likewise.
	(compare_neg<mode>): Likewise.
	(<optab><mode>3): Likewise.

From-SVN: r232921
2016-01-28 11:45:06 +00:00
Andre Vehreschild f4d7b52072 Added missing testcase of r232919.
From-SVN: r232920
2016-01-28 12:41:10 +01:00
Andre Vehreschild 874108a905 re PR fortran/62536 (ICE (segfault) for invalid END BLOCK statement)
gcc/fortran/ChangeLog:

2016-01-28  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/62536
	* decl.c (gfc_match_end): Only unnest and remove BLOCK namespaces
	when the END encountered does not match a BLOCK's end.

gcc/testsuite/ChangeLog:

2016-01-28  Andre Vehreschild  <vehre@gcc.gnu.org>

	PR fortran/62536
	* gfortran.dg/block_15.f08: New test.
	* gfortran.dg/block_end_error_1.f90: Need to catch additional error
	on incorrectly closed BLOCK.

From-SVN: r232919
2016-01-28 12:34:03 +01:00
Ilya Enkovich 30480bcd79 tree-vect-stmts.c (vectorizable_comparison): Add NULL check for vectype.
gcc/

	* tree-vect-stmts.c (vectorizable_comparison): Add
	NULL check for vectype.

gcc/testsuite/

	* gcc.dg/declare-simd.c: New test.

From-SVN: r232917
2016-01-28 10:09:12 +00:00
Richard Biener 14ba8d6d07 re PR tree-optimization/69466 (ICE: Invalid PHI argument after vectorization (on -O2))
2016-01-28  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/69466
	* tree-vect-loop-manip.c (slpeel_duplicate_current_defs_from_edges):
	Account for PHIs we couldn't duplicate.

	* gfortran.dg/vect/pr69466.f90: New testcase.

From-SVN: r232916
2016-01-28 09:10:30 +00:00
Martin Liska c132770ebf re PR pch/68758 (Invalid read of size 8 in gt_pch_save (ggc-common.c:551))
Fix PR pch/68758.

	PR pch/68758
	* ggc-common.c (gt_pch_save): Use ENABLE_VALGRIND_ANNOTATIONS macro
	instead of ENABLE_VALGRIND_CHECKING.

From-SVN: r232915
2016-01-28 08:39:05 +00:00
Paul Thomas 9a175e65bd correct ChangeLogs for PR69422
From-SVN: r232914
2016-01-28 06:52:15 +00:00
Thomas Preud'homme 0d4c694e2f pr67989.C: Remove ARM-specific option.
2016-01-28  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    * g++.dg/pr67989.C: Remove ARM-specific option.
    * gcc.target/arm/pr67989.C: New file.

From-SVN: r232913
2016-01-28 06:29:10 +00:00
Patrick Palka 2b4f7b944d Low-hanging C++-lexer speedup (PR c++/24208)
gcc/cp/ChangeLog:

	PR c++/24208
	* parser.c (LEXER_DEBUGGING_ENABLED_P): New macro.
	(cp_lexer_debugging_p): Use it.
	(cp_lexer_start_debugging): Likewise.
	(cp_lexer_stop_debugging): Likewise.

From-SVN: r232912
2016-01-28 01:06:29 +00:00
GCC Administrator 069ec73a9b Daily bump.
From-SVN: r232911
2016-01-28 00:16:14 +00:00
Uros Bizjak 2aa780da04 pr68264.c: Disable log1p test for glibc < 2.22 and expm1 test for glibc < 2.11.
* gcc.dg/torture/pr68264.c: Disable log1p test for glibc < 2.22
	and expm1 test for glibc < 2.11.

From-SVN: r232907
2016-01-28 00:04:25 +01:00
Janus Weil 124bdd23dc re PR fortran/69484 (documentation issue: -Wtabs and -Wall)
2016-01-27  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/69484
	* invoke.texi: Fix documentation of -Wall with respect to -Wtabs.

From-SVN: r232906
2016-01-27 23:32:52 +01:00
Richard Henderson f75ebe779f re PR rtl-optimization/69447 (wrong code with -O2 -fno-schedule-insns and mixed 8/16/32/64bit arithmetics @ armv7a)
PR rtl-opt/69447

  * lra-remat.c (subreg_regs): New.
  (dump_candidates_and_remat_bb_data): Dump it.
  (operand_to_remat): Reject if operand in subreg_regs.
  (set_bb_regs): Collect subreg_regs.
  (lra_remat): Init and free subreg_regs.  Compute
  calculate_local_reg_remat_bb_data before create_cands.

From-SVN: r232905
2016-01-27 14:08:02 -08:00
Paul Thomas 49847d759f [multiple changes]
2016-01-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/69385
	* trans-expr.c (is_scalar_reallocatable_lhs): Remove the check
	for allocatable components, whilst checking if the symbol is a
	derived or class entity..

2015-01-27  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/69385
	* gfortran.dg/alloc_comp_assign_15.f03: New test.

From-SVN: r232904
2016-01-27 21:24:01 +00:00
H.J. Lu 9525851d49 Don't change stack_alignment_needed for __tls_get_addr
__tls_get_addr must be called with 16-byte aligned stack, which is
guaranted by setting preferred_stack_boundary to 128 bits.  There
is no need to change stack_alignment_needed for __tls_get_addr.

	PR target/68986
	* config/i386/i386.c (ix86_update_stack_boundary): Don't
	change stack_alignment_needed for __tls_get_addr call.

From-SVN: r232901
2016-01-27 11:54:03 -08:00
Segher Boessenkool ac22318350 rs6000: Put back the 's' output modifier
It turns out the 's' output modifier is used in some glibc math code,
and is in an installed header even.  So let's put it back, it is much
less of a burden supporting it a bit longer than to deal with the fallout.
(It is also being fixed for glibc.)


	* config/rs6000/rs6000.c (print_operand): Rollback 's' removal.

From-SVN: r232900
2016-01-27 20:44:31 +01:00
Jakub Jelinek cbdd8ae08c re PR debug/66869 (-Wunused-function no longer warns for static declarations without definition)
PR debug/66869
	* c-decl.c (c_write_global_declarations_1): Warn with
	warn_unused_function if static prototype without definition
	is not C_DECL_USED.

	* gcc.dg/pr66869.c: New test.

From-SVN: r232899
2016-01-27 20:32:49 +01:00
Jakub Jelinek 8dc781e454 * testsuite/libstdc++-prettyprinters/whatis.cc: Include <random>.
From-SVN: r232898
2016-01-27 20:31:06 +01:00
Jeff Law 2b572b3c21 re PR tree-optimization/68398 (coremark regression due to r229685)
PR tree-optimization/68398
	* params.def (PARAM_FSM_SCALE_PATH_STMTS): New parameter.
	(PARAM_FSM_SCALE_PATH_BLOCKS): Likewise.
	* tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths):
	Only count PHIs in the last block in the path.  The others will
	const/copy propagate away.  Add heuristic to allow more irreducible
	subloops to be created when it is likely profitable to do so.

	* tree-ssa-threadbackward.c (fsm_find_control_statement_thread_paths):
	Fix typo in comment.  Use gsi_after_labels and remove the GIMPLE_LABEL
	check from within the loop.  Use gsi_next_nondebug rather than gsi_next.

	PR tree-optimization/68398
	* gcc.dg/tree-ssa/pr66752-3.c: Update expected output.
	* gcc.dg/tree-ssa/ssa-dom-thread-2c.c: Add extra statements on thread
	path to avoid new heuristic allowing more irreducible regions
	* gcc.dg/tree-ssa/ssa-dom-thread-2d.c: Likewise.
	* gcc.dg/tree-ssa/vrp46.c: Likewise.
	* gcc.dg/tree-ssa/ssa-dom-thread-7.c: Update expected output.
	* gcc.dg/tree-ssa/ssa-dom-thread-2g.c: New test.
	* gcc.dg/tree-ssa/ssa-dom-thread-2h.c: Likewise.

From-SVN: r232897
2016-01-27 12:19:47 -07:00
Marek Polacek fa74a4bca8 re PR c/68062 (ICE when comparing vectors)
PR c/68062
	* c-typeck.c (build_binary_op) [EQ_EXPR, GE_EXPR]: Promote operand
	to unsigned, if needed.  Add -Wsign-compare warning.

	* typeck.c (cp_build_binary_op): Promote operand to unsigned, if
	needed.  Add -Wsign-compare warning.

	* c-c++-common/vector-compare-4.c: New test.

From-SVN: r232894
2016-01-27 19:13:42 +00:00
David Malcolm 0afff540e6 libcpp: use better locations for _Pragma tokens (preprocessor/69126)
gcc/testsuite/ChangeLog:
	PR preprocessor/69126
	* c-c++-common/pr69126.c: New test case.

libcpp/ChangeLog:
	PR preprocessor/69126
	* directives.c (destringize_and_run): Add expansion_loc param; use
	it when handling unexpanded pragmas to fixup the locations of the
	synthesized tokens.
	(_cpp_do__Pragma): Add expansion_loc param and use it when calling
	destringize_and_run.
	* internal.h (_cpp_do__Pragma): Add expansion_loc param.
	* macro.c (builtin_macro): Pass expansion location of _Pragma to
	_cpp_do__Pragma.

From-SVN: r232893
2016-01-27 18:57:51 +00:00
Ian Lance Taylor b45285fc2e compiler: Accept map composite literals with omitted key types.
compiler: Copy key_path_ when copying a Composite_literal_expression.
    
    Fixes golang/go#10263.
    
    Reviewed-on: https://go-review.googlesource.com/14299
    Reviewed-on: https://go-review.googlesource.com/18988

From-SVN: r232892
2016-01-27 18:51:58 +00:00
Jakub Jelinek 8f91e6e0ef re PR lto/69254 (ICE in streamer_get_builtin_tree when using -fsanitize=shift on the compile side only)
PR lto/69254
	* sanitizer.def: Add BEGIN_SANITIZER_BUILTINS and
	END_SANITIZER_BUILTINS markers using DEF_BUILTIN_STUB.
	* asan.c (DEF_BUILTIN_STUB): Temporarily define.
	* tree-streamer-in.c: Include asan.h.
	(streamer_get_builtin_tree): For builtins in sanitizer
	range call initialize_sanitizer_builtins and retry.

From-SVN: r232891
2016-01-27 19:48:30 +01:00
Ian Lance Taylor ede6737667 go-lang.c (go_langhook_init_options_struct): Default to -fkeep-gc-roots-live.
* go-lang.c (go_langhook_init_options_struct): Default to
	-fkeep-gc-roots-live.

From-SVN: r232890
2016-01-27 18:37:14 +00:00
Ian Lance Taylor 1a218fc914 common.opt (fkeep-gc-roots-live): New undocumented option.
gcc/:
	* common.opt (fkeep-gc-roots-live): New undocumented option.
	* tree-ssa-loop-ivopts.c (add_candidate_1): If
	-fkeep-gc-roots-live, skip pointers.
	(add_iv_candidate_for_biv): Handle add_candidate_1 returning
	NULL.

gcc/testsuite/:
	* gcc.dg/tree-ssa/ivopt_5.c: New test.

From-SVN: r232888
2016-01-27 17:42:47 +00:00
Ryan Burn 5d70666e4c re PR c++/69267 ([cilkplus] ICE when calling a function with an empty class as an argument)
2016-01-15  Ryan Burn  <contact@rnburn.com>

        PR cilkplus/69267
        * cilk.c (cilk_gimplify_call_params_in_spawned_fn): Change to use
        gimplify_arg. Removed superfluous post_p argument.
        * c-family.h (cilk_gimplify_call_params_in_spawned_fn): Removed
        superfluous post_p argument.
        * c-gimplify.c (c_gimplify_expr): Likewise.

gcc/cp/ChangeLog:

2016-01-15  Ryan Burn  <contact@rnburn.com>

        PR cilkplus/69267
        * cp-gimplify.c (cilk_cp_gimplify_call_params_in_spawned_fn): Removed
        superfluous post_p argument in call to
        cilk_gimplify_call_params_in_spawned_fn.

gcc/testsuite/ChangeLog:

2016-01-15  Ryan Burn  <contact@rnburn.com>

	PR cilkplus/69267
	* g++.dg/cilk-plus/CK/pr69267.cc: New test.

From-SVN: r232887
2016-01-27 10:17:23 -07:00
Uros Bizjak 87ff4d664c re PR target/69512 (ICE when using avx with i586)
2016-01-27  Uros Bizjak  <ubizjak@gmail.com>

	PR target/69512
	* config/i386/i386.md (*zext<mode>_doubleword_and): New pattern.
	(*zext<mode>_doubleword): Disable for TARGET_ZERO_EXTEND_WITH_AND.

testsuite/ChangeLog:

2016-01-27  Uros Bizjak  <ubizjak@gmail.com>

	PR target/69512
	* gcc.target/i386/pr69512.c: New test.

From-SVN: r232885
2016-01-27 18:08:00 +01:00
Thomas Klausner 388dc9e6fd re PR target/68380 (NetBSD has SSP in libc)
2016-01-27  Thomas Klausner  <wiz@NetBSD.org>

	PR target/68380
	* configure.ac: NetBSD provides SSP in its C library.
	* configure: Updated.

From-SVN: r232884
2016-01-27 09:54:48 -07:00
Rainer Emrich 27e23cca33 re PR ada/69488 (tests in gnat/sso give a lot of spurious failures)
PR ada/69488
	* gnat.dg/sso/*.adb: Robustify dg-output directives.

From-SVN: r232883
2016-01-27 16:53:27 +00:00