Commit Graph

78954 Commits

Author SHA1 Message Date
Benjamin Kosnik bdbccd1c53 extc++.h: Guard include files that assume iconv support is present from precompilation...
2007-02-06  Benjamin Kosnik  <bkoz@redhat.com>
            Marco Trudel  <mtrudel@gmx.ch>

	* include/precompiled/extc++.h: Guard include files that assume
	iconv support is present from precompilation via
	_GLIBCXX_HAVE_ICONV.


Co-Authored-By: Marco Trudel <mtrudel@gmx.ch>

From-SVN: r121655
2007-02-06 17:59:09 +00:00
Roger Sayle c1fdb0821a ChangeLog: Doh!
* ChangeLog: Doh! Missed in the last commit.

From-SVN: r121654
2007-02-06 17:35:22 +00:00
Roger Sayle 565ef4bafb rs6000.md (popcount<mode>2): Rewrite.
* config/rs6000/rs6000.md (popcount<mode>2): Rewrite.
	(parity<mode>2): New define_expand using rs6000_emit_parity.
	* config/rs6000/rs6000.c (rs6000_emit_popcount,
	rs6000_emit_parity): New functions.
	* config/rs6000/rs6000-protos.h (rs6000_emit_popcount,
	rs6000_emit_parity): Prototype here.

	* gcc.target/powerpc/popcount-1.c: New test case.
	* gcc.target/powerpc/parity-1.c: Likewise.

From-SVN: r121653
2007-02-06 17:29:44 +00:00
Ian Lance Taylor 7e0c3f57e0 lower-subreg.c (simple_move_operand): Reject CONST.
* lower-subreg.c (simple_move_operand): Reject CONST.
	(resolve_clobber): Call validate_change rather than directly
	assigning to XEXP (pat, 0).

From-SVN: r121652
2007-02-06 17:19:27 +00:00
Andrew Haley 44fb8659c3 makemake.tcl (emit_bc_rule): Set the source filename.
2007-02-06  Andrew Haley  <aph@redhat.com>

        * scripts/makemake.tcl (emit_bc_rule): Set the source filename.
        * sources.am: Rebuild.

From-SVN: r121651
2007-02-06 17:17:03 +00:00
Paolo Bonzini 15814ba0a2 Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
2006-02-06  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.in (tree-ssa-loop-ivopts.o): Add pointer-set.h dependency.
	(tree-ssa-reassoc.o): Add pointer-set.h dependency.
	(tree-cfg.o): Remove hashtab.h dependency.

	* tree-ssa-loop-ivopts.c: Include pointer-set.h.
	(struct ivopts_data): Change niters to pointer_map_t.
	(struct nfe_cache_elt, nfe_hash, nfe_eq): Delete.
	(niter_for_exit): Create pointer_map on demand.  Change for
	pointer_map API.
	(tree_ssa_iv_optimize_init): Initialize data->niters to NULL.
	(free_loop_data): Destroy data->niters if created and reset field.
	(tree_ssa_iv_optimize_finalize): Don't delete data->niters here.
	(tree_ssa_iv_optimize_loop): Check for presence of stale data.

	* tree-ssa-reassoc.c: Include pointer-set.h.
	(bb_rank): Change to long *.
	(operand_rank): Change to pointer_map_t.
	(find_operand_rank): Return long, -1 if not found.  Declare as inline.
	(insert_operand_rank): Accept long.
	(operand_entry_hash, operand_entry_eq): Remove.
	(get_rank): Return long.  Adjust for changes above.
	(init_reassoc): Change rank type to long.  Adjust creation of bb_rank
	and operand_rank.
	(fini_reassoc): Delete operand_rank with pointer_map_destroy.

	* tree-ssa-structalias.c (vi_for_tree): Change to pointer_map.
	(struct tree_vi, tree_vi_t, tree_vi_hash, tree_vi_eq): Delete.
	(insert_vi_for_tree): Rewrite for pointer_map API.  Assert argument
	is not NULL.
	(lookup_vi_for_tree): Rewrite for pointer_map API.  Return varinfo_t
	directly since it cannot be NULL.
	(get_vi_for_tree): Rewrite for pointer_map API.
	(find_what_p_points_to): Adjust for change to lookup_vi_for_tree.
	(init_alias_vars): Create vi_for_tree as pointer_map.
	(delete_points_to_sets): Delete vi_for_tree using pointer_map_destroy.

	* tree-cfg.c: Don't include hashtab.h.
	(edge_to_cases): Declare as pointer_map.
	(struct edge_to_cases_elt, edge_to_cases_hash, edge_to_cases_eq):
	Delete.
	(edge_to_cases_cleanup): Rewrite as pointer_map_traverse callback.
	(start_recording_case_labels): Create edge_to_cases as pointer_map.
	(end_recoding_case_labels): Cleanup edge_to_cases manually before
	destroying it.
	(record_switch_edge): Delete.
	(get_cases_for_edge): Adjust for pointer_map API, inline
	record_switch_edge (rewritten for new API), remove goto.

