Commit Graph

109890 Commits

Author SHA1 Message Date
Georg-Johann Lay
db297e2084 re PR target/44643 ([avr] ICE in c-typeck.c)
PR target/44643
	* config/avr/avr.c (avr_insert_attributes): Use TYPE_READONLY
	instead of TREE_READONLY.

From-SVN: r175809
2011-07-04 12:28:02 +00:00
Georg-Johann Lay
f451d14dcc extend.texi (AVR Built-in Functions): Update documentation of __builtin_avr_fmul*.
* doc/extend.texi (AVR Built-in Functions): Update documentation
	of __builtin_avr_fmul*.
	* config/avr/avr.c (avr_init_builtins): Don't depend on
	AVR_HAVE_MUL.
	* config/avr/avr-c.c (avr_cpu_cpp_builtins): Ditto.
	* config/avr/avr.md (fmul): Rename to fmul_insn.
	(fmuls): Rename to fmuls_insn.
	(fmulsu): Rename to fmulsu_insn.
	(fmul,fmuls,fmulsu): New expander.
	(*fmul.call,*fmuls.call,*fmulsu.call): New Insn.
	* config/avr/t-avr (LIB1ASMFUNCS): Add _fmul, _fmuls, _fmulsu.
	* config/avr/libgcc.S (__fmul): New function.
	(__fmuls): New function.
	(__fmulsu,__fmulsu_exit): New function.

From-SVN: r175807
2011-07-04 12:20:35 +00:00
Richard Guenther
30f1e6dea0 re PR tree-optimization/49615 (internal compiler error: verify_stmts failed / LHS in noreturn call with pointer-to-never-returning-member)
2011-07-04  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/49615
	* tree-cfgcleanup.c (split_bbs_on_noreturn_calls): Fix
	basic-block index check.

	* g++.dg/torture/pr49615.C: New testcase.

From-SVN: r175803
2011-07-04 12:06:17 +00:00
Georg-Johann Lay
6dab9931f8 t-avr (intfuncs16): Add _clrsbXX2.
libgcc/
	* config/avr/t-avr (intfuncs16): Add _clrsbXX2.

gcc/
	* longlong.h (count_leading_zeros, count_trailing_zeros,
	COUNT_LEADING_ZEROS_0): Define for target avr if W_TYPE_SIZE is 16
	resp. 64.

From-SVN: r175800
2011-07-04 10:02:34 +00:00
Nicola Pero
f027ee7cb0 In gcc/objc/: 2011-07-04 Nicola Pero <nicola.pero@meta-innovation.com>
In gcc/objc/:
2011-07-04  Nicola Pero  <nicola.pero@meta-innovation.com>

	Refactored encoding code into objc-encoding.h and objc-encoding.c.
	* objc-act.c (util_obstack, util_firstobj, encode_type_qualifiers,
	encode_type, generating_instance_variables, objc_method_parm_type,
	objc_encoded_type_size, encode_method_prototype,
	objc_build_encode_expr, pointee_is_readonly, encode_pointer,
	encode_array, encode_vector, encode_aggregate_fields,
	encode_aggregate_within, encode_next_bitfield,
	encode_gnu_bitfield, encode_field_decl,
	objc_v2_encode_property_attr): Moved to objc-encoding.h and
	objc-encoding.c.  No change in the actual code.
	Include objc-encoding.h.
	(objc_init): Added TODO.
	(objc_build_property_setter_name): Made non-static so it can be
	called from objc-encoding.c.
	* objc-act.h (OBJC_ENCODE_INLINE_DEFS,
	OBJC_ENCODE_DONT_INLINE_DEFS): Moved to objc-encoding.h.
	* objc-runtime-shared-support.h (objc_v2_encode_property_attr,
	encode_method_prototype, encode_field_decl,
	generating_instance_variables): Moved to objc-encoding.h.	
	(objc_build_property_setter_name): Declare.
	* objc-encoding.c: New.
	* objc-encoding.h: New.
	* objc-gnu-runtime-abi-01.c: Include objc-encoding.h.
	* objc-next-runtime-abi-01.c: Likewise.
	* objc-next-runtime-abi-02.c: Likewise.	
	* objc-runtime-shared-support.c: Likewise.
	* Make-lang.in (OBJC_OBJS): Added objc-encoding.o.
	(objc/objc-lang.o): Reordered dependencies.
	(objc/objc-runtime-shared-support.o): Reordered dependencies.
	Added dependencies on objc-encoding.h and on $(GGC_H),
	$(DIAGNOSTIC_CORE_H), $(FLAGS_H) and input.h.
	(objc/objc-gnu-runtime-abi-01.o): Likewise.
	(objc/objc-next-runtime-abi-01.o): Likewise.
	(objc/objc-next-runtime-abi-02.o): Likewise.
	(objc/objc-act.o): Reordered dependencies.  Added dependency on
	objc-encoding.h.
	(objc/objc-encoding.o): New rule.

	* objc-encoding.c (encode_type): Use "%<%T%>" format when printing
	warning "unknown type %<%T%> found during Objective-C encoding"
	instead of using gen_type_name.
	
