Commit Graph

126825 Commits

Author SHA1 Message Date
Oleg Endo 7457ebb81d sh.md (doloop_end_split): Add missing SI mode.
* config/sh/sh.md (doloop_end_split): Add missing SI mode.

From-SVN: r205359
2013-11-25 17:04:17 +00:00
Oleg Endo aaa57c69e6 re PR target/53976 ([SH] Unnecessary clrt/sett after bt/bf)
PR target/53976
	PR target/59243
	* config/sh/sh_optimize_sett_clrt.cc (struct ccreg_value): Update
	comments.
	(sh_optimize_sett_clrt::find_last_ccreg_values): Check stack of
	previously visited basic blocks before recursing instead of only one
	basic block.

From-SVN: r205358
2013-11-25 16:47:16 +00:00
Rainer Orth 1b7b698a06 Remove GCC_LIBSTDCXX_RAW_CXX_FLAGS
* configure.ac (GCC_LIBSTDCXX_RAW_CXX_FLAGS): Remove.
	* configure: Regenerate.

From-SVN: r205357
2013-11-25 16:32:22 +00:00
Paolo Carlini 6f640d1576 re PR c++/58810 (ICE with invalid function typedef)
/cp
2013-11-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58810
	* decl.c (grokdeclarator): Don't handle qualified free functions here,
	leave the diagnostic to grokfndecl.

/testsuite
2013-11-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/58810
	* g++.dg/other/cv_func3.C: New.
	* g++.dg/other/cv_func.C: Adjust.
	* g++.dg/parse/fn-typedef2.C: Likewise.

From-SVN: r205356
2013-11-25 16:10:29 +00:00
Rainer Orth 80e8745780 Suppress some warnings for soft-fp files
* config/t-softfp (soft-fp-objects-base): New variable.
	(soft-fp-objects): Use it.

From-SVN: r205355
2013-11-25 16:02:12 +00:00
Kyrylo Tkachov 984239ade9 aarch64.c (cortexa53_tuning): New struct.
* config/aarch64/aarch64.c (cortexa53_tuning): New struct.
	* config/aarch64/aarch64-cores.def (cortex-a53):
	Use cortexa53 tuning struct.

From-SVN: r205354
2013-11-25 15:26:04 +00:00
Andrew MacLeod ae16b241ce re PR bootstrap/59260 (fold-const.c:14871:5: error: 'hash_table' has not been declared)
PR bootstrap/59260
	* fold-const.c: Include hash-table.h.

From-SVN: r205352
2013-11-25 13:23:09 +00:00
Marek Polacek ecd51813f1 pr59250.C: New test.
2013-11-25  Marek Polacek  <polacek@redhat.com>

testsuite/
	* g++.dg/ubsan/pr59250.C: New test.

From-SVN: r205349
2013-11-25 11:17:23 +00:00
Marek Polacek 7d7b5c7a4b Fix up CL.
From-SVN: r205348
2013-11-25 11:15:08 +00:00
Marek Polacek 39a4816e40 ubsan.c (ubsan_create_data): Increase the size of the fields array.
2013-11-25  Marek Polacek  <polacek@redhat.com>

	* ubsan.c (ubsan_create_data): Increase the size of the fields array.

From-SVN: r205347
2013-11-25 10:46:20 +00:00
Richard Biener 4d717338df tree-dfa.c: Remove unused convert.h include.
2013-11-25  Richard Biener  <rguenther@suse.de>

	* tree-dfa.c: Remove unused convert.h include.

From-SVN: r205346
2013-11-25 09:58:03 +00:00
Janus Weil 3436db7558 re PR fortran/59143 ([OOP] Bogus warning with array-valued type-bound procedure)
2013-11-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/59143
	* interface.c (get_expr_storage_size): Handle array-valued type-bound
	procedures.

2013-11-25  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/59143
	* gfortran.dg/typebound_proc_30.f90: New.

From-SVN: r205345
2013-11-25 10:45:40 +01:00
Paolo Carlini 7c3001f41a re PR c++/59080 ([c++11] ICE with array of auto)
/cp
2013-11-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/59080
	* pt.c (unify): Don't call unify_array_domain with a NULL_TREE
	third argument.

	PR c++/59096
	* pt.c (apply_late_template_attributes): Check that TREE_VALUE
	isn't NULL_TREE in the attribute_takes_identifier_p case.