From-SVN: r121648
2007-02-06 14:34:51 +00:00
Paolo Bonzini 0802f6a2f7 tree.c (tree_int_map_hash, [...]): Remove prototypes and make them non-static.
gcc:
2007-02-06  Paolo Bonzini  <bonzini@gnu.org>

	* tree.c (tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p):
	Remove prototypes and make them non-static.
	(struct tree_int_map): Remove.
	* tree.h (struct tree_int_map): Move here, turning TO into an
	unsigned int.
	(tree_int_map_hash, tree_int_map_eq, tree_int_map_marked_p): Declare.

	* tree.h (TREE_COMPLEXITY): Remove.
	(struct tree_exp): Remove complexity field.
	* tree.c (build1_stat): Don't set it.

gcc/ada:
2007-02-06  Paolo Bonzini  <bonzini@gnu.org>

	* Make-lang.in (ada/decl.o): Add gt-ada-decl.h dependency.
	* decl.c: Include gt-ada-decl.h.
	(annotate_value_cache): New.
	(annotate_value): Use it instead of TREE_COMPLEXITY.

From-SVN: r121647
2007-02-06 13:55:01 +00:00
Richard Sandiford 427e84f7fe texi2pod.pl: Handle @multitable.
contrib/
	* texi2pod.pl: Handle @multitable.

From-SVN: r121646
2007-02-06 13:14:18 +00:00
Richard Guenther 568265573d re PR middle-end/27302 (Fold does not fold (i < j) == (j > i) to 1)
2007-02-06  Richard Guenther  <rguenther@suse.de>

        PR middle-end/27302
        * gcc.dg/torture/pr27302-2.c: New testcase.

From-SVN: r121644
2007-02-06 12:38:32 +00:00
Dorit Nuzman fbf798fcc5 tree-vectorizer.c (vect_is_simple_use): Support induction.
2007-02-06  Dorit Nuzman  <dorit@il.ibm.com>
            Victor Kaplansky  <victork@il.ibm.com>

        * tree-vectorizer.c (vect_is_simple_use): Support induction.
        (vect_is_simple_reduction): Support reduction with induction as
        one of the operands.
        (vect_is_simple_iv_evolution): Fix formatting.
        * tree-vect-analyze.c (vect_mark_stmts_to_be_vectorized): Fix
        formatting.  Don't mark induction phis for vectorization.
        (vect_analyze_scalar_cycles): Analyze all inductions, then reductions.
        * tree-vect-transform.c (get_initial_def_for_induction): New function.
        (vect_get_vec_def_for_operand): Support induction.
        (vect_get_vec_def_for_stmt_copy): Fix formatting and add check for
        induction case.
        (vectorizable_reduction): Support reduction with induction as one of
        the operands.
        (vectorizable_type_demotion): Use def-type of stmt argument rather
        than dummy def-type.

        * tree-ssa-loop.c (gate_scev_const_prop): Return the value of
        flag_tree_scev_cprop.
        * common.opt (tree-scev-cprop): New flag.

        * tree-vect-transform.c (vect_create_destination_var): Use 'kind' in
        call to vect_get_new_vect_var.


Co-Authored-By: Victor Kaplansky <victork@il.ibm.com>

