Commit Graph

91331 Commits

Author SHA1 Message Date
Daniel Franke 1e5e8a59a9 MAINTAINERS: Moved myself to reviewers (Fortran).
2009-01-11  Daniel Franke  <franke.daniel@gmail.com>

        * MAINTAINERS: Moved myself to reviewers (Fortran).

From-SVN: r143269
2009-01-11 07:28:03 -05:00
Eric Botcazou 13318d2fc8 decl.c (gnat_to_gnu_entity): Put the _Tag field before any discriminants in the field list.
* gcc-interface/decl.c (gnat_to_gnu_entity) <E_Record_Subtype>: Put
	the _Tag field before any discriminants in the field list.
	(components_to_record): Remove obsolete comment.

From-SVN: r143267
2009-01-11 12:24:02 +00:00
Markus Schoepflin 53a7ff9a9a re PR debug/7055 ([alpha osf4] G++ 3.1 Produced bad debugging entries if compiled with -gcoff, also segv.)
PR debug/7055
	* gcc/mips-tfile.c (parse_def): Fix parsing of def strings
	starting with digits.

From-SVN: r143265
2009-01-11 11:56:52 +01:00
Matthias Klose 6f611d5225 Makefile.am (ecjx_LDADD): Add $(extra_ldflags).
2009-01-11  Matthias Klose  <doko@ubuntu.com>

        * Makefile.am (ecjx_LDADD): Add $(extra_ldflags).
        * Makefile.in: Regenerate.

From-SVN: r143261
2009-01-11 07:36:46 +00:00
Sebastian Pop 5a2971ffa1 block-3.c: Fix compile error on 32bit.
2009-01-10  Sebastian Pop  <sebastian.pop@amd.com>

	* gcc.dg/graphite/block-3.c: Fix compile error on 32bit.

From-SVN: r143258
2009-01-11 00:40:54 +00:00
GCC Administrator 43b399e233 Daily bump.
From-SVN: r143256
2009-01-11 00:16:48 +00:00
Jakub Jelinek b3a796bc64 re PR target/38695 (gcc.c-torture/compile/pr37433.c ICE on trunk arm_function_in_section_p)
PR target/38695
	* config/arm/arm.c (arm_is_long_call_p): Don't call
	arm_function_in_section_p if decl isn't a FUNCTION_DECL.

From-SVN: r143246
2009-01-10 15:02:12 +01:00
Andrew Pinski b726f5e6c3 re PR c++/38648 (ICE with string literal)
PR c++/38648
	* typeck.c (cp_build_modify_expr): Check for NULL current_function_decl.

	* g++.dg/expr/string-1.C: New test.
	* g++.dg/expr/string-2.C: New test.

From-SVN: r143245
2009-01-10 12:49:04 +01:00
Andrew Pinski d67a3e2a7f re PR c++/36695 (Value-initialization of reference type is allowed.)
PR c++/36695
	* typeck2.c (build_functional_cast): Check for reference type and NULL
	PARMS.
                                                                                                                                         
	* g++.dg/ext/complex4.C: New test.
	* g++.dg/ext/complex5.C: New test.
	* g++.dg/init/reference1.C: New test.
	* g++.dg/init/reference2.C: New test.
	* g++.dg/init/reference3.C: New test.

From-SVN: r143244
2009-01-10 12:48:06 +01:00
GCC Administrator 56dbbf5621 Daily bump.
From-SVN: r143241
2009-01-10 00:16:43 +00:00
Paul Thomas 51df93ba5b re PR fortran/38763 (TRANSFER ICE due to missing EXPR_NULL case)
2009-01-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/38763
	* target-memory.c (encode_derived): Encode NULL.

2009-01-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/38763
	* gfortran.dg/transfer_null_1.f90: New test.

From-SVN: r143238
2009-01-10 00:15:37 +00:00
Paul Thomas 9be3684bdd re PR fortran/38765 (ICE in check_host_association)
2009-01-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/38765
	* resolve.c (check_host_association): Use the symtree name to
	search for a potential contained procedure, since this is the
	name by which it would be referenced.

2009-01-10  Paul Thomas  <pault@gcc.gnu.org>

	PR fortran/38765
	* gfortran.dg/host_assoc_function_6.f90: New test.