/testsuite
2013-11-25  Paolo Carlini  <paolo.carlini@oracle.com>

	PR c++/59080
	* g++.dg/cpp0x/initlist75.C: New.

	PR c++/59096
	* g++.dg/cpp0x/gen-attrs-57.C: New.

From-SVN: r205344
2013-11-25 09:29:18 +00:00
Adam Butcher d1d1af106b Disallow implicit function templates in local functions unless defining a lambda.
gcc/cp/
	PR c++/59112
	PR c++/59113
	* parser.c (cp_parser_parameter_declaration_clause): Disallow implicit
	function templates in local functions unless defining a lambda.

gcc/testsuite/
	PR c++/59112
	PR c++/59113
	g++.dg/cpp1y/pr58533.C: Updated testcase.
	g++.dg/cpp1y/pr59112.C: New testcase.
	g++.dg/cpp1y/pr59113.C: New testcase.

From-SVN: r205343
2013-11-25 07:43:55 +00:00
Terry Guo 02231c1350 invoke.texi (-mslow-flash-data): Document new option.
gcc/ChangeLog
2013-11-25  Terry Guo  <terry.guo@arm.com>

	* doc/invoke.texi (-mslow-flash-data): Document new option.
	* config/arm/arm.opt (mslow-flash-data): New option.
	* config/arm/arm-protos.h (arm_max_const_double_inline_cost): Declare
	it.
	* config/arm/arm.h (TARGET_USE_MOVT): Always true when literal pools
	are disabled.
	(arm_disable_literal_pool): Declare it.
	* config/arm/arm.c (arm_disable_literal_pool): New variable.
	(arm_option_override): Handle new option.
	(thumb2_legitimate_address_p): Don't allow symbol references when
	literal pools are disabled.
	(arm_max_const_double_inline_cost): New function.
	* config/arm/arm.md (types.md): Include it before ...
	(use_literal_pool): New attribute.
	(enabled): Use new attribute.
	(split pattern): Replace symbol+offset with MOVW/MOVT.

gcc/testsuite/ChangeLog
2013-11-25  Terry Guo  <terry.guo@arm.com>

	* gcc.target/arm/thumb2-slow-flash-data.c: New.

From-SVN: r205342
2013-11-25 06:41:20 +00:00
GCC Administrator 36ef4e9d58 Daily bump.
From-SVN: r205341
2013-11-25 00:16:58 +00:00
Steven Bosscher 29f3fd5b6a re PR bootstrap/59279 (r205337 breaks bootstrap with java)
PR bootstrap/59279
	Revert previous commit.

From-SVN: r205338
2013-11-24 21:59:49 +00:00
Steven Bosscher 57d6c446c7 jump.c (reset_insn_reg_label_operand_notes): New function, split out from ...
* jump.c (reset_insn_reg_label_operand_notes): New function,
	split out from ...
	(init_label_info): ... here.  Reset LABEL_NUSES in cfglayout mode.
	* cfgcleanup.c (delete_dead_jump_tables_between): New function,
	split out from ...
	(delete_dead_jumptables): ... here.  Handle cfglayout mode.
	(cleanup_cfg): Delete dead jump tables in cfglayout mode if an
	expensive CFG cleanup is called for.
	* cfgrtl.c (fixup_reorder_chain): Remove BARRIERs from fallthru paths.
	(cfg_layout_finalize): Delete dead jump tables before re-building
	the insns chain.
	* ira.c (ira): Rebuild jump labels *after* deleting unreachable
	basic blocks, not before.
	* loop-init.c (rtl_loop_done): Call for an expensive CFG cleanup.

	* modulo-sched.c (sms_schedule): Do not look for BARRIERs in the
	insns chain of a scheduling extended basic block, they cannot appear
	there in cfglayout mode.

From-SVN: r205337
2013-11-24 19:15:36 +00:00
Tobias Burnus 58b0729751 invoke.texi (-fsanitize=leak): Add link to the wiki page.
2013-11-24  Tobias Burnus  <burnus@net-b.de>

        * doc/invoke.texi (-fsanitize=leak): Add link to the wiki page.