From-SVN: r121643
2007-02-06 10:08:51 +00:00
Andrew Haley 426147a1e8 re PR cp-tools/30706 (gjavah incompatible with sun javah and gcjh)
2007-02-05  Andrew Haley  <aph@redhat.com>

        PR cp-tools/30706
        * tools/gnu/classpath/tools/javah/JniIncludePrinter.java:
        (printClass): Replace '/' in filenames with '_'.
        * tools/gnu/classpath/tools/javah/JniStubPrinter.java
        (printClass): Likewise.

From-SVN: r121641
2007-02-06 09:44:53 +00:00
Ira Rosen 03d3e95382 tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that vectype is not NULL.
* tree-vect-patterns.c (vect_recog_widen_mult_pattern): Check that 
	vectype is not NULL.
	(vect_pattern_recog_1): Likewise.

From-SVN: r121640
2007-02-06 08:41:01 +00:00
Kaveh R. Ghazi 8fbbe90b26 fold-const.c (negate_expr_p): Handle CONJ_EXPR.
* fold-const.c (negate_expr_p): Handle CONJ_EXPR.
	(fold_negate_expr): Likewise.
	
testsuite:
	* gcc.dg/builtins-20.c: Add more cases.

From-SVN: r121639
2007-02-06 02:50:39 +00:00
Alexandre Oliva 792eaee2cb re PR debug/30189 (ICE on modified_type_die)
gcc/ChangeLog:
PR debug/30189
* dwarf2out.c (modified_type_die): Follow DECL_ORIGINAL_TYPE
even if cv-qualification is the same.
gcc/testsuite/ChangeLog:
PR debug/30189
* gcc.dg/pr30189.c: New test.

From-SVN: r121638
2007-02-06 01:35:10 +00:00
Bruce Korb 613698c025 check in required changes for base/sys/sysmacros.h
From-SVN: r121636
2007-02-06 01:25:59 +00:00
Geoffrey Keating 9be75e444a darwin-tramp.asm (__trampoline_setup): Call __enable_execute_stack on completion.
* config/rs6000/darwin-tramp.asm (__trampoline_setup): Call
	__enable_execute_stack on completion.

From-SVN: r121633
2007-02-06 00:32:44 +00:00
Steven G. Kargl 9ca6a963e3 Add the PR number to my previous ChangeLog entries.
From-SVN: r121632
2007-02-06 00:30:24 +00:00
GCC Administrator 52cc2c1ba6 Daily bump.
From-SVN: r121629
2007-02-06 00:18:00 +00:00
Harsha Jagasia 21efb4d464 amdfam10
From-SVN: r121625
2007-02-05 23:33:54 +00:00
Bob Wilson 63694bdd4e * config/xtensa/xtensa.c (constantpool_mem_p): Skip over SUBREGs.
From-SVN: r121622
2007-02-05 22:50:31 +00:00
Richard Guenther b95becfc09 tree-vectorizer.h (vectorizable_function): Add argument type argument, change return type.
2007-02-05  Richard Guenther  <rguenther@suse.de>

	* tree-vectorizer.h (vectorizable_function): Add argument type
	argument, change return type.
	* tree-vect-patterns.c (vect_recog_pow_pattern): Adjust caller.
	* tree-vect-transform.c (vectorizable_function): Handle extra
	argument, return vectorized function decl.
	(build_vectorized_function_call): Remove.
	(vectorizable_call): Handle calls with result and argument types
	differing.  Handle loop vectorization factor correctly.
	* targhooks.c (default_builtin_vectorized_function): Adjust for
	extra argument.
	* targhooks.h (default_builtin_vectorized_function): Likewise.
	* target.h (builtin_vectorized_function): Add argument type
        argument.
	* config/i386/i386.c (ix86_builtin_vectorized_function): Handle
	extra argument, allow vectorizing of lrintf.
	* doc/tm.texi (TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION): Adjust
	documentation of target hook.

	* gcc.target/i386/vectorize3.c: New testcase.