In gcc/objcp/:
2011-07-04  Nicola Pero  <nicola.pero@meta-innovation.com>

	* Make-lang.in (OBJCXX_OBJS): Added objc-encoding.o.
	(objcp/objcp-lang.o): Reordered dependencies.  Depend on GGC_H.
	(objcp/objcp-decl.o): Reordered dependencies.
	(objcp/objc-runtime-shared-support.o): Reordered dependencies.
	Updated them to be identical to the corresponding new objc/ ones,
	with the addition of objcp-decl.h.
	(objcp/objc-runtime-shared-support.o): Likewise.
	(objcp/objc-gnu-runtime-abi-01.o): Likewise.
	(objcp/objc-next-runtime-abi-01.o): Likewise.
	(objcp/objc-next-runtime-abi-02.o): Likewise.
	(objcp/objcp-act.o): Reordered dependencies.  Added dependency on
	objc-encoding.h.
	(objcp/objc-encoding.o): New rule.

From-SVN: r175797
2011-07-04 08:02:50 +00:00
GCC Administrator
7e6fd113c9 Daily bump.
From-SVN: r175793
2011-07-04 00:19:16 +00:00
Janne Blomqvist
5e2fda444f PR 49296 Fix wrong PR number in ChangeLog
From-SVN: r175789
2011-07-03 20:37:30 +03:00
Ira Rosen
b5066d8b10 re PR tree-optimization/49610 (Segfault with -ftree-vectorize (or -O3))
PR tree-optimization/49610
        * tree-vect-loop.c (vect_is_slp_reduction): Check that DEF_STMT has
        a basic block.

From-SVN: r175786
2011-07-03 10:14:55 +00:00
GCC Administrator
a23d1a65ef Daily bump.
From-SVN: r175785
2011-07-03 00:17:52 +00:00
Eric Botcazou
bc712852cd tree.h (TYPE_ARTIFICIAL): New flag.
* tree.h (TYPE_ARTIFICIAL): New flag.
	* dwarf2out.c (modified_type_die): Add a DW_AT_artificial attribute to
	the DIE of the type if it is artificial.
	(gen_array_type_die): Likewise.
	(gen_enumeration_type_die): Likewise.
	(gen_struct_or_union_type_die): Likewise.
	* lto-streamer-in.c (unpack_ts_base_value_fields): Use TYPE_ARTIFICIAL.
	* lto-streamer-out.c (pack_ts_base_value_fields): Likewise.
ada/
	* gcc-interface/utils.c (record_builtin_type): Set TYPE_ARTIFICIAL on
	the type according to the ARTIFICIAL_P parameter.
	(create_type_decl): Likewise.
	(create_type_stub_decl): Set TYPE_ARTIFICIAL on the type to 1.

Co-Authored-By: Nicolas Setton <setton@adacore.com>
Co-Authored-By: Olivier Hainque <hainque@adacore.com>

From-SVN: r175781
2011-07-02 18:13:47 +00:00
Janus Weil
49860194e2 re PR fortran/49562 ([OOP] assigning value to type-bound function)
2011-07-02  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/49562
	* expr.c (gfc_check_vardef_context): Handle type-bound procedures.


2011-07-02  Janus Weil  <janus@gcc.gnu.org>

	PR fortran/49562
	* gfortran.dg/typebound_proc_23.f90: New.