From-SVN: r205336
2013-11-24 17:02:10 +01:00
Francois-Xavier Coudert cc778c5ece scanner.c (gfc_open_intrinsic_module): Remove function.
* scanner.c (gfc_open_intrinsic_module): Remove function.
	* gfortran.h (gfc_open_intrinsic_module): Remove prototype.

From-SVN: r205335
2013-11-24 14:43:20 +00:00
Bill Schmidt 523c1561c9 rs6000.c (rs6000_expand_vec_perm_const_1): Correct for little endian.
2013-11-24  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* config/rs6000/rs6000.c (rs6000_expand_vec_perm_const_1): Correct
	for little endian.

From-SVN: r205333
2013-11-24 14:23:54 +00:00
H.J. Lu 9c7d8960a4 Don't include extra "expr.h" in graphite-sese-to-poly.c
* graphite-sese-to-poly.c: Don't include extra "expr.h".

From-SVN: r205332
2013-11-24 05:56:32 -08:00
Uros Bizjak f9b2c057b5 * testsuite/ChangeLog: Fix ChangeLog entry.
From-SVN: r205325
2013-11-24 13:50:47 +01:00
Uros Bizjak 85aee256a2 float-exact-1.c: Use dg-add-options ieee.
* gcc.dg/float-exact-1.c: Use dg-add-options ieee.
	[LDBL_MANT_DIG == 113]: Fix wrong variable name.

From-SVN: r205324
2013-11-24 11:11:15 +01:00
Ian Lance Taylor 6b05faddf0 syscall: Only call varargs libc functions from C code.
From-SVN: r205321
2013-11-24 02:38:28 +00:00
GCC Administrator 473f48333b Daily bump.
From-SVN: r205320
2013-11-24 00:16:51 +00:00
Easwaran Raman f8b0f44f2e re PR c++/59031 (vtable lookup not optimized away)
PR c++/59031
	* call.c (build_new_method_call_1): Comnpare function context
	with BASELINK_BINFO type rather than instance type before
	marking the call with LOOKUP_NONVIRTUAL.

From-SVN: r205317
2013-11-23 16:01:46 -05:00
Ian Lance Taylor 18768faed3 compiler: Fix backend representation of calls to interface methods.
Also unify all identical result parameter sets into a single
struct type, and fix the use of backend function pointers.

	* go-gcc.cc (Gcc_backend::function_type): Add result_struct
	parameter.

From-SVN: r205316
2013-11-23 19:01:57 +00:00
Eric Botcazou 7c42f52b74 * cilk-common.c (expand_builtin_cilk_detach): Dereference worker.
From-SVN: r205313
2013-11-23 16:44:02 +00:00
Jason Merrill a47c2f6211 re PR c++/58868 (ICE: in count_type_elements, at expr.c:5495 with -std=gnu++0x)
PR c++/58868
	* init.c (build_aggr_init): Don't clobber the type of init
	if we got an INIT_EXPR back from build_vec_init.
	(build_vec_init): Do digest_init on trivial initialization.

From-SVN: r205311
2013-11-23 11:28:57 -05:00
Alexander Ivchenko f391b44b19 re PR c++/58525 (__cxa_throw_bad_array_new_length is generated with -fno-exceptions)
PR c++/58525
	* call.c (build_operator_new_call): Add flag_exceptions check.
	* decl.c (compute_array_index_type): Ditto.
	* init.c (build_new_1): Ditto.
	(build_vec_init): Ditto.

From-SVN: r205310
2013-11-23 11:28:42 -05:00
David Edelsohn 4417887978 re PR target/33704 (AIX runs c++ constructors in incorrect order)
libgcc:

	PR target/33704
        * config/rs6000/aixinitfini.c: New file.
        * config/rs6000/t-aix-cxa (LIB2ADD_ST): Add aixinitfini.c.
        * config/rs6000/libgcc-aix-cxa.ver (GCC_4.9): Add libgcc initfini
        symbols.