From-SVN: r143237
2009-01-10 00:11:18 +00:00
Paul Thomas 8b791297bf check.c: Update copyright year.
2009-01-10  Paul Thomas  <pault@gcc.gnu.org>

	* check.c : Update copyright year.
	* dependency.c : Update copyright year.
	* interface.c : ditto.
	* intrinsic.c : ditto.
	* intrinsic.h : ditto.
	* module.c : ditto.
	* simplify.c : ditto.
	* symbol.c : ditto.
	* trans-stmt.c : ditto.
	* trans-types.c : ditto.

From-SVN: r143236
2009-01-09 23:47:55 +00:00
Steven Bosscher b21b850ec4 regrename.c (regrename_optimize): Fix dumping.
* regrename.c (regrename_optimize): Fix dumping.
	(find_oldest_value_reg): Preserve REG_POINTER.
	(copy_hardreg_forward_1): Likewise.
	process_init_element callers.

From-SVN: r143235
2009-01-09 21:34:22 +00:00
Joel Sherrill 1260bd3a83 target-supports.exp: Add method to determine if the effective target is really a ppc405 after...
2009-01-09  Joel Sherrill <joel.sherrill@oarcorp.com>

	* lib/target-supports.exp: Add method to determine if the effective
	target is really a ppc405 after applying all compile options.
	* gcc.target/powerpc/405-mulhhwu-2.c: Add dg-skip-if not ppc405.
	* gcc.target/powerpc/405-nmachhw-1.c: Likewise.
	* gcc.target/powerpc/405-nmaclhw-1.c: Likewise.
	* gcc.target/powerpc/405-machhwu-1.c: Likewise.
	* gcc.target/powerpc/405-mullhwu-1.c: Likewise.
	* gcc.target/powerpc/405-nmacchw-1.c: Likewise.
	* gcc.target/powerpc/405-mulchwu-1.c: Likewise.
	* gcc.target/powerpc/405-nmachhw-2.c: Likewise.
	* gcc.target/powerpc/405-nmaclhw-2.c: Likewise.
	* gcc.target/powerpc/405-machhwu-2.c: Likewise.
	* gcc.target/powerpc/405-mulhhw-1.c: Likewise.
	* gcc.target/powerpc/405-machhw-1.c: Likewise.
	* gcc.target/powerpc/405-mullhw-1.c: Likewise.
	* gcc.target/powerpc/405-maclhw-1.c: Likewise.
	* gcc.target/powerpc/405-dlmzb-strlen-1.c: Likewise.
	* gcc.target/powerpc/405-mullhwu-2.c: Likewise.
	* gcc.target/powerpc/405-nmacchw-2.c: Likewise.
	* gcc.target/powerpc/405-mulchwu-2.c: Likewise.
	* gcc.target/powerpc/405-mulchw-1.c: Likewise.
	* gcc.target/powerpc/405-maclhwu-1.c: Likewise.
	* gcc.target/powerpc/405-macchw-1.c: Likewise.
	* gcc.target/powerpc/405-mulhhw-2.c: Likewise.
	* gcc.target/powerpc/405-machhw-2.c: Likewise.
	* gcc.target/powerpc/405-mullhw-2.c: Likewise.
	* gcc.target/powerpc/405-maclhw-2.c: Likewise.
	* gcc.target/powerpc/405-macchwu-1.c: Likewise.
	* gcc.target/powerpc/405-mulhhwu-1.c: Likewise.
	* gcc.target/powerpc/405-mulchw-2.c: Likewise.
	* gcc.target/powerpc/405-maclhwu-2.c: Likewise.
	* gcc.target/powerpc/405-macchw-2.c: Likewise.
	* gcc.target/powerpc/405-macchwu-2.c: Likewise.

From-SVN: r143234
2009-01-09 21:12:36 +00:00
Diego Novillo e0e10d3a28 gimple.h (struct gimple_statement_base): Document the restrictions on its use.
* gimple.h (struct gimple_statement_base)<uid>: Document
	the restrictions on its use.
	(gimple_uid): Tidy.
	(gimple_set_uid): Tidy.

From-SVN: r143233
2009-01-09 16:11:25 -05:00
Jakub Jelinek c9da2ae8ab i386.c (ix86_expand_movmem, [...]): Add zero guard even if align_bytes != 0 and count is smaller than size_needed.
* config/i386/i386.c (ix86_expand_movmem, ix86_expand_setmem): Add
	zero guard even if align_bytes != 0 and count is smaller than
	size_needed.

