Commit Graph

99555 Commits

Author SHA1 Message Date
Richard Guenther ed0f0c0f24 re PR lto/41550 (Fix security and portability issues in lto-plugin)
2010-04-23  Richard Guenther  <rguenther@suse.de>

	PR lto/41550
	* lto-plugin.c (parse_table_entry): Use xstrdup and xrealloc.
	(translate): Likewise.
	(all_symbols_read_handler): Likewise.
	(claim_file_handler): Likewise.
	(process_option): Likewise.
	(add_output_files): Likewise.  Remove filename length limit.

From-SVN: r158673
2010-04-23 15:49:10 +00:00
Richard Guenther 4e708ff754 re PR tree-optimization/43572 (FAIL: gfortran.dg/PR19872.f execution test; formatted read - wrong numbers)
2010-04-23  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/43572
	* tree-tailcall.c (find_tail_calls): Allow PARM_DECL uses.

From-SVN: r158671
2010-04-23 15:46:23 +00:00
Richard Guenther 7a38245d60 re PR middle-end/41734 (ICE in cgraph_mark_functions_to_output, at cgraphunit.c:1137 with -fwhopr)
2010-04-23  Richard Guenther  <rguenther@suse.de>

	PR lto/41734
	* gcc.dg/lto/20100423-2_0.c: New testcase.
	* gcc.dg/lto/20100423-2_0.c: Likewise.

From-SVN: r158670
2010-04-23 15:32:22 +00:00
Richard Guenther 8fd8a06f0e re PR lto/43455 (ICE in fold_convert_loc, at fold-const.c:2670 with -O2 -flto)
2010-04-23  Richard Guenther  <rguenther@suse.de>

	PR lto/43455
	* tree-inline.c (tree_can_inline_p): Also check compatibility
	of return types.

	* gcc.dg/lto/20100423-1_0.c: New testcase.
	* gcc.dg/lto/20100423-1_1.c: Likewise.

From-SVN: r158669
2010-04-23 15:18:24 +00:00
Martin Jambor 7762001162 re PR tree-optimization/43846 (array vs members, total scalarization issues)
2010-04-23  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/43846
	* tree-sra.c (struct access): New flag grp_assignment_read.
	(build_accesses_from_assign): Set grp_assignment_read.
	(sort_and_splice_var_accesses): Propagate grp_assignment_read.
	(enum mark_read_status): New type.
	(analyze_access_subtree): Propagate grp_assignment_read, create
	accesses also if both direct_read and root->grp_assignment_read.

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