gcc:

	PR target/33704
        * config/rs6000/aix.h (COLLECT_SHARED_INIT_FUNC): Define.
        (COLLECT_SHARED_FINI_FUNC): Define.

        * collect2.c (aix_shared_initname): Declare.
        (aix_shared_fininame): Declare.
        (symkind): Add SYM_AIXI and SYM_AIXD.
        (scanfilter_masks): Add SCAN_AIXI and SCAN_AIXD.
        (struct names special): Add GLOBAL__AIXI_ and GLOBAL__AIXD_.
        (aixlazy_flag): Parse.
        (extract_init_priority): SYM_AIXI and SYM_AIXD have highest priority.
        (scan_prog_file, COFF): Handle SYM_AIXI and SYM_AIXD.

Co-Authored-By: Andrew Dixie <andrewd@gentrack.com>

From-SVN: r205309
2013-11-23 10:38:07 -05:00
David Edelsohn cf77a18016 rs6000.c (IN_NAMED_SECTION): New macro.
* config/rs6000/rs6000.c (IN_NAMED_SECTION): New macro.
	(rs6000_xcoff_select_section): Place decls with stricter alignment
	into named sections.
	(rs6000_xcoff_unique_section): Allow unique sections for
	uninitialized data with strict alignment.

From-SVN: r205308
2013-11-23 10:25:09 -05:00
Jakub Jelinek e07ded7bf9 re PR tree-optimization/59154 (internal compiler error: tree check: expected ssa_name, have integer_cst)
PR tree-optimization/59154
	* tree-ssa-reassoc.c (maybe_optimize_range_tests): When changing
	rhs1 of a cast and new_op is invariant, fold_convert it.
	* tree-ssa-forwprop.c (ssa_forward_propagate_and_combine): Only call
	simplify_conversion_from_bitmask if rhs1 is a SSA_NAME.

From-SVN: r205307
2013-11-23 15:21:46 +01:00
Uros Bizjak b84acf541b re PR target/56788 (_mm_frcz_sd and _mm_frcz_ss ignore their second argument)
PR target/56788
	* config/i386/i386.c (bdesc_multi_arg) <IX86_BUILTIN_VFRCZSS>:
	Declare as MULTI_ARG_1_SF instruction.
	<IX86_BUILTIN_VFRCZSD>: Decleare as MULTI_ARG_1_DF instruction.
	* config/i386/sse.md (*xop_vmfrcz<mode>2): Rename
	from *xop_vmfrcz_<mode>.
	* config/i386/xopintrin.h (_mm_frcz_ss): Use __builtin_ia32_movss
	to merge scalar result with __A.
	(_mm_frcz_sd): Use __builtin_ia32_movsd to merge scalar
	result with __A.

From-SVN: r205306
2013-11-23 14:24:19 +01:00
Eric Botcazou 66c14933d1 gimplify.h (recalculate_side_effects): Delete.
* gimplify.h (recalculate_side_effects): Delete.
	* gimplify.c (recalculate_side_effects): Make static and add comment.
ada/
	* gcc-interface/trans.c (Loop_Statement_to_gnu): Set TREE_SIDE_EFFECTS
	on the conditional expression directly.

From-SVN: r205305
2013-11-23 10:23:02 +00:00
Janus Weil 627b82f214 re PR fortran/59228 (ICE-on-invalid with assumed type and ASYNCHRONOUS)
2013-11-23  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/59228
	* interface.c (compare_parameter): Check for array spec.

2013-11-23  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/59228
	* gfortran.dg/asynchronous_4.f90: New.

From-SVN: r205304
2013-11-23 10:14:11 +01:00
Richard Sandiford 5ed182049b sh.md: Use nonimmediate_operand rather than general_operand for the destination of a...
gcc/
	* config/sh/sh.md: Use nonimmediate_operand rather than general_operand
	for the destination of a define_peephole2.  Likewise register_operand
	rather than arith_reg_operand.  Remove constraints from
	define_peephole2s.

From-SVN: r205303
2013-11-23 09:07:19 +00:00
Richard Sandiford 2e62f2ffc8 mn10300-protos.h (mn10300_store_multiple_operation): Delete.
gcc/
	* config/mn10300/mn10300-protos.h (mn10300_store_multiple_operation):
	Delete.
	(mn10300_store_multiple_operation_p): Declare.
	* config/mn10300/mn10300.c (mn10300_store_multiple_operation):
	Rename to...
	(mn10300_store_multiple_operation_p): ...this and remove mode
	argument.
	* config/mn10300/predicates.md (mn10300_store_multiple_operation):
	Define.