From-SVN: r143229
2009-01-09 21:03:37 +01:00
Vladimir Makarov a174c19c0f re PR rtl-optimization/38495 (ACATS tests cxa4004 cxa4005 cxa4026 fail)
2008-01-09  Vladimir Makarov  <vmakarov@redhat.com>

	PR rtl-optimization/38495
	* ira-emit.c (print_move_list, ira_debug_move_list): New
	functions.
	(add_range_and_copies_from_move_list): Print all added ranges.
	Add ranges to memory optimized destination.

From-SVN: r143214
2009-01-09 17:52:03 +00:00
Steve Ellcey 32dbfb3c17 * typeck.c (cp_build_unary_op): Check for ERROR_MARK.
From-SVN: r143212
2009-01-09 17:29:34 +00:00
Jakub Jelinek 6f6278ad2a re PR target/38686 (Bootstrap fails on i686-pc-linux-gnu with --with-arch=pentium-m)
PR target/38686
	PR target/38708
	* config/i386/i386.c (override_options): Reject
	-mstringop-strategy=rep_8byte with -m32.
	(ix86_expand_movmem): For size_needed == 1 set epilogue_size_needed
	to 1.  Do count comparison against epilogue_size_needed at compile
	time even when count_exp was constant forced into register.  For
	size_needed don't jump to epilogue, instead just avoid aligning
	and invoke the body algorithm.  If need_zero_guard, add zero guard
	even if count is non-zero, but smaller than size_needed + number of
	bytes that could be stored for alignment.
	(ix86_expand_setmem): For size_needed == 1 set epilogue_size_needed
	to 1.  If need_zero_guard, add zero guard even if count is non-zero,
	but smaller than size_needed + number of bytes that could be stored
	for alignment.  Compare size_needed with epilogue_size_needed instead
	of desired_align - align, don't adjust size_needed, pass
	epilogue_size_needed to the epilogue expanders.

From-SVN: r143211
2009-01-09 18:12:40 +01:00
Jakub Jelinek aee5c3ed8c re PR c++/35335 (Broken diagnostic: 'expr_stmt' not supported by dump_expr)
PR c++/35335
	* error.c (dump_expr): Handle EXPR_STMT like BIND_EXPR.

	* g++.dg/other/error31.C: New testcase.

From-SVN: r143210
2009-01-09 17:51:55 +01:00
Jakub Jelinek 260fda3d0a re PR c/35742 (Broken diagnostic: 'goto_expr' not supported by pp_c_expression)
PR c/35742
	* c-pretty-print.c (pp_c_expression): Handle GOTO_EXPR like
	BIND_EXPR.

	* gcc.dg/pr35742.c: New test.

From-SVN: r143209
2009-01-09 17:46:47 +01:00
John David Anglin 67b846fa2f pa.c (last_address): Change to unsigned.
* pa.c (last_address): Change to unsigned.
	(update_total_code_bytes): Change argument to unsigned.  Don't
	check if insn addresses are set.
	(pa_output_function_epilogue): Set last_address to UINT_MAX if insn
	addresses are not set.
	(pa_asm_output_mi_thunk): Handle wrap when updating last_address.

From-SVN: r143207
2009-01-09 15:19:08 +00:00
John F. Carr 73f971b716 re PR c++/37877 (Invalid "invalid use of static" error)
PR c++/37877
	* parser.c (cp_parser_class_specifier): Clear
	parser->in_unbraced_linkage_specification_p while parsing class
	specifiers.

	* g++.dg/parse/linkage3.C: New test.

From-SVN: r143206
2009-01-09 15:45:44 +01:00
Nick Clifton 91c82473ac symbian.c: Replace uses of DECL_INLINE with DECL_DECLARED_INLINE_P.
* config/sh/symbian.c: Replace uses of DECL_INLINE with
        DECL_DECLARED_INLINE_P.

From-SVN: r143205
2009-01-09 14:19:30 +00:00
Jakub Jelinek 0a49e5c295 re PR middle-end/38347 (gfortran.dg/alloc_comp_constructor_1.f90 ICE with -O2 -fdefault-integer-8)
PR middle-end/38347
	* dojump.c (do_jump_by_parts_zero_rtx): Use mode instead of
	GET_MODE (op0) in operand_subword_force calls.