From-SVN: r158668
2010-04-23 16:52:06 +02:00
Martin Jambor 5c20baf14a re PR middle-end/43835 (IPA-SRA doesn't rewrite attributes)
2010-04-23  Martin Jambor  <mjambor@suse.cz>

	PR middle-end/43835
	* tree-sra.c (ipa_sra_preliminary_function_checks): Check that the
	function does not have type attributes.

	* testsuite/gcc.c-torture/execute/pr43835.c: New test.

From-SVN: r158667
2010-04-23 16:43:10 +02:00
Richard Guenther c67f69a3f3 re PR lto/42653 (ICE with -g and -flto (requires both flags to crash))
2010-04-23  Richard Guenther  <rguenther@suse.de>

	PR lto/42653
	* tree.c (free_lang_data_in_decl): Do not reset DECL_CONTEXT
	of FUNCTION_DECLs.

	* g++.dg/lto/20100423-1_0.C: New testcase.

From-SVN: r158666
2010-04-23 14:20:59 +00:00
Laurynas Biveinis 086058c2a6 sese.h (create_if_region_on_edge): Remove.
2010-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	* sese.h (create_if_region_on_edge): Remove.

	* sese.c (create_if_region_on_edge): Make static.

	* tree-inline.c: Do not include ggc.h.

	* expr.c: Do not include ggc.h.

	* Makefile.in (tree-inline.o, expr.o): Remove $(GGC_H) from
	dependencies.

From-SVN: r158661
2010-04-23 06:02:06 +00:00
GCC Administrator 3c0fe946a6 Daily bump.
From-SVN: r158660
2010-04-23 00:17:10 +00:00
Kaz Kojima fc9c984d84 re PR target/43744 (SH: Error: pcrel too far)
PR target/43744
	* config/sh/sh.c (find_barrier): Don't emit a constant pool
	in the middle of insns for casesi_worker_2.

From-SVN: r158655
2010-04-22 22:02:55 +00:00
Uros Bizjak d5dceab84c interchange-0.c: Fix dg-final directive.
* gcc.dg/graphite/interchange-0.c: Fix dg-final directive.

From-SVN: r158653
2010-04-22 21:50:23 +02:00
David Edelsohn cf42f09539 * config/rs6000/x-aix: Override LDFLAGS for all COMPILERS.
From-SVN: r158652
2010-04-22 14:20:35 -04:00
Ira Rosen 5bdd895c9b Fix PR number in the previous commit to 43842.
From-SVN: r158651
2010-04-22 18:10:43 +00:00
Ira Rosen 74500b3e10 re PR tree-optimization/43842 (ice in vect_create_epilog_for_reduction)
PR tree-optimization/43842
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Handle 
	loop unrolling in update of exit phis. Fix comment.
	* tree-vect-slp.c (vect_analyze_slp): Check that there are at
	least two reduction statements in the loop before starting SLP 
	analysis.

From-SVN: r158650
2010-04-22 18:03:01 +00:00
Bernd Schmidt 8e80fcacfa wmul-1.c: Add dg-require-effective-target ilp32.
* gcc.target/i386/wmul-1.c: Add dg-require-effective-target ilp32.
	* gcc.target/i386/wmul-2.c: Likewise.

From-SVN: r158649
2010-04-22 16:55:08 +00:00
Kaveh R. Ghazi 79b9f413ce builtin-cproj-3.c: Rename and move ...
* gcc.dg/torture/builtin-cproj-3.c: Rename and move ...
        * gcc.dg/cproj-fails-with-broken-glibc.c: ... to here.

From-SVN: r158647
2010-04-22 15:13:51 +00:00
Nick Clifton d5f4a52733 * config/stormy16/stormy16-lib2.c (__ucmpsi2): Fix thinko.
From-SVN: r158646
2010-04-22 14:28:16 +00:00
Alexander Monakov 44741f0366 tree-ssa-reassoc.c (eliminate_plus_minus_pair): Handle BIT_NOT_EXPR to simplify a + ~a.
2010-04-22  Alexander Monakov  <amonakov@ispras.ru>

	* tree-ssa-reassoc.c (eliminate_plus_minus_pair): Handle BIT_NOT_EXPR
	to simplify a + ~a.

	* gfortran.dg/reassoc_6.f: New testcase.

From-SVN: r158645
2010-04-22 16:44:30 +04:00
Laurynas Biveinis f873b20530 tree-parloops.c (loop_parallel_p): New argument parloop_obstack.
2010-04-22  Laurynas Biveinis  <laurynas.biveinis@gmail.com>

	* tree-parloops.c (loop_parallel_p): New argument
	parloop_obstack.  Pass it down.
	(parallelize_loops): New variable parloop_obstack.  Initialize it,
	pass it down, free it.

	* tree-loop-linear.c (linear_transform_loops): Pass down
	lambda_obstack.

	* tree-data-ref.h (lambda_compute_access_matrices): New argument
	of type struct obstack *.

	* tree-data-ref.c (analyze_subscript_affine_affine): New variable
	scratch_obstack.  Initialize it, pass down, free it.

	* lambda.h (lambda_loop_new): Remove.
	(lambda_matrix_new, lambda_matrix_inverse)
	(lambda_trans_matrix_new, lambda_trans_matrix_inverse): New
	argument of type struct obstack *.

	* lambda-trans.c (lambda_trans_matrix_new): New argument
	lambda_obstack.  Pass it down, use obstack allocation for ret.
	(lambda_trans_matrix_inverse): New argument lambda_obstack.  Pass
	it down.

	* lambda-mat.c (lambda_matrix_get_column)
	(lambda_matrix_project_to_null): Remove.
	(lambda_matrix_new): New argument lambda_obstack.  Use obstack
	allocation for mat.
	(lambda_matrix_inverse_hard, lambda_matrix_inverse): New argument
	lambda_obstack.

	* lambda-code.c (lambda_loop_new): New function.
	(lambda_lattice_new, compute_nest_using_fourier_motzkin)
	(lambda_compute_auxillary_space, lambda_compute_target_space)
	(lambda_loopnest_transform, gcc_loop_to_lambda_loop)
	(lambda_loopnest_to_gcc_loopnest): Pass down lambda_obstack.
	(build_access_matrix): New argument lambda_obstack.  Use obstack
	allocation for am.
	(lambda_compute_step_signs, lambda_compute_access_matrices): New
	argument lambda_obstack.  Pass it down.

From-SVN: r158644
2010-04-22 12:42:15 +00:00
Bernd Schmidt b99279f36b optabs.h (expand_widening_mult): Declare.
* optabs.h (expand_widening_mult): Declare.

From-SVN: r158643
2010-04-22 11:47:52 +00:00
Bernd Schmidt 9193b1b4cc re PR middle-end/29274 (not using mulsidi3)
PR middle-end/29274
	* gcc.target/arm/wmul-1.c: New test.
	* gcc.target/arm/wmul-2.c: New test.

From-SVN: r158642
2010-04-22 11:25:44 +00:00
Richard Guenther b3be269469 re PR tree-optimization/43845 (Segfault when using __attribute__((const)), versions 4.4.3 and 4.6)
2010-04-22  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/43845
	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Properly
	lookup the CALL_EXPR function and arguments.

	* gcc.c-torture/compile/pr43845.c: New testcase.

From-SVN: r158641
2010-04-22 11:19:45 +00:00
Nick Clifton 038eab67cd * config/stormy16/stormy16.c
(xstormy16_asm_output_aligned_common): Handle a NULL decl
        parameter.
        * config/stormy16/stormy16.h: Tidy up formatting.
        (DONT_USE_BUILTIN_SETJMP): Remove definition.
        * config/stormy16/stormy16.c (cbranchsi4): Delete pattern.
        (ineqbranchsi): Delete pattern.
        * config/stormy16/stormy16-lib2-ucmpsi2.c: New file.
        * config/stormy16/stormy16-lib2.c (__ucmpsi2): New function.
        * config/stormy16/t-stormy16 (LIB2FUNCS_EXTRA): Add
        stormy16-lib2-ucmpsi2.c.

From-SVN: r158640
2010-04-22 11:05:12 +00:00
Bernd Schmidt 907deb1a1e ifcvt.c (dead_or_predicable): Use df_simulate_find_defs and df_simulate_find_noclobber_defs as appropriate.
* ifcvt.c (dead_or_predicable): Use df_simulate_find_defs and
	df_simulate_find_noclobber_defs as appropriate.  Keep track of an
	extra set merge_set_noclobber, and use it to relax the final test
	slightly.
	* df.h (df_simulate_find_noclobber_defs): Declare.
	* df-problems.c (df_simulate_find_defs): Don't ignore partial or
	conditional defs.
	(df_simulate_find_noclobber_defs): New function.

From-SVN: r158639
2010-04-22 10:42:21 +00:00
Johannes Singler ed27799786 partition.h (__parallel_partition): Improve scalability by...
2010-04-22  Johannes Singler  <singler@kit.edu>

        * include/parallel/partition.h (__parallel_partition):
        Improve scalability by:
        -introducing new variables __leftold, __rightold, __dist, thus
        -getting rid of omp lock by using atomic operations
        -getting rid of two omp barriers

From-SVN: r158636
2010-04-22 10:14:07 +00:00
Uros Bizjak 6a0447ba7f i386.md: Use {} around multi-line preparation statements.
* config/i386/i386.md: Use {} around multi-line preparation statements.

From-SVN: r158635
2010-04-22 11:35:56 +02:00
Laurynas Biveinis a1e3b3d9f0 2010-04-22 Laurynas Biveinis <laurynas.biveinis@gmail.com>
* c-tree.h (push_init_level, pop_init_level, set_init_index)
	(process_init_element): New argument of type struct obstack *.

	* c-typeck.c (push_init_level, pop_init_level, set_designator)
	(set_init_index, set_init_label, set_nonincremental_init)
	(set_nonincremental_init_from_string, find_init_member)
	(output_init_element, output_pending_init_elements)
	(process_init_element): New argument braced_init_obstack.  Pass it
	down.
	(push_range_stack, add_pending_init): New argument
	braced_init_obstack.  Use obstack allocation.

	* c-parser.c (c_parser_initelt, c_parser_initval): New argument
	braced_init_obstack.  Pass it down.
	(c_parser_braced_init): New variables ret, braced_init_obstack.
	Initialize obstack, pass it down and finally free it.

From-SVN: r158634
2010-04-22 09:34:32 +00:00
Bernd Schmidt 5b58b39b0a re PR middle-end/29274 (not using mulsidi3)
gcc/
	PR middle-end/29274
	* optabs.h (expand_widening_mult): Declare.
	* tree-pass.h (pass_optimize_widening_mul): Declare.
	* tree-ssa-math-opts.c (execute_optimize_widening_mul,
	gate_optimize_widening_mul): New static functions.
	(pass_optimize_widening_mul): New.
	* expr.c (expand_expr_real_2) <case WIDEN_MULT_EXPR>: New
	case.
	<case MULT_EXPR>: Remove support for widening multiplies.
	* tree.def (WIDEN_MULT_EXPR): Tweak comment.
	* cfgexpand.c (expand_debug_expr) <case WIDEN_MULT_EXPR>: Use
	simplify_gen_unary rather than directly building extensions.
	* tree-cfg.c (verify_gimple_assign_binary): Add tests for
	WIDEN_MULT_EXPR.
	* expmed.c (expand_widening_mult): New function.
	* passes.c (init_optimization_passes): Add pass_optimize_widening_mul.

gcc/testsuite/
	PR middle-end/29274
	* gcc.target/i386/wmul-1.c: New test.
	* gcc.target/i386/wmul-2.c: New test.
	* gcc.target/bfin/wmul-1.c: New test.
	* gcc.target/bfin/wmul-2.c: New test.

From-SVN: r158633
2010-04-22 09:30:27 +00:00
Richard Guenther 92375a2020 re PR fortran/43829 (Scalarization of reductions)
2010-04-22  Richard Guenther  <rguenther@suse.de>

	PR fortran/43829
	* resolve.c (gfc_resolve_index): Wrap around ...
	(gfc_resolve_index_1): ... this.  Add parameter to allow
	any integer kind index type.
	(resolve_array_ref): Allow any integer kind for the start
	index of an array ref.

	* gfortran.dg/vector_subscript_6.f90: New testcase.
	* gfortran.dg/assign_10.f90: Adjust.

From-SVN: r158632
2010-04-22 08:34:41 +00:00
Basile Starynkevitch c334c130bd gcc_update: Sets the locale to C.
2010-04-22  Basile Starynkevitch  <basile@starynkevitch.net>

	* gcc_update: Sets the locale to C.

From-SVN: r158629
2010-04-22 06:15:07 +00:00
GCC Administrator 1cdb7d1612 Daily bump.
From-SVN: r158628
2010-04-22 00:21:31 +00:00
Jonathan Wakely 18246cedb5 faq.xml: Link to manual.
2010-04-22  Jonathan Wakely  <jwakely.gcc@gmail.com>

	* doc/xml/faq.xml: Link to manual.
	* doc/xml/manual/using.xml: Expand dynamic libraries section.
	* doc/xml/manual/strings.xml: Mention shrink_to_fit() member.
	* doc/xml/manual/prerequisites.xml: Link to doxygen requirements.
	* doc/xml/manual/appendix_contributing.xml: Update Bash version.
	* doc/html/*: Regenerate.

From-SVN: r158624
2010-04-22 00:33:44 +01:00
Jan Hubicka bc58d7e1bd timevar.def (TV_WHOPR_WPA_FIXUP): Remove.
* timevar.def (TV_WHOPR_WPA_FIXUP): Remove.
	* lto-section-in.c (lto_section_name): Remove wpa_fixup.
	* lto-wpa-fixup.c: Remove.
	* Makefile.in (lto-wpa-fixup.o): Remove.
	* passes.c (init_optimization_passes): Remove pass_ipa_lto_wpa_fixup.
	(execute_all_ipa_transforms): Set cgraph_state to CGRAPH_STATE_IPA_SSA.
	* lto-streamer.c (lto_get_section_name): Remove wpa_fixup section.
	
	* lto.c (lto_fixup_tree): Do not call wpa fixup.
	(materialize_cgraph): Likewise.

From-SVN: r158622
2010-04-21 21:58:50 +00:00
Jakub Jelinek 2b65cd83e9 re PR fortran/43836 (ice with -fexceptions and -fopenmp)
PR fortran/43836
	* f95-lang.c (gfc_define_builtin): Set TREE_NOTHROW on
	the decl.

	* gfortran.dg/gomp/pr43836.f90: New test.

From-SVN: r158619
2010-04-21 23:20:07 +02:00
Jan Hubicka e792884f75 tree-pass.h (ipa_opt_pass_d): Rename function_read_summary...
* tree-pass.h (ipa_opt_pass_d): Rename function_read_summary;
	add write_optimization_summary, read_optimization_summary.
	(ipa_write_summaries_of_cgraph_node_set): Remove.
	(ipa_write_optimization_summaries): Declare.
	(ipa_read_optimization_summaries): Declare.
	* ipa-cp.c (pass_ipa_cp): Update.
	* ipa-reference.c (pass_ipa_reference): Update.
	* ipa-pure-const.c (pass_ipa_pure_const): Update.
	* lto-streamer-out.c (pass_ipa_lto_gimple, pass_ipa_lto_finish):
	Update.
	* ipa-inline.c (pass_ipa_inline): Update.
	* ipa.c (pass_ipa_whole_program): Update.
	* lto-wpa-fixup.c (pass_ipa_lto_wpa_fixup): Update.
	* passes.c (ipa_write_summaries_1): Do not test wpa.
	(ipa_write_optimization_summaries_1): New.
	(ipa_write_optimization_summaries): New.
	(ipa_read_summaries): Do not test ltrans.
	(ipa_read_optimization_summaries_1): New.
	(ipa_read_optimization_summaries): New.

	* lto.c (lto_wpa_write_files): Update.
	(read_cgraph_and_symbols): Be more verbose.
	(materialize_cgraph): Likewise.
	(do_whole_program_analysis): Likewise.

From-SVN: r158616
2010-04-21 17:44:03 +00:00
Jan Hubicka ecd03d10cc lto-cgraph.c (lto_output_node): Do not output comdat groups for boundary nodes.
* lto-cgraph.c (lto_output_node): Do not output comdat groups
	for boundary nodes.
	(output_cgraph): Do not arrange comdat groups for boundary nodes.

From-SVN: r158615
2010-04-21 17:42:46 +00:00
Jakub Jelinek 71a810c300 re PR debug/40040 (gfortran invalid DW_AT_location for overridable variables)
PR debug/40040
	* dwarf2out.c (add_name_and_src_coords_attributes): Add
	DW_AT_{,MIPS_}linkage_name even for Fortran decls.

From-SVN: r158612
2010-04-21 18:48:41 +02:00
Andrew Haley 6cf3abb170 re PR libgcj/40860 (regressions in libjava testsuite on arm-linux)
2010-04-19  Andrew Haley  <aph@redhat.com>

	PR libgcj/40860
	* configure.ac: Handle --no-merge-exidx-entries.

From-SVN: r158611
2010-04-21 16:34:01 +00:00
Jan Hubicka dd6d1ad715 * ipa-prop.c (ipa_edge_removal_hook): Check for bounds.
From-SVN: r158610
2010-04-21 14:41:50 +00:00
Jan Hubicka c9945504c9 lto.c (globalize_cross_file_statics): When function has address taken, it needs to be public.
* lto.c (globalize_cross_file_statics): When function has address taken,
	it needs to be public.
	* varpool.c (decide_is_variable_needed): Variable is always needed
	during ltrans.

From-SVN: r158609
2010-04-21 14:41:03 +00:00
Jan Hubicka e7cfce7152 * opts.c (decode_options): Enable pure-const pass for whopr.
From-SVN: r158608
2010-04-21 14:39:33 +00:00
Jan Hubicka 0115e6c79b cgraph.c (dump_cgraph_node): Dump also assembler name.
* cgraph.c (dump_cgraph_node): Dump also assembler name.
	* ipa-inline.c (cgraph_decide_inlining_of_small_functions): Do not ice
	at WPA dumping.
	(cgraph_decide_inlining): Do not expect callee to be removed in all
	cases.

From-SVN: r158607
2010-04-21 14:38:38 +00:00
Eric B. Weddington 96c2a0d6ff Add missing comma.
From-SVN: r158604
2010-04-21 14:14:55 +00:00
Uros Bizjak 656ef6bb35 i386.md (x86_shrd): Add athlon_decode and amdfam10_decode attributes.
* config/i386/i386.md (x86_shrd): Add athlon_decode and
	amdfam10_decode attributes.

From-SVN: r158596
2010-04-21 15:27:02 +02:00
Jakub Jelinek 78db7d92ce re PR middle-end/43570 (OpenMP: Invalid read of size 1 (libgomp.fortran/vla6.f90))
PR middle-end/43570
	* omp-low.c (scan_sharing_clauses): Don't scan_omp_op
	OMP_CLAUSE_DECL for OMP_CLAUSE_COPYPRIVATE.
	(lower_copyprivate_clauses): Use private var in outer
	context instead of original var.  Make sure the types
	are correct for VLAs.

	* testsuite/libgomp.fortran/vla8.f90: New test.

From-SVN: r158594
2010-04-21 13:57:42 +02:00
Richard Guenther 11152c9536 tree-ssa-structalias.c (do_ds_constraint): Avoid escaping to non-pointer objects.
2010-04-21  Richard Guenther  <rguenther@suse.de>

	* tree-ssa-structalias.c (do_ds_constraint): Avoid escaping
	to non-pointer objects.

	* gcc.dg/ipa/ipa-pta-11.c: Adjust.

From-SVN: r158591
2010-04-21 09:37:22 +00:00
Jakub Jelinek 0f2f44c007 dwarf2out.c (add_var_loc_to_decl): Add LABEL argument.
* dwarf2out.c (add_var_loc_to_decl): Add LABEL argument.  Drop
	last chain entry if it starts with the still current label.
	(add_location_or_const_value_attribute): Check that
	loc_list->first->next is NULL instead of comparing ->first with
	->last.
	(dwarf2out_var_location): Pass last_label resp. last_postcall_label
	to add_var_loc_to_decl.

From-SVN: r158590
2010-04-21 09:05:00 +02:00
Jakub Jelinek 8f65940dd1 dwarf2out.c (output_call_frame_info): For dw_cie_version >= 4 add also address size and segment size fields into CIE...
* dwarf2out.c (output_call_frame_info): For dw_cie_version
	>= 4 add also address size and segment size fields into CIE
	header.

	* unwind-dw2.c (extract_cie_info): Handle CIE version 4, as
	long as address size is the same as sizeof (void *) and
	segment size is 0.
	* unwind-dw2-fde.c (get_cie_encoding): Likewise.  If
	address size or segment size is unexpected, return DW_EH_PE_omit.
	(classify_object_over_fdes): If get_cie_encoding returned
	DW_EH_PE_omit, return -1.
	(init_object): If classify_object_over_fdes returned -1,
	pretend there were no FDEs at all.

From-SVN: r158589
2010-04-21 08:57:37 +02:00
Kaveh R. Ghazi d64427ff33 builtin-cproj-3.c: New.
* gcc.dg/torture/builtin-cproj-3.c: New.

From-SVN: r158588
2010-04-21 06:26:22 +00:00
Uros Bizjak 2d2d5a918a i386.md (bswap<mode>2): Macroize expander from bswap{si,di}2 using SWI48 mode iterator.
* config/i386/i386.md (bswap<mode>2): Macroize expander from
	bswap{si,di}2 using SWI48 mode iterator.
	(*bswap<mode>2_movbe): Macroize insn from *bswap{si,di}_movbe using
	SWI48 mode iterator.  Set type attribute of bswap insn to bitmanip,
	set modrm attribute of bswap insn to 0 and remove length attribute.
	(*bswap<mode>2_1): Macroize insn from *bswap{si,di}_1 using SWI48 mode
	iterator.  Set type attribute to bitmanip, set modrm attribute to 0,
	set mode attribute to <MODE> and remove length attribute.

From-SVN: r158587
2010-04-21 08:24:30 +02:00