From-SVN: r205302
2013-11-23 09:07:01 +00:00
Richard Sandiford c51392f186 bfin-protos.h (push_multiple_operation): Delete.
gcc/
	* config/bfin/bfin-protos.h (push_multiple_operation): Delete.
	(pop_multiple_operation): Delete.
	(analyze_push_multiple_operation): Declare.
	(analyze_pop_multiple_operation): Declare.
	* config/bfin/bfin.c (push_multiple_operation): Rename to...
	(analyze_push_multiple_operation): ...this and remove mode argument.
	(pop_multiple_operation): Rename to...
	(analyze_pop_multiple_operation): ...this and remove mode argument.
	* config/bfin/predicates.md (push_multiple_operation): Define.
	(pop_multiple_operation): Likewise.

From-SVN: r205301
2013-11-23 09:06:42 +00:00
Alan Modra 4615f96c2d vsx.md (fusion peepholes): Disable when !TARGET_VSX.
* config/rs6000/vsx.md (fusion peepholes): Disable when !TARGET_VSX.

From-SVN: r205299
2013-11-23 16:05:18 +10:30
GCC Administrator 2e9bfe4e05 Daily bump.
From-SVN: r205297
2013-11-23 00:17:10 +00:00
Cary Coutant 85d09f6173 Fix demangler to handle conversion operators correctly.
libiberty/
	PR other/59195
	* cp-demangle.c (struct d_info_checkpoint): New struct.
	(struct d_print_info): Add current_template field.
	(d_operator_name): Set flag when processing a conversion
	operator.
	(cplus_demangle_type): When processing <template-args> for
	a conversion operator, backtrack if necessary.
	(d_expression_1): Renamed from d_expression.
	(d_expression): New wrapper around d_expression_1.
	(d_checkpoint): New function.
	(d_backtrack): New function.
	(d_print_init): Initialize current_template.
	(d_print_comp): Set current_template.
	(d_print_cast): Put current_template in scope for
	printing conversion operator name.
	(cplus_demangle_init_info): Initialize is_expression and
	is_conversion.
	* cp-demangle.h (struct d_info): Add is_expression and
	is_conversion fields.
	* testsuite/demangle-expected: New test cases.

From-SVN: r205292
2013-11-22 14:25:49 -08:00
Jakub Jelinek 9065ada9b5 re PR sanitizer/59061 (Port leaksanitizer)
PR sanitizer/59061
	* common.opt (static-liblsan): Add.
	* config/gnu-user.h (STATIC_LIBLSAN_LIBS, STATIC_LIBUBSAN_LIBS):
	Define.
	* flag-types.h (enum sanitize_code): Add SANITIZE_LEAK.  Renumber
	SANITIZE_SHIFT, SANITIZE_DIVIDE, SANITIZE_UNREACHABLE, SANITIZE_VLA,
	SANITIZE_RETURN.
	* opts.c (common_handle_option): Handle -fsanitize=leak.
	* gcc.c (ADD_STATIC_LIBLSAN_LIBS, LIBLSAN_SPEC): Define.
	(LIBUBSAN_SPEC): Don't test LIBUBSAN_EARLY_SPEC.
	(LIBUBSAN_EARLY_SPEC): Remove.
	(SANITIZER_EARLY_SPEC): Don't do anything for libubsan.
	(SANITIZER_SPEC): Add -fsanitize=leak handling.
	(sanitize_spec_function): Handle %sanitize(leak).
	* doc/invoke.texi (-static-liblsan, -fsanitize=leak): Document.

	* c-c++-common/asan/no-redundant-instrumentation-7.c: Fix
	cleanup-tree-dump directive.

	* configure.tgt: Set LSAN_SUPPORTED=yes for x86_64-linux.
	* configure.ac (LSAN_SUPPORTED): New AM_CONDITIONAL.
	* configure: Regenerated.
	* lsan/Makefile.am (toolexeclib_LTLIBRARIES, lsan_files,
	liblsan_la_SOURCES, liblsan_la_LIBADD, liblsan_la_LDFLAGS): Add.
	* lsan/Makefile.in: Regenerated.