From-SVN: r121617
2007-02-05 21:38:53 +00:00
Keith Seitz d6df67efcd jvmti.cc (_envListLock): Change type to ReentrantReadWriteLock.
* jvmti.cc (_envListLock): Change type to
        ReentrantReadWriteLock.
        (_Jv_JVMTI_DisposeEnvironment): Switch to read/write
        lock.
        (check_enabled_event): Likewise.
        (_Jv_GetJVMTIEnv): Likewise.
        (_Jv_JVMTI_Init): Likewise.
        (_Jv_JVMTI_PostEvent): Likewise.

From-SVN: r121616
2007-02-05 21:28:55 +00:00
Richard Guenther cefde4f5c7 inclhack.def (glibc_c99_inline_4): Adjust selector to cope with older glibc.
2007-02-05  Richard Guenther  <rguenther@suse.de>

	* inclhack.def (glibc_c99_inline_4): Adjust selector to cope
	with older glibc.  Adjust version number for C99.
	* fixincl.x: Regenerated.

From-SVN: r121614
2007-02-05 21:22:48 +00:00
Hans-Peter Nilsson aa3386a543 re PR target/30665 (peephole2 misapplied on postinc mem)
PR target/30665
	* config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
	("*andhi_clear", andu (casesi+45)): For size-changed operand where
	memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.

From-SVN: r121613
2007-02-05 21:22:24 +00:00
Hans-Peter Nilsson c3e786e725 cris.md ("*andsi_movu", [...]): For size-changed operand where memory is allowed...
* config/cris/cris.md ("*andsi_movu", "*andsi_clear", "*andhi_movu")
	("*andhi_clear", andu (casesi+45)): For size-changed operand where
	memory is allowed, require !side_effects_p, not just !MEM_VOLATILE_P.

From-SVN: r121612
2007-02-05 21:21:50 +00:00
Hans-Peter Nilsson b81aec1b9d re PR target/30665 (peephole2 misapplied on postinc mem)
PR target/30665
	* gcc.dg/torture/pr30665-1.c, gcc.dg/torture/pr30665-2.c: New tests.

From-SVN: r121611
2007-02-05 21:20:36 +00:00
Tom Tromey 9e006df67f Proxy.java (equals): Handle case where address==null.
* java/net/Proxy.java (equals): Handle case where address==null.
	(hashCode): Likewise.
	(toString): Likewise.

From-SVN: r121609
2007-02-05 21:05:10 +00:00
Keith Seitz 072d019dfc * gnu/classpath/jdwp/natVMVirtualMachine.cc
(registerEvent): Implement EVENT_BREAKPOINT.
        (unregisterEvent): Likewise.
        (get_request_location): New function.

From-SVN: r121608
2007-02-05 20:56:47 +00:00
Roger Sayle 2d38026be8 fold-const.c (fold_unary): Test for availability of BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
* fold-const.c (fold_unary) <REAL_PART>: Test for availability of
	BUILT_IN_COS before simplifying REAL_PART(CEXPI)) to COS.
	<IMAG_PART>: Likewise, check for availability of BUILT_IN_SIN.
	* builtins.c (fold_builtin_sincos): Check for TARGET_C99_FUNCTIONS
	before canonicalizing sincos to cexpi.
	(fold_builtin_cexp): Likewise, for canonicalizing cexp to cexpi.

From-SVN: r121607
2007-02-05 19:10:44 +00:00
Roman Zippel 7056b82ec7 gcconfig.h: use LINUX_STACKBOTTOM so it works with Linux 2.6, reactivate MPROTECT_VDB
2007-02-05  Roman Zippel <zippel@linux-m68k.org>

	* boehm-gc/include/private/gcconfig.h: use LINUX_STACKBOTTOM so
	it works with Linux 2.6, reactivate MPROTECT_VDB
	* boehm-gc/pthread_stop_world.c: save all register
	on signal entry

From-SVN: r121606
2007-02-05 18:18:11 +00:00
Matthias Klose 7f1c6e93a9 testsuite/Makefile.am (compile-tests): Fix typo.
2007-02-05  Matthias Klose  <doko@debian.org> 
 
        testsuite/Makefile.am (compile-tests): Fix typo. 
        testsuite/Makefile.in: Regenerate.

