Commit Graph

77532 Commits

Author SHA1 Message Date
Tobias Burnus 65713e5bcc re PR fortran/27588 (-fbounds-check should catch substring out of range accesses)
fortran/
2006-11-15  Tobias Burnus  <burnus@net-b.de>
            Francois-Xavier Coudert  <fxcoudert@gcc.gnu.org>

       PR fortran/27588
       * trans-expr.c (gfc_conv_substring): Add bounds checking.
         (gfc_conv_variable, gfc_conv_substring_expr): Pass more
         arguments to gfc_conv_substring.

testsuite/
2006-11-15  Tobias Burnus  <burnus@net-b.de>

       PR fortran/27588
       * gfortran.dg/char_bounds_check_fail_1.f90: New test.


Co-Authored-By: Francois-Xavier Coudert <fxcoudert@gcc.gnu.org>

From-SVN: r118852
2006-11-15 11:13:16 +01:00
Tobias Burnus 8c894ae273 re PR fortran/29806 (Error if CONTAINS is present without SUBPROGRAM)
fortran/
2006-11-15  Tobias Burnus  <burnus@net-b.de>

       PR fortran/29806
       * parse.c (parse_contained): Check for empty contains statement.

testsuite/
2006-11-15  Tobias Burnus  <burnus@net-b.de>

       PR fortran/29806
       * gfortran.dg/contains.f90: New test.
       * gfortran.dg/derived_function_interface_1.f90: Add a dg-warning.

From-SVN: r118851
2006-11-15 11:02:21 +01:00
Jakub Jelinek 08700251e5 re PR tree-optimization/29581 (Latent bug in 4.1/4.2/4.3 lambda-code.c)
PR tree-optimization/29581
	* lambda-code.c (replace_uses_equiv_to_x_with_y): Add YINIT,
	REPLACEMENTS, FIRSTBSI arguments.  If initial condition or
	type is different between Y and USE, create a temporary
	variable, initialize it at the beginning of the body bb
	and use it as replacement instead of Y.

	* gcc.dg/pr29581-1.c: New test.
	* gcc.dg/pr29581-2.c: New test.
	* gcc.dg/pr29581-3.c: New test.
	* gcc.dg/pr29581-4.c: New test.
	* gfortran.dg/pr29581.f90: New test.

From-SVN: r118848
2006-11-15 10:35:34 +01:00
Paolo Bonzini d6cfd93133 re PR tree-optimization/29753 (Volatile semantics ignored in some cases)
2006-11-15  Paolo Bonzini  <bonzini@gnu.org>

	PR middle-end/29753
	* gimplify.c (fold_indirect_ref_rhs): Use
	STRIP_USELESS_TYPE_CONVERSION rather than STRIP_NOPS.

From-SVN: r118845
2006-11-15 08:07:03 +00:00
Bud Davis 5868cbf992 re PR fortran/28974 (Extremely slow compilation of enumerated DATA statements.)
2006-11-15  Bud Davis <bdavis9659@sbcglobal.net>

        PR fortran/28974
        * gfortran.h (gfc_expr): Add element which holds a splay-tree
        for the exclusive purpose of quick access to a constructor by
        offset.
        * data.c (find_con_by_offset): Use the splay tree for the search.
        (gfc_assign_data_value): Use the splay tree.
        (gfc_assign_data_value_range): ditto.
        * expr.c (gfc_get_expr): Initialize new element to null.
        (gfc_free_expr): Delete splay tree when deleting gfc_expr.

From-SVN: r118844
2006-11-15 05:10:22 +00:00
Brooks Moses 12c7896669 re PR fortran/29702 (RFE: Column number in error messages.)
PR fortran/29702
* fortran/error.c (show_loci): Move column-offset calculation to
show_locus.
(show_locus): Remove blank lines before "Included in"
lines, clean up code, calculate column-offsets, print
column number is error-header lines as appropriate.
(error_integer): (new function) Print integer to error
buffer.
(error_print): Use error_integer, avoid possible buffer
overflows from buggy error formats.
* testsuite/lib/gfortran-dg.exp (gfortran-dg-test): Ignore column
numbers in error message headers.