From-SVN: r175779
2011-07-02 13:08:41 +02:00
GCC Administrator
fe8ac8e43d Daily bump.
From-SVN: r175775
2011-07-02 00:17:54 +00:00
Jonathan Wakely
e2ab8a0f88 re PR c++/49605 (-Wdelete-non-virtual-dtor is not picky enough)
2011-07-01  Jonathan Wakely  <jwakely.gcc@gmail.com>

	PR c++/49605
	* init.c (build_delete): Only warn for sfk_deleting_destructor.

From-SVN: r175771
2011-07-01 23:24:42 +01:00
Eric Botcazou
2eb2238981 Make-lang.in (gnat1): Prepend '+' to the command.
* gcc-interface/Make-lang.in (gnat1): Prepend '+' to the command.
	(gnatbind): Likewise.

From-SVN: r175769
2011-07-01 21:43:59 +00:00
Jakub Jelinek
8b1bdcc523 tree-object-size.c (pass_through_call): Handle BUILT_IN_ASSUME_ALIGNED.
* tree-object-size.c (pass_through_call): Handle
	BUILT_IN_ASSUME_ALIGNED.

From-SVN: r175768
2011-07-01 23:15:05 +02:00
Jakub Jelinek
761da1356b Make-lang.in (cp/decl.o): Depend on pointer-set.h.
* Make-lang.in (cp/decl.o): Depend on pointer-set.h.
	(cp/class.o): Likewise.
	(cp/error.o): Likewise.
	(cp/name-lookup.o): Likewise.
	(cp/decl2.o): Likewise.  Don't depend on $(POINTER_SET_H).

From-SVN: r175767
2011-07-01 23:14:14 +02:00
Jason Merrill
948587e798 re PR c++/48261 (internal compiler error: in lookup_template_function, at cp/pt.c:6227)
PR c++/48261
	* pt.c (lookup_template_function): Handle non-function.

From-SVN: r175766
2011-07-01 16:24:38 -04:00
Jason Merrill
d816a3ba71 re PR c++/48593 (Wrong return type when applying address operator to inherited, template dependend member, using a typedef)
PR c++/48593
	* pt.c (tsubst_qualified_id): Check PTRMEM_OK_P.
	* tree.c (build_qualified_name): Set PTRMEM_OK_P.
	* semantics.c (finish_parenthesized_expr): Clear PTRMEM_OK_P on
	SCOPE_REF, too.
	* cp-tree.h (PTRMEM_OK_P): Apply to SCOPE_REF, too.
	(QUALIFIED_NAME_IS_TEMPLATE): Switch to lang flag 1.

From-SVN: r175765
2011-07-01 16:24:25 -04:00
Jason Merrill
a771bf1cf6 re PR c++/48883 (?: ternary operator fails in certain contexts - link error)
PR c++/48883
	PR c++/49609
	* pt.c (resolve_nondeduced_context): Call mark_used.

From-SVN: r175764
2011-07-01 16:24:08 -04:00
Joel Brobecker
985b34c77a Darwin has case-insensitive filesystems
HFS+, the FS on Darwin, is case insensitive. So this patch adjusts
filename_cmp.c to ignore the casing when comparing filenames on Darwin.

include/ChangeLog:

        * filenames.h (HAVE_CASE_INSENSITIVE_FILE_SYSTEM): Define
        on Darwin, as well as on the systems that use a DOS-like
        filesystem.

libiberty/ChangeLog:

        * filename_cmp.c (filename_cmp, filename_ncmp): Add handling of
        HAVE_CASE_INSENSITIVE_FILE_SYSTEM.