From-SVN: r121605
2007-02-05 18:13:44 +00:00
Roger Sayle b6e46ca136 alpha.c (alpha_add_builtins): New Helper function.
* config/alpha/alpha.c (alpha_add_builtins): New Helper function.
	Set TREE_READONLY and TREE_NOTHROW directly, not via attributes.
	(alpha_init_builtins): Use alpha_add_builtins to process tables.

From-SVN: r121603
2007-02-05 16:39:58 +00:00
Roger Sayle 8d0510ddbd mips-tfile.c (initialize_init_file): Correct endianness test.
* mips-tfile.c (initialize_init_file): Correct endianness test.

From-SVN: r121602
2007-02-05 16:37:05 +00:00
Roger Sayle cd5c235734 Makefile.in: Make libgcc_s.so depend on libunwind.so.
* Makefile.in <LIBUNWIND>: Make libgcc_s.so depend on libunwind.so.
	(libgcc_s.so): Append -B./ to CFLAGS for $(SHLIB_LINK).
	(libunwind.so): Likewise for $(SHLIBUNWIND_LINK).


Co-Authored-By: Daniel Jacobowitz <dan@codesourcery.com>

From-SVN: r121601
2007-02-05 16:04:14 +00:00
Kazu Hirata d6fb69e757 m68k.md (pushdi-1, [...]): Don't use the 'y' constraint.
* config/m68k/m68k.md (pushdi-1, pushdi, movsi+1): Don't use
	the 'y' constraint.

From-SVN: r121600
2007-02-05 14:05:24 +00:00
Paolo Carlini 1444936f04 stl_deque.h (operator<): Qualify call.
2007-02-05  Paolo Carlini  <pcarlini@suse.de>

	* include/bits/stl_deque.h (operator<): Qualify call.

From-SVN: r121597
2007-02-05 12:58:12 +00:00
Dirk Mueller 583c0b0549 re PR bootstrap/30510 (Gcc failed to bootstrap)
2007-02-05  Dirk Mueller  <dmueller@suse.de>

       PR bootstrap/30510
       * parser.c (cp_parser_class_specifier): Always initialize bases.

From-SVN: r121596
2007-02-05 12:43:17 +00:00
Richard Sandiford 55d6f63112 dwarf2out.c (dwarf2out_frame_debug_expr): Record the register saves in a PARALLEL before the register assignments.
gcc/
	* dwarf2out.c (dwarf2out_frame_debug_expr): Record the register
	saves in a PARALLEL before the register assignments.

From-SVN: r121594
2007-02-05 10:41:26 +00:00
Richard Sandiford 5cd0f9153d tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require DWARF_FRAME_RETURN_COLUMN to be a general register.
gcc/
	* doc/tm.texi (DWARF_ALT_FRAME_RETURN_COLUMN): Do not require
	DWARF_FRAME_RETURN_COLUMN to be a general register.
	* dwarf2out.c (init_return_column_size): New function, split from...
	(expand_builtin_init_dwarf_reg_sizes): ...here.  Allow both
	DWARF_FRAME_RETURN_COLUMN and DWARF_ALT_FRAME_RETURN_COLUMN
	to be nongeneral registers.
	* config/m68k/m68k.h (DWARF_FRAME_REGNUM): Only map FP and
	integer registers.
	(DWARF_FRAME_REGISTERS, DWARF_FRAME_RETURN_COLUMN): Define.
	(DWARF_ALT_FRAME_RETURN_COLUMN): Define.

From-SVN: r121593
2007-02-05 10:38:46 +00:00
Paolo Bonzini 4fe70b3151 cp-tree.h (OMP_ATOMIC_CODE): Delete.
2007-02-05  Paolo Bonzini  <bonzini@gnu.org>

	* cp-tree.h (OMP_ATOMIC_CODE): Delete.
	(OMP_ATOMIC_DEPENDENT_P): Rewrite.
	* pt.c (tsubst_expr): Adjust for new format of dependent OMP_ATOMIC
	expressions.
	* semantics.c (finish_omp_atomic): Store a whole expression node
	in operand 1, and integer_zero_node in operand 0, for dependent
	OMP_ATOMIC.  Rewrite to make flow easier to understand.