From-SVN: r118843
2006-11-14 20:00:35 -08:00
Brooks Moses 1dde868307 gfortran.h (GFC_MAX_LINE): Remove constant definition.
* gfortran.h (GFC_MAX_LINE): Remove constant definition.
(gfc_option_t): Clarify comments.
* options.c: Set default line length limits to actual default
values, rather than flag values.
* scanner.c: Eliminate checking and handling of the
fixed/free_line_length flag values.

From-SVN: r118842
2006-11-14 19:52:03 -08:00
Brooks Moses 4887aa7174 lang.opt: Remove -fno-backend option.
* lang.opt: Remove -fno-backend option.
* gfortran.h (gfc_option_t): Remove flag_no_backend.
* options.c (gfc_init_options): Remove flag_no_backend.
(gfc_handle_option): Remove -fno-backend option handler.
* parse.c (gfc_parse_file): Remove references to
gfc_option.flag_no_backend.

From-SVN: r118841
2006-11-14 19:49:21 -08:00
GCC Administrator a48cfb7cc6 Daily bump.
From-SVN: r118835
2006-11-15 00:17:59 +00:00
Richard Earnshaw a41a56b62d expmed.c (emit_store_flag_1): New function.
* expmed.c (emit_store_flag_1): New function.
	(emit_store_flag): Call it.  If we can't find a suitable scc insn,
	try a cstore insn.
	* expr.c (do_store_flag): If we can't find a scc insn, try cstore.
	Use do_compare_rtx_and_jump.
	* arm.h (BRANCH_COST): Increase to 2 on Thumb.
	* arm.md (cstoresi4): New define_expand.
	(cstoresi_eq0_thumb, cstoresi_ne0_thumb): Likewise.
	(cstoresi_eq0_thumb_insn, cstore_ne0_thumb_insn): New patterns.
	(cstoresi_nltu_thumb, thumb_addsi3_addgeu): New patterns.

From-SVN: r118829
2006-11-14 23:25:43 +00:00
Richard Guenther 75dc0b383d math-torture.exp: Restrict to i?86 and x86_64 targets.
2006-11-14  Richard Guenther  <rguenther@suse.de>

        * gcc.target/i386/math-torture/math-torture.exp: Restrict
        to i?86 and x86_64 targets.

From-SVN: r118827
2006-11-14 22:01:08 +00:00
Caroline Tice 8970859455 Add ability to generate DWARF pubtypes section if DEBUG_PUBTYPES_SECTION is defined.
Add ability to generate DWARF pubtypes section if DEBUG_PUBTYPES_SECTION
is defined.  Also add dejagnu testcases for pubtypes.

From-SVN: r118826
2006-11-14 12:55:56 -08:00
Joseph Myers f0c1ebb734 arm.h (FUNCTION_ARG_ADVANCE): Only adjust iwmmxt_nregs if TARGET_IWMMXT_ABI.
* config/arm/arm.h (FUNCTION_ARG_ADVANCE): Only adjust
	iwmmxt_nregs if TARGET_IWMMXT_ABI.
	* config/arm/iwmmxt.md (movv8qi_internal, movv4hi_internal,
	movv2si_internal): Support moves between core registers.

From-SVN: r118825
2006-11-14 20:36:28 +00:00
Eric Christopher dd7f7a6ea4 configure: Regenerate with autoconf 2.59.
2006-11-14  Eric Christopher  <echristo@apple.com>

        * configure: Regenerate with autoconf 2.59.

From-SVN: r118823
2006-11-14 19:42:51 +00:00
Daniel Berlin d75dbccd3c re PR tree-optimization/27755 (PRE confused by control flow)
2006-11-14  Daniel Berlin  <dberlin@dberlin.org>

	Fix PR tree-optimization/27755

	* tree-ssa-pre.c: Update comments.
	(bb_bitmap_sets): Add pa_in and  deferred member.
	(BB_DEFERRED): New macro.
	(maximal_set): New variable.
	(pre_stats): Add pa_insert member.
	(bitmap_set_and): Short circuit orig == dest.
	(bitmap_set_subtract_values): New function.
	(bitmap_set_contains_expr): Ditto.
	(translate_vuses_through_block): Add phiblock argument.
	(dependent_clean): New function.
	(compute_antic_aux): Update for maximal_set changes.
	(compute_partial_antic_aux): New function.
	(compute_antic): Handle partial anticipation.
	(do_partial_partial_insertion): New function.
	(insert_aux): Handle partial anticipation.
	(add_to_sets): Add to maximal set.
	(compute_avail): Ditto.
	(init_pre): Initialize maximal_set.
	(execute_pre): Do partial anticipation if -O3+.