From-SVN: r175762
2011-07-01 17:51:05 +00:00
Jan Kratochvil
cb0ad10428 re PR debug/49408 (member function template id not matching linkage name)
libiberty/
	PR debug/49408
	* cp-demangle.c (d_print_comp): Suppress argument list for function
	references by the '&' unary operator.  Keep also already processed
	variant without the argument list.  Suppress argument list types for
	function call used in an expression.
	* testsuite/demangle-expected: Fix excessive argument list types in
	`test for typed function in decltype'.  New testcase for no argument
	list types printed.  3 new testcases for function references by the
	'&' unary operator..

From-SVN: r175761
2011-07-01 17:16:44 +00:00
Martin Jambor
06e88d7346 tree-sra.c (tree_non_mode_aligned_mem_p): Also ignore MEM_REFs.
2011-07-01  Martin Jambor  <mjambor@suse.cz>

	* tree-sra.c (tree_non_mode_aligned_mem_p): Also ignore MEM_REFs.

From-SVN: r175760
2011-07-01 17:46:17 +02:00
Jason Merrill
a174e38c09 re PR c++/49085 (Crash with SIGSEGV during compilation.)
PR c++/49085
	* semantics.c (finish_offsetof): Complain about incomplete type.

From-SVN: r175758
2011-07-01 09:36:17 -04:00
H.J. Lu
6bbec3e156 Use proper mode for stack save area.
2011-07-01  H.J. Lu  <hongjiu.lu@intel.com>

	PR middle-end/48016
	* explow.c (update_nonlocal_goto_save_area): Use proper mode
	for stack save area.
	* function.c (expand_function_start): Likewise.

From-SVN: r175756
2011-07-01 05:57:11 -07:00
Rainer Orth
e35fceb583 config-list.mk (LIST): Append OPT-enable-obsolete to alpha-dec-osf5.1, mips-sgi-irix6.5.
* config-list.mk (LIST): Append OPT-enable-obsolete to
	alpha-dec-osf5.1, mips-sgi-irix6.5.

From-SVN: r175754
2011-07-01 11:27:00 +00:00
Richard Guenther
e8fdf1cd90 re PR middle-end/49596 (FAIL: gcc.dg/torture/pr43879_1.c)
2011-07-01  Richard Guenther  <rguenther@suse.de>

	PR middle-end/49596
	* cgraph.h (varpool_all_refs_explicit_p): Not analyzed nodes
	may have unknown refs.

From-SVN: r175753
2011-07-01 11:13:13 +00:00
Kai Tietz
80d3dd383a tree-ssa-forwprop.c (simplify_bitwise_binary): Fix typo.
2011-07-01  Kai Tietz  <ktietz@redhat.com>

        * tree-ssa-forwprop.c (simplify_bitwise_binary): Fix typo.

2011-07-01  Kai Tietz  <ktietz@redhat.com>

        * gcc.dg/tree-ssa/bitwise-sink.c: New test.

From-SVN: r175752
2011-07-01 12:00:25 +02:00
Rainer Orth
179fc656fa config.gcc: Obsolete alpha*-dec-osf5.1, mips-sgi-irix6.5.
* config.gcc: Obsolete alpha*-dec-osf5.1, mips-sgi-irix6.5.
	* doc/install.texi (Specific, alpha*-dec-osf5.1): Document it.
	(Specific, mips-sgi-irix6): Likewise.

From-SVN: r175751
2011-07-01 09:25:29 +00:00
Rainer Orth
14a393a3fb re PR libmudflap/49549 (Use of --noinhibit-exec is unportable)
libmudflap:
	PR libmudflap/49549
	* testsuite/lib/libmudflap.exp (load_gcc_lib): Load
	target-supports.exp.
	* testsuite/libmudflap.cth/cthfrags.exp: Only pass
	--noinhibit-exec to GNU ld.

	gcc:
	PR libmudflap/49549
	* doc/sourcebuild.texi (Effective-Target Keywords): Document gld.

	gcc/testsuite:
	PR libmudflap/49549
	* lib/target-supports.exp (check_effective_target_gld): New proc.

From-SVN: r175749
2011-07-01 08:59:20 +00:00
Jakub Jelinek
3aecd443da tree-pretty-print.c (dump_generic_code): Print [idx]= and [idx1 ...
* tree-pretty-print.c (dump_generic_code) <case CONSTRUCTOR>: Print
	[idx]= and [idx1 ... idx2]= before initializers if needed for
	array initializers.

From-SVN: r175748
2011-07-01 10:21:09 +02:00
Chen Liqin
7474f71976 config.gcc (score-*-elf): Remove score7.o.
2011-07-01  Chen Liqin  <liqin.gcc@gmail.com>

        * config.gcc (score-*-elf): Remove score7.o.
        * config/score/t-score-elf: Likewise.
        * config/score/score.c: Merge score7 to score.c and remove forwarding functions.
        * config/score/score7.c: Deleted.
        * config/score/score7.h: Deleted.

From-SVN: r175747
2011-07-01 07:51:38 +00:00
Richard Guenther
ab70d825c6 re PR middle-end/49603 (177.mesa in SPEC CPU 2000 failed to build)
2011-07-01  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/49603
	* tree-vect-stmts.c (vectorizable_load): Remove unnecessary
	assert.

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

From-SVN: r175746
2011-07-01 06:56:18 +00:00
Jason Merrill
59198f271e correct changelog
From-SVN: r175744
2011-06-30 20:54:27 -04:00
Jason Merrill
17d208b54e re PR c++/49387 (t.cxx:140: error: too many initializers for ‘const __class_type_info_pseudo’)
PR c++/49387
	* rtti.c (get_pseudo_ti_index): Call complete_type.

From-SVN: r175743
2011-06-30 20:53:10 -04:00
GCC Administrator
0bd96aad7a Daily bump.
From-SVN: r175742
2011-07-01 00:17:43 +00:00
Jason Merrill
e2c17be05b re PR c++/49569 (-std=gnu++0x causes segmentation fault)
PR c++/49569
	* method.c (implicitly_declare_fn): Set DECL_PARM_LEVEL and
	DECL_PARM_INDEX on rhs parm.

From-SVN: r175738
2011-06-30 20:03:58 -04:00
Jason Merrill
98ff399662 * pt.c (iterative_hash_template_arg): Use cp_tree_operand_length.
From-SVN: r175737
2011-06-30 20:03:43 -04:00
Jason Merrill
b9d6b0153c re PR c++/49355 (new T({""}) crashes G++ when struct T { std::string foobar };)
PR c++/49355
	* tree.c (stabilize_init): Handle aggregate initialization.

From-SVN: r175736
2011-06-30 20:03:34 -04:00
Martin Jambor
1ac93f1083 tree-sra.c (struct access): Rename total_scalarization to grp_total_scalarization
2011-06-30  Martin Jambor  <mjambor@suse.cz>

	* tree-sra.c (struct access): Rename total_scalarization to
	grp_total_scalarization
	(completely_scalarize_var): New function.
	(sort_and_splice_var_accesses): Set total_scalarization in the
	representative access.
	(analyze_access_subtree): Propagate total scalarization accross the
	tree, no holes in totally scalarized trees, simplify coverage
	computation.
	(analyze_all_variable_accesses): Call completely_scalarize_var instead
	of completely_scalarize_record.

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

From-SVN: r175733
2011-06-30 23:54:29 +02:00
Jason Merrill
ca1085f03c re PR c++/48481 (C++ overloading memory hog)
PR c++/48481
	* name-lookup.c (struct arg_lookup): Add fn_set.
	(add_function): Check it.
	(lookup_arg_dependent_1): Initialize it.

From-SVN: r175732
2011-06-30 17:10:03 -04:00
Jason Merrill
4757b0716f * g++.dg/cpp0x/named.C: Test subobject of xvalue.
From-SVN: r175731
2011-06-30 17:09:55 -04:00
Richard Henderson
97f309c3e2 i386: Always use TARGET_DEEP_BRANCH_PREDICTION.
While it could be possible to output_set_got such that we can
individually annotate the instructions, it's simpler to simply
admit that all processors currently being manufactured do want
deep branch prediction.  At which point all of the complication
simply goes away.

        * config/i386/i386.h (X86_TUNE_DEEP_BRANCH_PREDICTION): Remove.
        (TARGET_DEEP_BRANCH_PREDICTION): Remove.
        * config/i386/i386.c: Don't include dwarf2out.h.
        (initial_ix86_tune_features): Remove X86_TUNE_DEEP_BRANCH_PREDICTION.
        (output_set_got): Don't test TARGET_DEEP_BRANCH_PREDICTION, delete
        all code dead thereafter.  Don't do dwarf2out_flush_queued_reg_saves.
        (ix86_expand_prologue): Set REG_CFA_FLUSH_QUEUE on set_got insn.
        (machopic_output_stub): Don't test TARGET_DEEP_BRANCH_PREDICTION.

From-SVN: r175730
2011-06-30 14:08:54 -07:00
Richard Henderson
ef284364b4 dwarf2out: Add REG_CFA_FLUSH_QUEUE.
* reg-notes.def (REG_CFA_FLUSH_QUEUE): New.
        * dwarf2out.c (dwarf2out_frame_debug): Handle it.
        * final.c (final_scan_insn): Look for it, and invoke
        dwarf2out_frame_debug before the insn if found.

From-SVN: r175729
2011-06-30 14:04:23 -07:00
Richard Henderson
c8412f9770 dwarf2out: Handle pc_rtx as return column in REG_CFA_OFFSET too.
* dwarf2out.c (dwarf2out_frame_debug_cfa_offset): Allow PC_RTX
        as a source, and interpret that as DWARF_FRAME_RETURN_COLUMN.

From-SVN: r175728
2011-06-30 14:01:06 -07:00
Richard Henderson
e3f903d88a dwarf2out: Convert regs_saved_in_regs to VEC.
* dwarf2out.c (struct reg_saved_in_data): Provide a typedef.
        Define a vector of this type.
        (regs_saved_in_regs): Use a VEC.
        (num_regs_saved_in_regs): Remove.
        (compare_reg_or_pc): New.
        (record_reg_saved_in_reg): Split out from...
        (dwarf2out_flush_queued_reg_saves): ... here.
        (clobbers_queued_reg_save): Update for VEC.
        (reg_saved_in): Likewise.
        (dwarf2out_frame_debug_init): Likewise.
        (dwarf2out_reg_save_reg): Use record_reg_saved_in_reg.
        (dwarf2out_frame_debug_cfa_register): Likewise.

From-SVN: r175727
2011-06-30 13:59:41 -07:00
Eric Botcazou
e2c9010ae8 re PR tree-optimization/49572 (gcc.dg/tree-ssa/20030709-2.c scan-tree-dump-times cddce2 ".rtmem" 0)
PR tree-optimization/49572
	* tree-ssa-dom.c (initialize_hash_element) <GIMPLE_SINGLE_RHS>: Use the
	type of the RHS instead of that of the LHS for the expression type.

From-SVN: r175721
2011-06-30 19:32:23 +00:00
Eric Botcazou
dbb07bbc1b df-scan.c (df_get_entry_block_def_set): Use INCOMING_REGNO macro unconditionally.
* df-scan.c (df_get_entry_block_def_set): Use INCOMING_REGNO macro
	unconditionally.

From-SVN: r175718
2011-06-30 17:56:50 +00:00
Richard Guenther
1565af0830 opts.c (finish_options): Do not disable IPA-PTA during ltrans.
2011-06-30  Richard Guenther  <rguenther@suse.de>

	* opts.c (finish_options): Do not disable IPA-PTA during ltrans.
	* tree-ssa-structalias.c (create_variable_info_for): Do not
	add initial constraints for non-var-decls.  Properly handle
	globals in other ltrans partitions.
	(intra_create_variable_infos): Manually create constraints for
	the fake no-alias parameter.
	(ipa_pta_execute): Dump the cgraph, handle ltrans partitions properly
	and assert there are no clones.

From-SVN: r175707
2011-06-30 14:03:25 +00:00
Richard Guenther
42373e0b05 re PR tree-optimization/46787 (Does not vectorize loop with load from scalar variable)
2011-06-30  Richard Guenther  <rguenther@suse.de>

	PR tree-optimization/46787
	* tree-data-ref.c (dr_address_invariant_p): Remove.
	(find_data_references_in_stmt): Invariant accesses are ok now.
	* tree-vect-stmts.c (vectorizable_load): Handle invariant
	loads.
	* tree-vect-data-refs.c (vect_analyze_data_ref_access): Allow
	invariant loads.

	* gcc.dg/vect/vect-121.c: New testcase.

From-SVN: r175704
2011-06-30 13:27:43 +00:00
Martin Jambor
7aa62ea1f8 re PR tree-optimization/49094 (ARM aligned(1) attribute is sometimes dropped)
2011-06-30  Martin Jambor  <mjambor@suse.cz>

	PR tree-optimization/49094
	* tree-sra.c (tree_non_mode_aligned_mem_p): New function.
	(build_accesses_from_assign): Use it.

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

From-SVN: r175703
2011-06-30 15:24:19 +02:00