From-SVN: r205290
2013-11-22 22:13:08 +01:00
François Dumont 2e5189c83a safe_local_iterator.h (_Safe_local_iterator<>): Remove _M_bucket, use same information in normal local_iterator.
2013-11-22  François Dumont  <fdumont@gcc.gnu.org>

	* include/debug/safe_local_iterator.h (_Safe_local_iterator<>):
	Remove _M_bucket, use same information in normal local_iterator.
	(operator==): Remove redundant _M_can_compare check.
	* include/debug/safe_local_iterator.tcc: Adapt.
	* include/debug/unordered_set: Likewise.
	* include/debug/unordered_map: Likewise.

From-SVN: r205289
2013-11-22 20:55:53 +00:00
Jan Hubicka 79a8482c13 20081223-1.c: Add -ffat-lto-objects.
* gcc.dg/20081223-1.c: Add -ffat-lto-objects.
	* gcc.dg/vect/vect.exp: Add -ffat-lto-objects.

From-SVN: r205288
2013-11-22 13:48:07 -07:00
Ian Lance Taylor 42c447c0c4 libgo: Update libtool support for powerpc64le-linux-gnu.
From Ulrich Weigand.

From-SVN: r205287
2013-11-22 20:39:46 +00:00
Jakub Jelinek 4e1a156d8f Makefile.am (check_DEJAGNU_normal_targets): Add 10.
* testsuite/Makefile.am (check_DEJAGNU_normal_targets): Add 10.
	(check-DEJAGNU): Add normal10, run 28_regex/[ab]*
	tests as another separate job.
	* testsuite/Makefile.in: Regenerated.

From-SVN: r205286
2013-11-22 21:38:59 +01:00
Mike Stump 486294d4ed sanitizer_linux.cc (__sanitizer): Grab one change from upstream to fix build.
* sanitizer_common/sanitizer_linux.cc (__sanitizer): Grab one
        change from upstream to fix build.

From-SVN: r205285
2013-11-22 20:33:06 +00:00
Aldy Hernandez 31519c3863 ipa.c (symtab_remove_unreachable_nodes): Fix up comment typos.
* ipa.c (symtab_remove_unreachable_nodes): Fix up comment typos.
	* ipa-prop.c (get_vector_of_formal_parm_types): Renamed to ...
	(ipa_get_vector_of_formal_parm_types): ... this.  No longer static.
	(ipa_modify_formal_parameters): Adjust caller.  Remove
	synth_parm_prefix argument.  Use operator enum instead of bit fields.
	Add assert for properly handling vector of references.  Handle
	creating brand new parameters.
	(ipa_modify_call_arguments): Use operator enum instead of bit
	fields.
	(ipa_combine_adjustments): Same.  Assert that IPA_PARM_OP_NEW is not
	used.
	(ipa_modify_expr, get_ssa_base_param, ipa_get_adjustment_candidate):
	New functions.
	(ipa_dump_param_adjustments): Rename reduction to new_decl.
	Use operator enum instead of bit fields.
	* ipa-prop.h (enum ipa_parm_op): New.
	(struct ipa_parm_adjustment): New field op.  Rename reduction
	to new_decl, new_arg_prefix to arg_prefix and remove remove_param
	and copy_param.
	(ipa_modify_formal_parameters): Remove last argument.
	(ipa_get_vector_of_formal_parm_types, ipa_modify_expr,
	ipa_get_adjustment_candidate): New prototypes.
	* tree-sra.c (turn_representatives_into_adjustments): Use operator
	enum.  Set arg_prefix.
	(get_adjustment_for_base): Use operator enum.
	(sra_ipa_modify_expr): Rename to ipa_modify_expr and move to
	ipa-prop.c.
	(sra_ipa_modify_assign): Rename sra_ipa_modify_expr to
	ipa_modify_expr.
	(ipa_sra_modify_function_body): Same.  No longer static.
	(sra_ipa_reset_debug_stmts): Use operator enum.
	(modify_function): Do not pass prefix argument.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>

From-SVN: r205284
2013-11-22 21:08:44 +01:00