From-SVN: r118821
2006-11-14 18:12:20 +00:00
Tobias Burnus 17339e8836 match.c (gfc_match_namelist): Add missing space to error message.
2006-11-14  Tobias Burnus  <burnus@net-b.de>

       * match.c (gfc_match_namelist): Add missing space to
         error message.

From-SVN: r118820
2006-11-14 18:31:00 +01:00
Mark Mitchell 1f3a64d10a re PR c++/29106 (sizeof(*var) in expression drops entire line of code out of compile)
PR c++/29106
	* g++.dg/init/self1.C: New test.

From-SVN: r118819
2006-11-14 17:15:08 +00:00
Joseph Myers 30cc554051 13450.cc: Do not test long double in IBM long double case.
* testsuite/26_numerics/complex/13450.cc: Do not test long double
	in IBM long double case.

From-SVN: r118814
2006-11-14 16:01:41 +00:00
Erven Rohou 467b1fc689 MAINTAINERS (Write After Approval): Add myself.
From-SVN: r118813
2006-11-14 16:45:55 +01:00
Tobias Burnus 9c213349ff re PR fortran/29657 (Don't allow SAVE for functions)
fortran/
2006-11-14  Tobias Burnus  <burnus@net-b.de>

	PR fortran/29657
	* symbol.c (check_conflict): Add further conflicts.

testsuite/
2006-11-14  Tobias Burnus  <burnus@net-b.de>

	PR fortran/29657
	* gfortran.dg/conflicts.f90: Add.

From-SVN: r118812
2006-11-14 16:35:36 +01:00
Paolo Bonzini 995a569727 Makefile.tpl (clean-stage*): Test separately for package/Makefile and stageN-package/Makefile.
2006-11-14  Paolo Bonzini  <bonzini@gnu.org>

	* Makefile.tpl (clean-stage*): Test separately for package/Makefile
	and stageN-package/Makefile.
	* Makefile.in: Regenerated.

From-SVN: r118810
2006-11-14 12:14:33 +00:00
Paolo Bonzini 6e0b633f6c re PR rtl-optimization/29798 (-O2 gives wrong results)
2006-11-14  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/29798

	* fwprop.c (use_killed_between): Check that DEF_INSN dominates
	TARGET_INSN before any other check.
	(fwprop_init): Always calculate dominators.
	(fwprop_done): Always free them.

2006-11-14  Paolo Bonzini  <bonzini@gnu.org>

	PR rtl-optimization/29798

	* gcc.c-torture/execute/pr29798.c: New.

From-SVN: r118808
2006-11-14 08:46:26 +00:00
Kaveh R. Ghazi b7e85170cf fold-const.c (fold_strip_sign_ops): Handle COMPOUND_EXPR and COND_EXPR.
* fold-const.c (fold_strip_sign_ops): Handle COMPOUND_EXPR and
	COND_EXPR.

testsuite:
	* gcc.dg/builtins-20.c: Add more cases.

From-SVN: r118802
2006-11-14 05:08:46 +00:00
DJ Delorie 833bf445b0 m32c.c (m32c_prepare_shift): Use a separate temporary for intermediates.
* config/m32c/m32c.c (m32c_prepare_shift): Use a separate
temporary for intermediates.

From-SVN: r118798
2006-11-13 21:29:46 -05:00
Jie Zhang 8b3c6c5a91 configure.in: Remove target-libgloss from noconfigdirs for bfin-*-*.
* configure.in: Remove target-libgloss from noconfigdirs for
	bfin-*-*.
	* configure: Regenerated.

From-SVN: r118794
2006-11-14 00:45:33 +00:00
Jie Zhang c8d6d53eef configure.in: Remove target-libgloss from noconfigdirs for bfin-*-*.
* configure.in: Remove target-libgloss from noconfigdirs for
	bfin-*-*.
	* configure: Regenerated.

From-SVN: r118793
2006-11-14 00:39:08 +00:00
GCC Administrator df84fdf696 Daily bump.
From-SVN: r118791
2006-11-14 00:17:39 +00:00
Roger Sayle 07b183fda9 rtti.c (get_pseudo_ti_init): Ensure that the offset field of the base type info initializer has the correct type.
* rtti.c (get_pseudo_ti_init): Ensure that the offset field of the
	base type info initializer has the correct type.

From-SVN: r118785
2006-11-13 23:28:25 +00:00
Kaz Kojima cb3d3842bb sh.c (expand_cbranchdi4): Initialize skip_label.
* config/sh/sh.c (expand_cbranchdi4): Initialize skip_label.
	(sh_optimize_target_register_callee_saved): #if 0 the code
	using NOTE_INSN_LOOP_{BEG,END}.

From-SVN: r118784
2006-11-13 23:08:24 +00:00
Roger Sayle 7c06f56575 fold-const.c (optimize_bit_field_compare): Recursively call fold when simplifying non-constant comparisons between bit-fields.
* fold-const.c (optimize_bit_field_compare): Recursively call
	fold when simplifying non-constant comparisons between bit-fields.

From-SVN: r118783
2006-11-13 23:02:41 +00:00
Jakub Jelinek 65280f6ca6 configure.ac: Add changequote around __LONG_DOUBLE_MATH_OPTIONAL test.
* configure.ac: Add changequote around __LONG_DOUBLE_MATH_OPTIONAL
	test.
	* configure: Rebuilt.

From-SVN: r118780
2006-11-13 23:38:21 +01:00
Daniel Jacobowitz 597c25e65d * tls.m4 (GCC_CHECK_TLS): Fall back to a link test.
From-SVN: r118777
2006-11-13 20:35:20 +00:00
Andrew Pinski d296e02ef8 cell.md: New file.
2006-11-13  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        * config/rs6000/cell.md: New file.
        * config/rs6000/rs6000.c (rs6000_cell_dont_microcode): New
        variable.
        (ppccell_cost): New cost matrix.
        (TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD): Define.
        (rs6000_override_options): Set rs6000_always_hint to false
        for cell. Also align functions/lables/loops to 8byte
        for the Cell. Use PROCESSOR_CELL.
        (rs6000_emit_epilogue): Rename using_mfcr_multiple to
        using_mtcr_multiple.
        (rs6000_variable_issue): If the insn is a nonpipelined instruction
        on the Cell, return 0.
        (rs6000_adjust_cost): Add Cell cost adjustments.
        (is_microcoded_insn): Return true for Cell microcoded
        instructions.
        (is_nonpipeline_insn): New function.
        (rs6000_issue_rate): Add PROCESSOR_CELL.
        (rs6000_use_sched_lookahead): If Cell, then we should look ahead 8
        instructions.
        (rs6000_use_sched_lookahead_guard): New function.
        (rs6000_sched_reorder):  Reorder the ready list, if the second
        to last ready insn is a nonepipeline insn on the Cell.
        * config/rs6000/rs6000.h (processor_type): Add PROCESSOR_CELL.
        (ASM_CPU_SPEC): Add Cell.
        * config/rs6000/rs6000.md (cpu): Add Cell.
        (cell_micro): New Attr.
        Include cell.md

From-SVN: r118776
2006-11-13 12:14:35 -08:00
Jakub Jelinek e8116f4026 configure.ac (ld_vers): Parse GNU ld version 2.17.50.0.3-6 20060715 style versions.
* configure.ac (ld_vers): Parse GNU ld version 2.17.50.0.3-6 20060715
	style versions.
	* configure: Rebuilt.

From-SVN: r118775
2006-11-13 20:47:06 +01:00
Jakub Jelinek b30c6a0d21 re PR fortran/29759 (ice on line continuation in OMP statements (gfc_next_char_literal, at fortran/scanner.c:701))
PR fortran/29759
	* fortran/scanner.c (skip_free_comments): Clear openmp_flag
	before returning true.

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

From-SVN: r118773
2006-11-13 20:42:55 +01:00
H.J. Lu e7d459bd0b re PR middle-end/28915 (ICE: tree check: expected class 'constant', have 'declaration' (var_decl) in build_vector, at tree.c:973)
2006-11-12  Jason Merrill  <jason@redhat.com>
	    Andrew Pinski <pinskia@physics.uc.edu>

	PR middle-end/28915
	* gcc.target/i386/vectorize1.c: New.

From-SVN: r118771
2006-11-13 10:53:27 -08:00
Richard Guenther 63be4b32d1 i386.c (ix86_expand_lround): Handle expand_simple_binop return value.
2006-11-13  Richard Guenther  <rguenther@suse.de>

	* config/i386/i386.c (ix86_expand_lround): Handle expand_simple_binop
	return value.
	(ix86_expand_lfloorceil): Likewise.
	(ix86_expand_rint): Likewise.
	(ix86_expand_floorceildf_32): Likewise.
	(ix86_expand_floorceil): Likewise.
	(ix86_expand_rounddf_32): Likewise.
	(ix86_expand_truncdf_32): Likewise.
	(ix86_expand_round): Likewise.

From-SVN: r118769
2006-11-13 18:20:13 +00:00
Mark Mitchell 48ffd0efe9 re PR c++/29518 (rejects valid template argument, enums vs templates)
PR c++/29518
	* pt.c (coerce_template_parms): Do not skip_evaluation while
	substituting template arguments.
	PR c++/29518
	* g++.dg/template/static28.C: New test.

From-SVN: r118768
2006-11-13 17:49:43 +00:00
Mark Mitchell a2c5ed873e re PR c++/29518 (rejects valid template argument, enums vs templates)
PR c++/29518
	* pt.c (coerce_template_parms): Do not skip_evaluation while
	substituting template arguments.
	PR c++/29518
	* g++.dg/template/static28.C: New test.

From-SVN: r118767
2006-11-13 17:48:28 +00:00
Carlos O'Donell f4c0a30368 gcc.c: Organize search path variables into $prefix relative, and well-known native.
gcc/

2006-11-13  Carlos O'Donell  <carlos@codesourcery.com>
	    Mark Mitchell  <mark@codesourcery.com>

	* gcc.c: Organize search path variables into $prefix relative,
	and well-known native. Add comments.
	(add_sysrooted_prefix): Add comment.
	(process_command): If !gcc_exec_prefix add $prefix based paths.
	If *cross_compile == '0', add native well-known paths.
	Assert tooldir_base_prefix is always relative.
	(main): If print_search_dirs, and if gcc_exec_prefix is set,
	use this value for 'install:' path.
	* Makefile.in: Add GCC_EXEC_PREFIX to generated site.exp.

gcc/testsuite/

2006-11-13  Carlos O'Donell  <carlos@codesourcery.com>

	* lib/c-torture.exp: Use target-libpath.exp.
	* lib/target-libpath.exp (set_ld_library_path_env_vars): If present,
	set GCC_EXEC_PREFIX env var from global variable of same name.


Co-Authored-By: Mark Mitchell <mark@codesourcery.com>

From-SVN: r118765
2006-11-13 17:25:59 +00:00
H.J. Lu 8fbbf354fc i386.c: Fix a typo in comment.
2006-11-13  H.J. Lu  <hongjiu.lu@intel.com>

	* config/i386/i386.c: Fix a typo in comment.

From-SVN: r118764
2006-11-13 07:29:21 -08:00
Michael Matz 7180bcb13f * genemit.c (gen_expand): Allocate enough memory.
From-SVN: r118762
2006-11-13 14:36:47 +00:00
Andrew Pinski 3e806a3df4 re PR fortran/26994 (Scalar TRANSFER - error: invalid operand to unary operator)
2006-11-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR fortran/26994
        * gfortran.fortran-torture/compile/transfer-1.f90:
        New testcase.

2006-11-12  Andrew Pinski  <andrew_pinski@playstation.sony.com>

        PR fortran/26994
        * trans-expr.c (gfc_conv_expr_reference): Set TREE_STATIC on the
        new CONST_DECL.

From-SVN: r118761
2006-11-13 06:36:09 -08:00
Joseph Myers 46fb6400ee eh_globals.cc (__cxxabiv1::__cxa_get_globals): Initialize propagatingExceptions if __ARM_EABI_UNWINDER__.
* libsupc++/eh_globals.cc (__cxxabiv1::__cxa_get_globals):
	Initialize propagatingExceptions if __ARM_EABI_UNWINDER__.
	* libsupc++/eh_personality.cc (empty_exception_spec): Define
	separately in __ARM_EABI_UNWINDER__ case.

From-SVN: r118757
2006-11-13 13:28:28 +00:00
Joseph Myers b54c93b7b8 bpapi.h (TARGET_BPABI_CPP_BUILTINS): Define __GXX_TYPEINFO_EQUALITY_INLINE but not __GXX_MERGED_TYPEINFO_NAMES.
gcc:
	* config/arm/bpapi.h (TARGET_BPABI_CPP_BUILTINS): Define
	__GXX_TYPEINFO_EQUALITY_INLINE but not
	__GXX_MERGED_TYPEINFO_NAMES.
	* config/arm/symbian.h (TARGET_OS_CPP_BUILTINS): Define
	__GXX_MERGED_TYPEINFO_NAMES.
	* config/i386/cygming.h (TARGET_OS_CPP_BUILTINS): Define
	__GXX_TYPEINFO_EQUALITY_INLINE.

libstdc++-v3:
	* libsupc++/typeinfo (__GXX_TYPEINFO_EQUALITY_INLINE): Define.
	Use instead of __GXX_MERGED_TYPEINFO_NAMES to condition inline
	definitions.
	* libsupc++/tinfo.cc (operator==): Condition on
	__GXX_TYPEINFO_EQUALITY_INLINE; check __GXX_MERGED_TYPEINFO_NAMES
	to determine algorithm.
	* libsupc++/tinfo2.cc (type_info::before): Likewise.

From-SVN: r118755
2006-11-13 13:10:17 +00:00
H.J. Lu 5da10ac71f re PR tree-optimization/29680 (Misscompilation of spec2006 gcc)
PR tree-optimization/29680
	* tree-ssa-operands.c (access_can_touch_variable): Revert fix for
	PR 14784.

	* gcc.dg/alias-11.c: New test.


Co-Authored-By: Zdenek Dvorak <dvorakz@suse.cz>

From-SVN: r118754
2006-11-13 12:37:29 +00:00
Jason Merrill 84816907e4 re PR middle-end/28915 (ICE: tree check: expected class 'constant', have 'declaration' (var_decl) in build_vector, at tree.c:973)
PR middle-end/28915
        * gimplify.c (gimplify_init_constructor): Don't reduce TREE_CONSTANT
        vector ctors.
        * tree-cfg.c (verify_expr): Don't look into TREE_CONSTANT
        vector ctors.
        * expmed.c (make_tree): Handle CONST, SYMBOL_REF.
        * tree.c (build_vector): Handle non-_CST elements.

Co-Authored-By: Andrew Pinski <pinskia@physics.uc.edu>

From-SVN: r118747
2006-11-13 03:16:11 -05:00
Kaz Kojima 329b3cc384 genemit.c (gen_insn): Call gen_exp with a non-null used when handling multiple insns.
* genemit.c (gen_insn): Call gen_exp with a non-null used
	when handling multiple insns.
	(gen_expand): Likewise.
	* reorg.c (emit_delay_sequence): Copy the delay slot insn.
	* config/sh/sh.md (ashrsi2_31+1): Copy operands[0].
	(movsi_const_16bit+1): Copy operands[1].
	(call_pcrel): Copy the call_site pattern.
	(call_value_pcrel, sibcall_pcrel, GOTaddr2picreg): Likewise.

From-SVN: r118746
2006-11-13 03:28:13 +00:00
Kaveh Ghazi 6d55dfe3a3 Add PR number to ChangeLog from a previous commit.
From-SVN: r118745
2006-11-13 03:02:14 +00:00
Roger Sayle 1b43b96773 fold-const.c (negate_expr_p): Correct/refine condition for transformations.
* fold-const.c (negate_expr_p) <PLUS_EXPR, MINUS_EXPR>: Correct/refine
	condition for transformations.  Use !HONOR_SIGN_DEPENDENT_ROUNDING
	&& !HONOR_SIGNED_ZEROS instead of flag_unsafe_math_optimizations.
	(fold_negate_expr) <PLUS_EXPR, MINUS_EXPR>: Likewise.

From-SVN: r118744
2006-11-13 02:55:22 +00:00