From-SVN: r143204
2009-01-09 14:43:14 +01:00
Jakub Jelinek 060481a031 Update Copyright year.
From-SVN: r143203
2009-01-09 14:41:42 +01:00
Jakub Jelinek 4017e262b6 re PR middle-end/38771 (error: non-trivial conversion in unary operation)
PR middle-end/38771
	* fold-const.c (fold_unary): For COMPOUND_EXPR and COND_EXPR,
	fold_convert arg0 operands to TREE_TYPE (op0) first.

	* gcc.c-torture/compile/pr38771.c: New test.

From-SVN: r143202
2009-01-09 14:41:08 +01:00
GCC Administrator 76601ca966 Daily bump.
From-SVN: r143197
2009-01-09 00:16:40 +00:00
Vladimir Makarov 7cd063564b params.def (ira-max-conflict-table-size): Decrease default value to 1000.
2009-01-08  Vladimir Makarov  <vmakarov@redhat.com>

	* params.def (ira-max-conflict-table-size): Decrease default value
	to 1000.

From-SVN: r143193
2009-01-08 20:54:29 +00:00
Nathan Froyd bef21698fd * gcc.dg/pr34856.c: Ignore irrelevant warning.
From-SVN: r143191
2009-01-08 18:27:44 +00:00
Mark Mitchell 742e5eb4f8 sibcall-3.c: XFAIL for Thumb.
* gcc.dg/sibcall-3.c: XFAIL for Thumb.
	* gcc.dg/sibcall-4.c: Likewise.

From-SVN: r143189
2009-01-08 17:56:52 +00:00
Jakub Jelinek 96867bbd6f re PR tree-optimization/37031 (ICE for h264ref in gather_interchange_stats with -ftree-loop-linear)
PR tree-optimization/37031
	* lambda-code.c (lambda_collect_parameters): Call pointer_set_destroy
	on parameter_set.
	(build_access_matrix): Reserve correct size for AM_MATRIX vector,
	allocate it using gc instead of heap, use VEC_quick_push instead of
	VEC_safe_push.
	* graphite.c (build_access_matrix): Allocate AM_MATRIX vector using gc
	instead of heap, use VEC_quick_push instead of VEC_safe_push.
	* tree-data-ref.h (struct access_matrix): Change matrix to gc
	allocated vector from heap allocated.
	* lambda.h: Add DEF_VEC_ALLOC_P for gc allocated lambda_vector.
	* tree-loop-linear.c (linear_transform_loops): Allocate nest
	vector only after perfect_loop_nest_depth call.

From-SVN: r143188
2009-01-08 17:01:42 +01:00
Sebastian Pop 68f61c3d95 re PR middle-end/38559 ([graphite] ICE :in build2_stat, at tree.c:3293)
2009-01-07  Sebastian Pop  <sebastian.pop@amd.com>
	    Jan Sjodin  <jan.sjodin@amd.com>

	PR tree-optimization/38559
	* testsuite/gcc.dg/graphite/pr38559.c: New.

	* graphite.c (debug_value, copy_constraint,
	swap_constraint_variables, scale_constraint_variable, ): New.
	(get_lower_bound, get_upper_bound): Removed.
	(graphite_trans_bb_strip_mine): Clean up this code that works
	only for constant number of iterations.  Fully copy upper and
	lower bound constraints, not only the constant part of them.
	* graphite.h (debug_value): Declared.


Co-Authored-By: Jan Sjodin <jan.sjodin@amd.com>

From-SVN: r143187
2009-01-08 14:14:41 +00:00
Ira Rosen 82567e3386 re PR tree-optimization/37194 (Autovectorization of small constant iteration loop degrades performance)
PR tree-optimization/37194
	* tree-vect-transform.c (vect_estimate_min_profitable_iters):
	Don't add the cost of cost model guard in prologue to scalar 
	outside cost in case of known number of iterations.