From-SVN: r121592
2007-02-05 07:57:49 +00:00
Mike Stump 3c1c7aaea2 * mkheaders.in: Allow optional isysroot parameter.
From-SVN: r121590
2007-02-05 00:52:27 +00:00
GCC Administrator f634a5cc31 Daily bump.
From-SVN: r121588
2007-02-05 00:17:37 +00:00
Zdenek Dvorak 83bd032b4b cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
* cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.

From-SVN: r121584
2007-02-04 23:51:28 +00:00
Zdenek Dvorak 14fa2cc057 cfgloopmanip.c (loop_delete_branch_edge): Removed.
* cfgloopmanip.c (loop_delete_branch_edge): Removed.
	(remove_path): Use can_remove_branch_p and remove_branch instead
	of loop_delete_branch_edge.
	* tree-ssa-loop-manip.c (scale_dominated_blocks_in_loop): New function.
	(tree_transform_and_unroll_loop): Remove dead branches immediately.
	Update profile using scale_dominated_blocks_in_loop.
	* cfghooks.c (can_remove_branch_p, remove_branch): New functions.
	* cfghooks.h (struct cfg_hooks): Add can_remove_branch_p.
	(can_remove_branch_p, remove_branch): Declare.
	* tree-cfg.c (tree_can_remove_branch_p): New function.
	(tree_cfg_hooks): Add tree_can_remove_branch_p.
	* cfgrtl.c (rtl_can_remove_branch_p): New function.
	(rtl_cfg_hooks, cfg_layout_rtl_cfg_hook): Add rtl_can_remove_branch_p.

From-SVN: r121583
2007-02-04 23:47:09 +00:00
Jan Hubicka 284893341f re PR middle-end/30696 (Linker failure with OpenMP and inline function)
PR middle-end/30696
	* ipa-inline.c (cgraph_clone_inlined_nodes): When there are unanalyzed
	nodes in cgraph, don't remove offline copy of the function.

From-SVN: r121582
2007-02-04 23:40:58 +00:00
Francois-Xavier Coudert a14fb6faeb re PR fortran/30611 ([4.1 only] Confusing error message for negative ncopies in REPEAT)
PR fortran/30611

	* trans-intrinsic.c (gfc_conv_intrinsic_repeat): Evaluate
	arguments only once. Generate check that NCOPIES argument is not
	negative.

	* intrinsics/string_intrinsics.c (string_repeat): Don't check
	if ncopies is negative.

	* gcc/testsuite/gfortran.dg/repeat_1.f90: New test.

From-SVN: r121581
2007-02-04 21:33:10 +00:00
Steven G. Kargl 8135cfa844 invoke.texi: Update documentation.
2007-02-03  Steven G. Kargl <kargl@gcc.gnu.org>

        * fortran/invoke.texi: Update documentation.
        * fortran/options.c (gfc_post_options): Deal with tabs with -std=f2003
        and -pedantic.

2007-02-03  Steven G. Kargl <kargl@gcc.gnu.org>

        * gfortran.dg/spread_shape_1.f90: Remove tabs.
        * gfortran.dg/derived_init_2.f90: Ditto.
        * gfortran.dg/elemental_subroutine_3.f90: Ditto.
        * gfortran.dg/array_initializer_1.f90: Ditto.
        * gfortran.dg/do_2.f90: Ditto.
        * gfortran.dg/proc_assign_1.f90: Ditto.

From-SVN: r121580
2007-02-04 21:19:49 +00:00
Eric Botcazou f81ef9b362 Small tweaks.
From-SVN: r121579
2007-02-04 19:42:37 +00:00
Jan Hubicka bf3892af75 tree-sra.c (sra_walk_expr): Add linebreaks.
* tree-sra.c (sra_walk_expr): Add linebreaks. BITFIELD_REFs into
	vectors might cause maybe_lookup_element_for_expr to be called
	on non-sra-candidate.

From-SVN: r121578
2007-02-04 17:58:26 +00:00
Kazu Hirata 942fd98f64 bfin-modes.def, [...]: Follow spelling conventions.
* config/bfin/bfin-modes.def, config/bfin/bfin.c,
	config/bfin/bfin.md, config/bfin/predicates.md: Follow
	spelling conventions.

From-SVN: r121577
2007-02-04 16:40:30 +00:00