1. 26 Aug, 2004 12 commits
  2. 25 Aug, 2004 28 commits
    • c-decl.c (grokparm): New function. · c34be55e
      [gcc/ChangeLog]
      2004-08-25  Ziemowit Laski  <zlaski@apple.com>
      
              * c-decl.c (grokparm): New function.
              * c-tree.h (grokparm): New prototype.
      
      From-SVN: r86587
      Ziemowit Laski committed
    • PR libstdc++/17038 (partial) · cb793089
      2004-08-25  Paolo Carlini  <pcarlini@suse.de>
      
      	PR libstdc++/17038 (partial)
      	* include/bits/locale_facets.tcc (time_put<>::do_put): Increase
      	__maxlen to 128.
      	* include/bits/locale_facets.h (class __timepunct): Add FIXME
      	comment about _M_put.
      	* config/locale/generic/time_members.cc (_M_put): Always null
      	terminate __s.
      	* config/locale/gnu/time_members.cc (_M_put): Likewise.
      	* testsuite/22_locale/time_put/put/char/17038.cc: New.
      	* testsuite/22_locale/time_put/put/wchar_t/17038.cc: New.
      
      From-SVN: r86586
      Paolo Carlini committed
    • expr.c (gfc_check_assign): Add comment. · 6d1c50cc
      fortran/
      * expr.c (gfc_check_assign): Add comment. Add new warning.
      * trans-expr.c (gfc_conv_function_call): Correctly dereference
       result of pointer valued function when not in pointer assignment.
      
      testsuite/
      * gfortran.dg/assignment_1.f90: New test.
      
      From-SVN: r86585
      Tobias Schlüter committed
    • tree-ssa-operands.h (struct ssa_operand_iterator_d): New. · 4c124b4c
      
      2004-08-25  Andrew MacLeod  <amacleod@redhat.com>
      
      	* tree-ssa-operands.h (struct ssa_operand_iterator_d): New.  SSA operand
      	iterator controlling structure.
      	(SSA_OP_USE, SSA_OP_DEF, SSA_OP_VUSE, SSA_OP_VMAYUSE, SSA_OP_VMAYDEF,
      	SSA_OP_VMUSTDEF, SSA_OP_VIRTUAL_USES, SSA_OP_VIRTUAL_DEFS,
      	SSA_OP_ALL_USES, SSA_OP_ALL_DEFS, SSA_OP_ALL_OPERANDS): New.  Operand
      	iterator flags.
      	(FOR_EACH_SSA_TREE_OPERAND): New.  Iterate over operands as trees.
      	(FOR_EACH_SSA_USE_OPERAND): New.  Iterate over operands as uses.
      	(FOR_EACH_SSA_DEF_OPERAND): New.  Iterate over operands as defs.
      	(FOR_EACH_SSA_MAYDEF_OPERAND): New.  Iterate over V_MAY_DEFs.
      	* tree-ssa-operands.c (NULL_DEF_OPERAND_P, NULL_USE_OPERAND_P): New.
      	Empty operand pointers.
      	* tree-flow-inline.h (op_iter_done): New.  Return true if finished.
      	(op_iter_next_use): New.  Return next use_operand_p.
      	(op_iter_next_def): New.  Return next def_operand_p.
      	(op_iter_next_tree): New.  Return next operands as a tree.
      	(op_iter_init): New.  Initialize an iterator structure.
      	(op_iter_init_use): New.  Initialize structure and get the first use.
      	(op_iter_init_def): New.  Initialize structure and get the first def.
      	(op_iter_init_tree): New.  Initialize structure and get the first tree.
      	(op_iter_next_maydef): New.  Return next V_MAY_DEF operands.
      	(op_iter_init_maydef): New.  Initialize structure and get the first
      	V_MAY_DEF operands.
      	* tree-cfg.c (tree_duplicate_bb): Use new operand iterator.
      	* tree-dfa.c (compute_immediate_uses_for_stmt,
      	redirect_immediate_uses): Use new operand iterator.
      	(v_may_defs_disappeared_p, v_must_defs_disappeared_p): Delete.
      	(mark_new_vars_to_rename): Use new operand iterator.  Count virtual
      	operands instead of using *_disappeared_p routines.
      	* tree-into-ssa.c (mark_def_sites, ssa_mark_def_sites, rewrite_stmt,
      	ssa_rewrite_stmt): Use new operand iterator.
      	* tree-outof-ssa.c (check_replaceable, find_replaceable_in_bb,
      	rewrite_trees): Use new operand iterator.
      	* tree-pretty-print.c (dump_vops): Use new operand iterator.
      	* tree-sra.c (mark_all_v_defs): Use new operand iterator.
      	* tree-ssa-alias.c (compute_points_to_and_addr_escape,
      	dump_points_to_info): Use new operand iterator.
      	* tree-ssa-ccp.c (cp_lattice_meet, visit_stmt, initialize,
      	replace_uses_in, replace_vuse_in, likely_value, set_rhs): Use new
      	operand iterator.
      	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary,
      	propagate_necessity): Use new operand iterator.
      	* tree-ssa-dom.c (cprop_into_stmt, optimize_stmt): Use operand iterator.
      	(register_definitions_for_stmt): Use new operand iterator.  Take stmt as
      	a parameter instead of a stmt_ann_t.
      	* tree-ssa-live.c (create_ssa_var_map, calculate_live_on_entry,
      	build_tree_conflict_graph): Use new operand iterator.
      	* tree-ssa-loop-im.c (determine_max_movement, single_reachable_address,
      	rewrite_mem_refs): Use new operand iterator.
      	* tree-ssa-loop-manip.c (find_uses_to_rename_stmt,
      	check_loop_closed_ssa_use): Use new operand iterator.
      	* tree-ssa.c (verify_ssa, replace_immediate_uses): Use operand iterator.
      	* tree-ssanames.c (release_defs): Use new operand iterator.
      	* tree-vectorizer.c (vect_create_data_ref): Use new operand iterator.
      
      From-SVN: r86583
      Andrew MacLeod committed
    • config-lang.in: Remove dead commented line. · 75101feb
      	* config-lang.in: Remove dead commented line.
      	* module.c: Replace g95 with gfortran in comment.
      
      From-SVN: r86582
      Paul Brook committed
    • re PR fortran/17190 (MPFR semantics for mpfr_get_z_exp changed) · 9ca2b0db
      	PR fortran/17190
      	* arith.c (gfc_mpfr_to_mpz): Workaround mpfr bug.
      
      From-SVN: r86581
      Paul Brook committed
    • * g++.dg/template/repo3.C: New test. · ef79d4c2
      From-SVN: r86578
      Adam Nemet committed
    • tlink.c (initial_cwd): New variable. · 4185f1ce
      	* tlink.c (initial_cwd): New variable.
      	(tlink_init): Initialize it.
      	(recompile_files): Use tlink_execute() instead of system().  Don't
      	duplicate verbose output of collect_execute.  Restore initial_cwd.
      	Update comment before the function.
      
      From-SVN: r86577
      Adam Nemet committed
    • re PR middle-end/16693 (Bitwise AND is lost when used within a cast to an enum… · d0c5c9b1
      re PR middle-end/16693 (Bitwise AND is lost when used within a cast to an enum of the same precision)
      
      
      	PR middle-end/16693
      	PR tree-optimization/16372
      	* decl.c (finish_enum): Make the precision of the enumerated type
      	the same width as the underlying integer type.
      
      	* g++.dg/opt/pr16372-1.C: New test case.
      	* g++.dg/opt/pr16693-1.C: New test case.
      	* g++.dg/opt/pr16693-2.C: New test case.
      
      From-SVN: r86576
      Roger Sayle committed
    • c-typeck.c (build_c_cast): In ObjC... · 700686fa
      [gcc/ChangeLog]
      2004-08-25  Ziemowit Laski  <zlaski@apple.com>
      
             * c-typeck.c (build_c_cast): In ObjC, always preserve (and silently
             accept) a cast from one Objective-C pointer type to another.
      
      [gcc/testsuite/ChangeLog]
      2004-08-25  Ziemowit Laski  <zlaski@apple.com>
      
             * objc.dg/proto-lossage-4.m: New test.
      
      From-SVN: r86574
      Ziemowit Laski committed
    • install.texi: Document that libstdc++-v3 requires now automake 1.9.1. · 7fb654ef
      2004-08-25  Paolo Carlini  <pcarlini@suse.de>
      
      	* doc/install.texi: Document that libstdc++-v3 requires
      	now automake 1.9.1.
      
      From-SVN: r86572
      Paolo Carlini committed
    • re PR c++/17155 (Another link problem with function-local classes) · 6dc36fed
      	PR c++/17155
      	* lex.c (build_lang_decl): Set DECL_NO_STATIC_CHAIN for all C++
      	functions.
      
      	PR c++/17155
      	* g++.dg/inherit/local2.C: New test.
      
      From-SVN: r86571
      Mark Mitchell committed
    • Add more details to hot/cold partitioning comments and documentation. · 8e8d5162
      2004-08-25  Caroline Tice  <ctice@apple.com>
      
              * bb-reorder.c (partition_hot_cold_basic_blocks):  Add more details
              to comments at start of function.
              * cfgbuild.c (make_edges):  Add more details to hot/cold partitioning
              comment.
              * cfgcleanup.c (try_simplify_condjump, try_forward_edges,
              merge_blocks_move_predecessor_nojumps,
              merge_blocks_move_successor_nojumps, merge_blocks_move,
              try_crossjump_to_edge, try_crossjump_bb): Likewise.
              * cfglayout.c (fixup_reorder_chain): Likewise.
              * cfgrtl.c (rtl_can_merge_blocks, try_redirect_by_replacing_jump,
              cfg_layout_can_merge_blocks_p):  Likewise.
              * ifcvt.c (find_if_case_1, find_if_case_2): Likewise.
              * passes.c (rest_of_compilation): Update comments for calling
              optimization that partitions hot/cold basic blocks.
              * doc/invoke.texi:  Update documentation of
              freorder-blocks-and-partition flag.
      
      From-SVN: r86570
      Caroline Tice committed
    • mips.md (reg): Renamed mode attribute from ccreg. · 41a21e1d
      	* config/mips/mips.md (reg): Renamed mode attribute from ccreg.
      	(*mov*_on_*): Adjust accordingly.  Add an explicit MOVECC: prefix.
      
      From-SVN: r86568
      Richard Sandiford committed
    • * mangle.c (get_identifier_nocopy): Add cast. · 837869a5
      From-SVN: r86567
      Mark Mitchell committed
    • mips.md (any_shift): New code macro. · e5f14571
      	* config/mips/mips.md (any_shift): New code macro.
      	(optab, insn): New code attributes.
      	({ashl,ashr,lshr}[sd]i3): Redefine using :GPR and any_shift.
      	Use the standard rather than internal patterns for the MIPS16
      	double-shift optimization.
      	(*{ashl,ashr,lshr}[sd]i3): New names for the non-mips16 shift patterns.
      	Redefine using :GPR and any_shift.
      	(*{ashl,ashr,lshr}si3_extend): Generalize ashlsi3_internal1_extend
      	to cover all three shifts.
      	(*{ashl,ashr,lshr}si3_mips16): New names for the mips16 SImode shifts.
      	Redefine using any_shift.  Use :GPR and any_shift to combine splitters.
      	(*{ashl,ashr,lshr}di3_mips16): New names for the mips16 DImode shifts.
      
      From-SVN: r86566
      Richard Sandiford committed
    • config.gcc (arm*-*-symbianelf*): Add t-symbian Makefile fragment. · 769cf6cd
      	* config.gcc (arm*-*-symbianelf*): Add t-symbian Makefile
      	fragment.
      	* config/arm/bpabi.h (RENAME_LIBRARY_SET): Fix typo.
      	(SUBTARGET_EXTRA_ASM_SPEC): Pass -meabi=3 to the assembler.
      	* config/arm/symbian.h (SUBTARGET_CPU_DEFAULT): Assume ARMV5
      	architecture.
      	(SUBTARGET_ASM_FLOAT_SPEC): Default to -mfpu=vfp for hard-float
      	configurations.
      	* config/arm/t-symbian: New file.
      
      From-SVN: r86565
      Mark Mitchell committed
    • gimplify.c (lookup_tmp_var): Separate temporaries when not optimizing. · bbbb79d4
      	* gimplify.c (lookup_tmp_var): Separate temporaries when not
      	optimizing.
      
      From-SVN: r86563
      Geoffrey Keating committed
    • PR libstdc++/17005 (fix for HP-UX 11.11) · d711cf67
      	PR libstdc++/17005 (fix for HP-UX 11.11)
      	* config.gcc (hppa*-*-*): Move MASK_BIG_SWITCH to target_cpu_default2.
      	(hppa*-*-hpux*): Consolidate hppa1.0-*-* code.  Rework handling of
      	tm_file including pa-hpux1010.h or pa-hpux1111.h when appropriate.
      	* config/pa/pa-hpux1010.h, config/pa/pa-hpux1111.h: New files.
      	* config/pa/pa-hpux.h (TARGET_HPUX): Define.
      	(LINK_SPEC): Handle march=1.0 option.
      	* config/pa/pa-hpux10.h (TARGET_OS_CPP_BUILTINS): Predefine _XOPEN_UNIX
      	and _XOPEN_SOURCE_EXTENDED for UNIX 95.
      	(SUBTARGET_OPTIONS): New define.
      	(LINK_SPEC): Handle march=1.0 option.
      	(STARTFILE_SPEC): New define.
      	* config/pa/pa-hpux11.h (TARGET_OS_CPP_BUILTINS): Predefine _XOPEN_UNIX
      	and _XOPEN_SOURCE_EXTENDED for UNIX 95.  Additionally, predefine
      	_INCLUDE__STDC_A1_SOURCE and _INCLUDE_XOPEN_SOURCE_500 for UNIX 98.
      	(SUBTARGET_OPTIONS): New define.
      	(LINK_SPEC): Handle march=1.0 option.
      	(STARTFILE_SPEC): New define.
      	* config/pa/pa.c (override_options): Add code to process -munix= option.
      	* config/pa/pa.h (pa_unix_string, flag_pa_unix): Declare.
      	(TARGET_HPUX, TARGET_HPUX_10_10, TARGET_HPUX_11_11): Provide default
      	defines.
      	(TARGET_OPTIONS): Add SUBTARGET_OPTIONS to option list.
      	(SUBTARGET_OPTIONS): Provide default define.
      	* config/pa/pa64-hpux.h (STANDARD_STARTFILE_PREFIX_1,
      	STANDARD_STARTFILE_PREFIX_2): New defines.
      	(STARTFILE_SPEC): Provide unix95.o or unix98.o startfiles as necessary.
      	(ENDFILE_SPEC): Use %O.
      	* doc/install.texi (hppa*-*-hpux*): Reword paragraph on -g and gas.
      	Mention issue caused by changing namespace and runtime to UNIX 95/98.
      	* doc/invoke.texi (HPPA options): Move misplaced text to FRV options.
      	Document -munix=std option.
      
      From-SVN: r86561
      John David Anglin committed
    • cp-tree.h (mangle_type): Remove. · 2b8fe4a0
      	* cp-tree.h (mangle_type): Remove.
      	* mangle.c (globals): GTY it.
      	(mangle_obstack): New variable.
      	(name_obstack): Likewise.
      	(name_base): Likewise.
      	(write_char): Adjust accordingly.
      	(write_chars): Likewise.
      	(write_string): Likewise.
      	(start_mangling): Initialize G.substitutions only one.  Add
      	ident_p parameter.
      	(finish_mangling): Use VARRAY_CLEAR to reclaim
      	storage in G.substitutions.  Use obstack_finish.
      	(init_mangle): Adjust for changes to variable names above.
      	Initialize G.substitutions.
      	(mangle_decl_string): Adjust call to start_mangling.
      	(get_identifier_nocopy): New function.
      	(mangle_decl): Use it.
      	(mangle_type_string): Adjust call to start_mangling.
      	(mangle_special_for_type): Likewise.
      	(mangle_vtt_for_type): Likewise.
      	(mangle_ctor_vtbl_for_type): Likewise.
      	(mangle_thunk): Likewise.
      	(mangle_guard_variable): Likewise.
      	(mangle_ref_init_variable): Likewise.
      
      From-SVN: r86559
      Mark Mitchell committed
    • re PR fortran/17144 (Not Implemented: Character string array constructors /… · 40f20186
      re PR fortran/17144 (Not Implemented: Character string array constructors / Assignment to char array)
      
      	PR fortran/17144
      	* trans-array.c (gfc_trans_allocate_temp_array): Remove
      	string_length argument.
      	(gfc_trans_array_ctor_element): New function.
      	(gfc_trans_array_constructor_subarray): Use it.
      	(gfc_trans_array_constructor_value): Ditto.  Handle constant
      	character arrays.
      	(get_array_ctor_var_strlen, get_array_ctor_strlen): New functions.
      	(gfc_trans_array_constructor): Use them.
      	(gfc_add_loop_ss_code): Update to new gfc_ss layout.
      	(gfc_conv_ss_descriptor): Remember section string length.
      	(gfc_conv_scalarized_array_ref): Ditto.  Remove dead code.
      	(gfc_conv_resolve_dependencies): Update to new gfc_ss layout.
      	(gfc_conv_expr_descriptor): Ditto.
      	(gfc_conv_loop_setup): Ditto.  Spelling fixes.
      	* trans-array.h (gfc_trans_allocate_temp_array): Update prototype.
      	* trans-const.c (gfc_conv_constant):  Update to new gfc_ss layout.
      	* trans-expr.c (gfc_conv_component_ref): Turn error into ICE.
      	(gfc_conv_variable): Set string_length from section.
      	(gfc_conv_function_call): Remove extra argument.
      	(gfc_conv_expr, gfc_conv_expr_reference): Update to new gfc_ss layout.
      	* trans-types.c (gfc_get_character_type_len): New function.
      	(gfc_get_character_type): Use it.
      	(gfc_get_dtype): Return zero for internal types.
      	* trans-types.h (gfc_get_character_type_len): Add prototype.
      	* trans.h (struct gfc_ss): Move string_length out of union.
      testsuite/
      	* gfortran.dg/string_ctor_1.f90: New test.
      
      From-SVN: r86558
      Paul Brook committed
    • trans.h (build2_v, build3_v): New macros. · 923ab88c
      * trans.h (build2_v, build3_v): New macros.
      (build_v): Remove.
      * f95-lang.c (gfc_truthvalue_conversion): Use build2 instead of
      build.
      * trans-array.c (gfc_conv_descriptor_data,
      gfc_conv_descriptor_offset, gfc_conv_descriptor_dimension,
      gfc_conv_descriptor_stride, gfc_conv_descriptor_lbound,
      gfc_conv_descriptor_ubound, gfc_trans_allocate_array_storage,
      gfc_trans_allocate_temp_array,
      gfc_trans_array_constructor_subarray,
      gfc_trans_array_constructor_value, gfc_conv_array_index_ref,
      gfc_trans_array_bound_check, gfc_conv_array_index_offset,
      gfc_conv_scalarized_array_ref, gfc_conv_array_ref,
      gfc_conv_array_ref, gfc_trans_preloop_setup,
      gfc_trans_scalarized_loop_end, gfc_conv_ss_startstride,
      gfc_conv_loop_setup, gfc_array_init_size,
      gfc_conv_array_initializer, gfc_trans_array_bounds,
      gfc_trans_auto_array_allocation, gfc_trans_dummy_array_bias,
      gfc_conv_expr_descriptor, gfc_conv_array_parameter,
      gfc_trans_deferred_array): Use buildN and buildN_v macros instead
      of build and build_v as appropriate.
      * trans-common.c (create_common): Same.
      * trans-decl.c (gfc_trans_auto_character_variable,
      gfc_trans_entry_master_switch, gfc_generate_function_code): Same.
      * trans-expr.c (gfc_conv_expr_present, gfc_conv_substring,
      gfc_conv_component_ref, gfc_conv_unary_op, gfc_conv_powi,
      gfc_conv_cst_int_power, gfc_conv_string_tmp, gfc_conv_concat_op,
      gfc_conv_expr_op, gfc_conv_function_call,
      gfc_trans_structure_assign): Same.
      * trans-intrinsic.c (build_fixbound_expr, build_round_expr,
      gfc_conv_intrinsic_aint, gfc_conv_intrinsic_bound,
      gfc_conv_intrinsic_cmplx, gfc_conv_intrinsic_mod,
      gfc_conv_intrinsic_dim, gfc_conv_intrinsic_sign,
      gfc_conv_intrinsic_dprod, gfc_conv_intrinsic_minmax,
      gfc_conv_intrinsic_anyall, gfc_conv_intrinsic_count,
      gfc_conv_intrinsic_arith, gfc_conv_intrinsic_minmaxloc,
      gfc_conv_intrinsic_minmaxval, gfc_conv_intrinsic_btest,
      gfc_conv_intrinsic_bitop, gfc_conv_intrinsic_singlebitop,
      gfc_conv_intrinsic_ibits, gfc_conv_intrinsic_ishft,
      gfc_conv_intrinsic_merge, gfc_conv_intrinsic_strcmp,
      gfc_conv_allocated, gfc_conv_associated, prepare_arg_info,
      gfc_conv_intrinsic_spacing, gfc_conv_intrinsic_rrspacing,
      gfc_conv_intrinsic_trim, gfc_conv_intrinsic_repeat,
      gfc_conv_intrinsic_iargc): Same.
      * trans-io.c (set_parameter_value, set_parameter_ref, set_string,
      set_flag, add_case, io_result, transfer_namelist_element,
      transfer_expr): Same.
      * trans-stmt.c (gfc_trans_goto, gfc_trans_return, gfc_trans_if_1,
      gfc_trans_arithmetic_if, gfc_trans_do, gfc_trans_do_while,
      gfc_trans_integer_select, gfc_trans_logical_select,
      gfc_trans_character_select, gfc_trans_forall_loop,
      gfc_trans_nested_forall_loop, gfc_do_allocate,
      generate_loop_for_temp_to_lhs, generate_loop_for_rhs_to_temp,
      compute_inner_temp_size, compute_overall_iter_number,
      allocate_temp_for_forall_nest, gfc_trans_pointer_assign_need_temp,
      gfc_trans_forall_1, gfc_evaluate_where_mask,
      gfc_trans_where_assign, gfc_trans_allocate): Same.
      * trans-types.c (gfc_get_dtype, gfc_get_array_type_bounds): Same.
      * trans.c (gfc_add_modify_expr, gfc_finish_block,
      gfc_build_array_ref, gfc_build_function_call,
      gfc_trans_runtime_check): Same.
      
      From-SVN: r86554
      Tobias Schlüter committed
    • re PR c++/15461 (ICE due to NRV and inlining) · 905af9e9
              PR c++/15461
              * semantics.c (nullify_returns_r): Replace a DECL_STMT
              for the NRV with an INIT_EXPR.
      
      From-SVN: r86552
      Jason Merrill committed
    • Makefile.am (AM_GCJFLAGS): Add LIBGCJ_JAVAFLAGS. · ed89de94
      2004-08-25  David Daney  <daney@avtrex.com>
      
      	* Makefile.am (AM_GCJFLAGS):  Add LIBGCJ_JAVAFLAGS.
      	* Makefile.in: Regenerated.
      
      From-SVN: r86551
      David Daney committed
    • re PR c++/14428 (incompatible template declarations accepted) · 2649701f
      	PR c++/14428
      	* pt.c (redeclare_class_template): Check the type of non-type and
      	template template parameter.
      
      	* g++.dg/template/redecl2.C: New test.
      
      From-SVN: r86550
      Kriang Lerdsuwanakij committed
    • trans-const.c (gfc_conv_mpz_to_tree): Change call to build_int_cst to… · 0cc4be67
      trans-const.c (gfc_conv_mpz_to_tree): Change call to build_int_cst to build_int_cst_wide in accordance to Nathan's...
      
      * trans-const.c (gfc_conv_mpz_to_tree): Change call to
      build_int_cst to build_int_cst_wide in accordance to Nathan's
      previous patch.
      
      From-SVN: r86549
      Tobias Schlüter committed
    • Makefile.in: Add back top_builddir. · 5d1f4b27
      2004-08-25  Paolo Bonzini  <bonzini@gnu.org>
      
              * Makefile.in: Add back top_builddir.
      
      From-SVN: r86548
      Paolo Bonzini committed
    • cse.c (cse_around_loop, [...]): Remove. · 5affca01
      	* cse.c (cse_around_loop, cse_check_loop_start,
      	cse_set_around_loop): Remove.
      	(cse_basic_block): Remove the around_loop argument.
      	(cse_end_of_basic_block): Remove the after_loop argument.
      	(cse_main): Likewise.
      	* rtl.h (cse_main): Update prototype.
      	* passes.c (rest_of_handle_cse, rest_of_handle_cse2,
      	rest_of_handle_gcse): Update cse_main calls.
      
      From-SVN: r86546
      Steven Bosscher committed