From-SVN: r143183
2009-01-08 07:59:40 +00:00
Benjamin Kosnik 9982752346 re PR libstdc++/36801 (config/cpu/generic/atomicity_mutex/atomicity.h incorrectly relies on global constructor ordering)
2009-01-07  Benjamin Kosnik  <bkoz@redhat.com>
	    Jonathan Larmour  <jifl@eCosCentric.com>

	PR libstdc++/36801
	* config/cpu/generic/atomicity_mutex/atomicity.h (get_atomic_mutex):
	New.
	(__gnu_cxx::__exchange_and_add): Use it.
	* src/atomic.cc (get_atomic_mutex): New.
	* src/debug.cc (get_safe_base_mutex): New.
	* src/locale.cc (get_locale_cache_mutex): New.
	* src/mt_allocator.cc (get_freelist): New.
	(get_freelist_mutex): New.
	* src/pool_allocator.cc (get_palloc_mutex): New.
	* include/std/mutex (__once_functor_lock): To
	(__get_once_functor_lock): ...this.
	* src/mutex.cc (__once_mutex): Don't export, use
	(get_once_mutex): ...this.
	* config/abi/pre/gnu.ver: Adjust exports.

From-SVN: r143182
2009-01-08 03:14:24 +00:00
Jakub Jelinek f5651df1ab re PR c++/38725 (ICE with goto)
PR c++/38725
	* semantics.c (finish_goto_stmt): Convert destination to
	void *.

	* g++.dg/ext/label11.C: New test.

From-SVN: r143177
2009-01-08 01:23:48 +01:00
GCC Administrator 78415d7d4c Daily bump.
From-SVN: r143175
2009-01-08 00:17:07 +00:00
Joseph Myers 8a0963c327 target-supports.exp (check_weak_override_available): New.
* lib/target-supports.exp (check_weak_override_available): New.
	* lib/target-supports-dg.exp (dg-require-weak-override): New.
	* gcc.dg/tree-ssa/pr27781.c, g++.dg/eh/weak1.C: Use
	dg-require-weak-override.

From-SVN: r143172
2009-01-07 23:53:03 +00:00
Nathan Froyd 7da13f1d80 rs6000.c (rs6000_legitimize_address): Check for non-word-aligned REG+CONST addressing.
gcc/

	* config/rs6000/rs6000.c (rs6000_legitimize_address): Check for
	non-word-aligned REG+CONST addressing.

gcc/testsuite/

	* gcc.c-torture/compile/20090107-1.c: New test.


Co-Authored-By: Alan Modra <amodra@bigpond.net.au>

From-SVN: r143171
2009-01-07 23:21:26 +00:00
Jakub Jelinek c4bca01b27 re PR libstdc++/38732 (Openoffice.org segfaults with runtime libs built from GCC trunk)
PR libstdc++/38732
	* libsupc++/unwind-cxx.h (__cxxabiv1::__cxa_exception): Remove
	referenceCount field again.
	(__cxxabiv1::__cxa_refcounted_exception): New struct.
	(__cxxabiv1::__get_refcounted_exception_header_from_obj,
	__cxxabiv1::__get_refcounted_exception_header_from_ue): New static
	inline functions.
	* libsupc++/eh_alloc.cc (__cxxabiv1::__cxa_allocate_exception,
	__cxxabiv1::__cxa_free_exception): Use __cxa_refcounted_exception
	instead of __cxa_exception.
	* libsupc++/eh_throw.cc (__gxx_exception_cleanup,
	__cxxabiv1::__cxa_throw): Likewise.
	* libsupc++/eh_ptr.cc (std::rethrow_exception,
	std::__exception_ptr::exception_ptr::_M_addref,
	std::__exception_ptr::exception_ptr::_M_release,
	__gxx_dependent_exception_cleanup): Likewise.
	* testsuite/18_support/exception/38732.cc: New test.

From-SVN: r143170
2009-01-07 23:50:42 +01:00
Jakub Jelinek 1f93f6871e re PR libstdc++/38092 (libstdc++ doesn't build with GNU ld 2.19 and Sun as: no .symver support)
PR libstdc++/38092
	* acinclude.m4 (HAVE_AS_SYMVER_DIRECTIVE): New test.
	* src/compatibility.cc: Don't use .symver directives if
	_GLIBCXX_HAVE_AS_SYMVER_DIRECTIVE is not defined.
	* config.h.in: Regenerated.
	* configure: Likewise.

From-SVN: r143169
2009-01-07 23:49:29 +01:00
Jakub Jelinek 876080ffb7 re PR libgomp/38086 (libgomp fails to build if assembler doesn't support .symver)
PR libgomp/38086
	* acinclude.m4 (HAVE_AS_SYMVER_DIRECTIVE): New check.
	* libgomp.h (LIBGOMP_GNU_SYMBOL_VERSIONING): Undefine if
	HAVE_AS_SYMVER_DIRECTIVE is not defined.
	* configure: Regenerated.
	* config.h.in: Likewise.

From-SVN: r143168
2009-01-07 23:48:03 +01:00
Uros Bizjak c0f645750c re PR target/38706 (../../../../src/libstdc++-v3/src/strstream.cc:419: internal compiler error: Segmentation fault)
PR target/38706
	* config/alpha/alpha.c (alpha_end_function): For TARGET_ABI_OSF, call
	free_after_compilation when outputting a thunk.
	(alpha_output_mi_thunk_osf): Assert that we are processing a thunk.
	Do not call free_after_compilation here.

testsuite/ChangeLog:

	PR target/38706
	* g++.dg/other/pr38706.C: New test.

From-SVN: r143167
2009-01-07 22:56:32 +01:00
Jason Merrill ffaf1e05dd re PR c++/35297 (Compiling error with variadic template with fixed parameter with default type.)
PR c++/35297
        PR c++/35477
        PR c++/35784
        PR c++/36846
        PR c++/38276
        * pt.c (check_default_tmpl_args): Don't complain about
        out-of-order parameter packs in the enclosing class
        or parameter packs after default args.
        (coerce_template_parms): If we have more than one
        parameter pack, don't flatten argument packs.
        (template_args_equal): Handle argument packs.
        (comp_template_args): Don't flatten argument packs.
        (check_instantiated_arg): Split out from...
        (check_instantiated_args): Here.  Handle arg packs.
        (convert_template_argument): Just check that nontype argument
        packs have the right type.

From-SVN: r143166
2009-01-07 15:43:01 -05:00
Janis Johnson 30af0edbf4 target-supports-dg.exp (current_compiler_flags): New.
* lib/target-supports-dg.exp (current_compiler_flags): New.
	(check-flags): Use it; do not access dg-test local variables.
	(dg-skip-if): Do not access dg-test local variables.
	(dg-xfail-run-if): Ditto.
	(dg-shouldfail): Ditto.
	* gcc.test-framework/test-framework.exp
	(check_effective_target_def_nocache): New.
	* gcc.test-framework/test-framework.awk: Handle scan tests.
	* gcc.test-framework/dg-do-run-xrif-nocache-exp-XF.c: New test.
	* gcc.test-framework/dg-error-nocache-exp-P.c: New test.
	* gcc.test-framework/dg-nocache-scanasm-exp-XF.c: New test.
	* gcc.test-framework/dg-warning-nocache-exp-P.c: New test.
	* gcc.test-framework/dg-nocache-sif-exp-P.c: New test.
	* gcc.test-framework/dg-nocache-sif-exp-U.c: New test.
	* gcc.test-framework/dg-nocache-xif-exp-P.c: New test.
	* gcc.test-framework/dg-do-run-sft-nocache-exp-P.c: New test.
	* gcc.test-framework/dg-nocache-xif-exp-XP.c: New test.

From-SVN: r143165
2009-01-07 18:31:27 +00:00
Uros Bizjak 301b6a4efe i386.c (ix86_target_string): Use ARRAY_SIZE.
* config/i386/i386.c (ix86_target_string): Use ARRAY_SIZE.
	(ix86_target_string): Ditto.
	(ix86_valid_target_attribute_inner_p): Ditto.

From-SVN: r143164
2009-01-07 19:26:39 +01:00
Janis Johnson 5179082184 * g++.dg/torture/pr38586.C: Ignore a possible warning.
From-SVN: r143163
2009-01-07 17:50:45 +00:00
Janis Johnson 6286c07888 * lib/target-supports-dg.exp (check_test_flags): Delete.
From-SVN: r143162
2009-01-07 17:48:28 +00:00
Jason Merrill 30471e01ad * cp-demangle.c (d_expression): Remove mangling for zero-op casts.
From-SVN: r143161
2009-01-07 12:08:20 -05:00