aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2011-08-28Core DR 342 PR c++/48582Jason Merrill7-20/+107
Core DR 342 PR c++/48582 * pt.c (check_valid_ptrmem_cst_expr): A null member pointer value is valid in C++11. (convert_nontype_argument): Likewise. Implicitly convert nullptr and do constant folding. * mangle.c (write_template_arg_literal): Mangle null member pointer values as 0. * call.c (null_member_pointer_value_p): New. * cp-tree.h: Declare it. From-SVN: r178144
2011-08-28* ja.po: Update.Joseph Myers2-85/+56
From-SVN: r178142
2011-08-28re PR bootstrap/50218 (tree-ssa-loop-ivopts.c triggers ↵Mikael Pettersson2-1/+7
-Werror=maybe-uninitialized breaking i686-linux bootstrap) 2011-08-28 Mikael Pettersson <mikpe@it.uu.se> PR bootstrap/50218 * tree-ssa-loop-ivopts.c (determine_use_iv_cost_condition): Initialize comp. From-SVN: r178141
2011-08-28Daily bump.GCC Administrator1-1/+1
From-SVN: r178139
2011-08-27rtl.texi (simple_return): Document.Bernd Schmidt27-197/+402
* doc/rtl.texi (simple_return): Document. (parallel, PATTERN): Here too. * doc/md.texi (return): Mention it's allowed to expand to simple_return in some cases. (simple_return): Document standard pattern. * gengenrtl.c (special_rtx): SIMPLE_RETURN is special. * final.c (final_scan_insn): Use ANY_RETURN_P on body. * reorg.c (function_return_label, function_simple_return_label): New static variables, replacing... (end_of_function_label): ... this. (simplejump_or_return_p): New static function. (optimize_skip, steal_delay_list_from_fallthrough, fill_slots_from_thread): Use it. (relax_delay_slots): Likewise. Use ANY_RETURN_P on body. (rare_destination, follow_jumps): Use ANY_RETURN_P on body. (find_end_label): Take a new arg which is one of the two return rtxs. Depending on which, set either function_return_label or function_simple_return_label. All callers changed. (make_return_insns): Make both kinds. (dbr_schedule): Adjust for two kinds of end labels. * function.c (emit_return_into_block): Set JUMP_LABEL properly. * genemit.c (gen_exp): Handle SIMPLE_RETURN. (gen_expand, gen_split): Use ANY_RETURN_P. * df-scan.c (df_uses_record): Handle SIMPLE_RETURN. * rtl.def (SIMPLE_RETURN): New code. * ifcvt.c (find_if_case_1): Be more careful about redirecting jumps to the EXIT_BLOCK. * jump.c (condjump_p, condjump_in_parallel_p, any_condjump_p, returnjump_p_1): Handle SIMPLE_RETURNs. * print-rtl.c (print_rtx): Likewise. * rtl.c (copy_rtx): Likewise. * bt-load.c (compute_defs_uses_and_gen): Use ANY_RETURN_P. * combine.c (simplify_set): Likewise. * resource.c (find_dead_or_set_registers, mark_set_resources): Likewise. * emit-rtl.c (verify_rtx_sharing, classify_insn, copy_insn_1, copy_rtx_if_shared_1, mark_used_flags): Handle SIMPLE_RETURNs. (init_emit_regs): Initialize simple_return_rtx. * cfglayout.c (fixup_reorder_chain): Pass a JUMP_LABEL to force_nonfallthru_and_redirect. * rtl.h (ANY_RETURN_P): Allow SIMPLE_RETURN. (GR_SIMPLE_RETURN): New enum value. (simple_return_rtx): New macro. * basic-block.h (force_nonfallthru_and_redirect): Adjust declaration. * cfgrtl.c (force_nonfallthru_and_redirect): Take a new jump_label argument. All callers changed. Be careful about what kinds of returnjumps to generate. * config/i386/3i86.c (ix86_pad_returns, ix86_count_insn_bb, ix86_pad_short_function): Likewise. * config/arm/arm.c (arm_final_prescan_insn): Handle both kinds of return. * config/mips/mips.md (any_return): New code_iterator. (optab): Add cases for return and simple_return. (return): Expand to a simple_return. (simple_return): New pattern. (*<optab>, *<optab>_internal for any_return): New patterns. (return_internal): Remove. * config/mips/mips.c (mips_expand_epilogue): Make the last insn a simple_return_internal. From-SVN: r178135
2011-08-27sse.md (*absneg<mode>2): Fix split condition.Uros Bizjak3-12/+36
* config/i386/sse.md (*absneg<mode>2): Fix split condition. (vec_extract_lo_<mode>): Prevent both operands in memory. (vec_extract_lo_v16hi): Ditto. (*vec_extract_v4sf_mem): Add TARGET_SSE insn constraint. * config/i386/sse.md (mulv16qi3): Attach REG_EQUAL note. (*sse2_mulv4si3): Ditto. (mulv2di3): Ditto. * config/i386/i386.c (legitimize_tls_address): Change REG_EQIV notes to REG_EQUAL. From-SVN: r178132
2011-08-27re PR target/50202 (ICE: in final_scan_insn, at final.c:2709 (could not ↵Uros Bizjak4-0/+33
split insn) with __builtin_ia32_pcmpistri128) PR target/50202 * config/i386/sse.md (sse4_2_pcmpestr): Emit NOTE_INSN_DELETED note when all outputs are unused. (sse4_2_pcmpestr): Ditto. testsuite/ChangeLog: PR target/50202 * gcc.target/i386/pr50202.c: New test. From-SVN: r178130
2011-08-27Daily bump.GCC Administrator1-1/+1
From-SVN: r178129
2011-08-26i386.c (ix86_build_const_vector): Rewrite using loop with RTVEC_ELT accessor.Uros Bizjak2-36/+23
* config/i386/i386.c (ix86_build_const_vector): Rewrite using loop with RTVEC_ELT accessor. From-SVN: r178124
2011-08-26i386.md (round<mode>2): New expander.Uros Bizjak7-4/+301
* config/i386/i386.md (round<mode>2): New expander. * config/i386/i386.c (enum ix86_builtins): Add IX86_BUILTIN_ROUND{PS,PD}_AZ{,256}. (struct builtin_description): Add __builtin_ia32_round{ps,pd}_az{,256} descriptions. (ix86_builtin_vectorized_function): Handle BUILT_IN_ROUND{,F} builtins. testsuite/ChangeLog: * gcc.target/i386/sse_4_1-round-vec.c: New test. * gcc.target/i386/sse_4_1-roundf-vec.c: New test. * gcc.target/i386/avx-round-vec.c: New test. * gcc.target/i386/avx-roundf-vec.c: New test. From-SVN: r178123
2011-08-26re PR middle-end/50083 (All 32-bit fortran tests fail on 32-bit Solaris)Uros Bizjak2-13/+26
PR middle-end/50083 * convert.c (convert_to_integer) <BUIT_IN_ROUND{,F,L}>: Convert only when TARGET_C99_FUNCTIONS. <BUILT_IN_NEARBYINT{,F,L}>: Ditto. <BUILT_IN_RINT{,F,L}>: Ditto. From-SVN: r178119
2011-08-26re PR lto/50165 (Huge build time regression (Firefox lto build))Michael Matz2-4/+12
PR lto/50165 * lto-streamer-in.c (canon_file_name): Initialize new_slot->len; don't call strlen twice, use memcpy. Co-Authored-By: Jakub Jelinek <jakub@redhat.com> From-SVN: r178118
2011-08-26Add <lzcntintrin.h>, <bmiintrin.h> and <bmi2intrin.h> to <immintrin.h>.H.J. Lu5-4/+25
2011-08-26 H.J. Lu <hongjiu.lu@intel.com> * config/i386/bmi2intrin.h: Allow in <immintrin.h>. * config/i386/bmiintrin.h: Likewise. * config/i386/lzcntintrin.h: Likewise. * config/i386/immintrin.h: Include <lzcntintrin.h>, <bmiintrin.h> and <bmi2intrin.h>. From-SVN: r178117
2011-08-26Disable .init_array/.fini_array support on Solaris (PR target/50166)Rainer Orth3-2/+12
PR target/50166 * acinclude.m4 (gcc_AC_INITFINI_ARRAY): Check count in main. * configure: Regenerate. From-SVN: r178116
2011-08-26trans-decl.c (get_proc_pointer_decl): Set DECL_TLS_MODEL if threadprivate.Jakub Jelinek3-1/+14
* trans-decl.c (get_proc_pointer_decl): Set DECL_TLS_MODEL if threadprivate. * symbol.c (check_conflict): Allow threadprivate attribute with FL_PROCEDURE if proc_pointer. * testsuite/libgomp.fortran/threadprivate4.f90: New test. From-SVN: r178114
2011-08-26cmpxchg16b-1.c: Match also space after the instruction.Jakub Jelinek2-1/+4
* gcc.target/i386/cmpxchg16b-1.c: Match also space after the instruction. From-SVN: r178113
2011-08-26re PR c/50179 (wrong "set but not used" warning)Jakub Jelinek4-1/+29
PR c/50179 * c-typeck.c (c_process_expr_stmt): Skip over nops and call mark_exp_read even if exprv is ADDR_EXPR. * c-c++-common/Wunused-var-14.c: New test. From-SVN: r178110
2011-08-26df-problems.c (df_note_bb_compute): Pass uses rather than defs to ↵Richard Sandiford2-1/+6
df_set_dead_notes_for_mw. gcc/ * df-problems.c (df_note_bb_compute): Pass uses rather than defs to df_set_dead_notes_for_mw. From-SVN: r178109
2011-08-26varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF].Richard Guenther2-0/+10
2011-08-26 Richard Guenther <rguenther@suse.de> * varasm.c (decode_addr_const): Handle MEM_REF[&X, OFF]. From-SVN: r178107
2011-08-26ivopts-lt.c: New test.Tom de Vries2-0/+24
2011-08-26 Tom de Vries <tom@codesourcery.com> * gcc.dg/tree-ssa/ivopts-lt.c: New test. From-SVN: r178105
2011-08-26tree-ssa-loop-ivopts.c (struct cost_pair): Add comp field.Zdenek Dvorak2-51/+344
2011-08-26 Zdenek Dvorak <ook@ucw.cz> Tom de Vries <tom@codesourcery.com> * tree-ssa-loop-ivopts.c (struct cost_pair): Add comp field. (struct ivopts_data): Add loop_single_exit_p field. (niter_for_exit): Change parameter desc_p into return value. Return desc if desc->may_be_zero. Free desc if unused. (niter_for_single_dom_exit): Change return type. (find_induction_variables): Handle changed return type of niter_for_single_dom_exit. Dump may_be_zero. (add_candidate_1): Keep original base and step type for IP_ORIGINAL. (set_use_iv_cost): Add and handle comp parameter. (determine_use_iv_cost_generic, determine_use_iv_cost_address): Add comp argument to set_use_iv_cost. (strip_wrap_conserving_type_conversions, expr_equal_p) (difference_cannot_overflow_p, iv_elimination_compare_lt): New function. (may_eliminate_iv): Add comp parameter. Handle new return type of niter_for_exit. Use loop_single_exit_p. Use iv_elimination_compare_lt. (determine_use_iv_cost_condition): Add comp argument to set_use_iv_cost and may_eliminate_iv. (rewrite_use_compare): Move call to iv_elimination_compare to ... (may_eliminate_iv): Here. (tree_ssa_iv_optimize_loop): Initialize loop_single_exit_p. Co-Authored-By: Tom de Vries <tom@codesourcery.com> From-SVN: r178104
2011-08-26tree-pretty-print (dump_generic_node): Test for NULL_TREE before accessing ↵Tom de Vries2-0/+9
TREE_TYPE. 2011-08-26 Tom de Vries <tom@codesourcery.com> * tree-pretty-print (dump_generic_node): Test for NULL_TREE before accessing TREE_TYPE. From-SVN: r178103
2011-08-26Commit for Jiangning. Jiangning Liu7-82/+340
Add conditional compare support for Thumb2. From-SVN: r178102
2011-08-26* rtlanal.c (nonzero_bits1): Handle CLRSB.Jakub Jelinek2-2/+11
From-SVN: r178101
2011-08-26expr.c (string_constant): Handle &MEM_REF.Richard Guenther2-0/+15
2011-08-26 Richard Guenther <rguenther@suse.de> * expr.c (string_constant): Handle &MEM_REF. From-SVN: r178100
2011-08-26arm.c (struct four_ints): New type.Andrew Stubbs10-173/+482
2011-08-26 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/arm/arm.c (struct four_ints): New type. (count_insns_for_constant): Delete function. (find_best_start): Delete function. (optimal_immediate_sequence): New function. (optimal_immediate_sequence_1): New function. (arm_gen_constant): Move constant splitting code to optimal_immediate_sequence. Rewrite constant negation/invertion code. gcc/testsuite/ * gcc.target/arm/thumb2-replicated-constant1.c: New file. * gcc.target/arm/thumb2-replicated-constant2.c: New file. * gcc.target/arm/thumb2-replicated-constant3.c: New file. * gcc.target/arm/thumb2-replicated-constant4.c: New file. 2011-08-26 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/arm/arm-protos.h (const_ok_for_op): Add prototype. * config/arm/arm.c (const_ok_for_op): Add support for addw/subw. Remove prototype. Remove static function type. * config/arm/arm.md (*arm_addsi3): Add addw/subw support. Add arch attribute. * config/arm/constraints.md (Pj, PJ): New constraints. From-SVN: r178099
2011-08-26Fix scheduling descriptions for smull, smmul and friends on Cortex-A9.Ramana Radhakrishnan2-7/+22
From-SVN: r178098
2011-08-26Daily bump.GCC Administrator1-1/+1
From-SVN: r178095
2011-08-25Change Bound_method_expression to refer to a constant method.Ian Lance Taylor5-98/+121
From-SVN: r178091
2011-08-25* config/i386/i386.md: Do not explicitly set default isa attribute.Uros Bizjak1-7/+7
From-SVN: r178088
2011-08-25re PR fortran/50050 (Internal compiler error free_expr0 at expr.c:3709 via ↵Mikael Morin7-4/+52
gfc_done_2) 2011-08-25 Mikael Morin <mikael.morin@gcc.gnu.org> PR fortran/50050 * expr.c (gfc_free_shape): Do nothing if shape is NULL. (free_expr0): Remove redundant NULL shape check. * resolve.c (check_host_association): Ditto. * trans-expr.c (gfc_trans_subarray_assign): Assert that shape is non-NULL. * trans-io.c (transfer_array_component): Ditto. 2011-08-25 Mikael Morin <mikael.morin@gcc.gnu.org> PR fortran/50050 * gfortran.dg/pointer_comp_init_1.f90: New test. From-SVN: r178086
2011-08-25re PR debug/50132 (ICE: in maybe_record_trace_start, at dwarf2cfi.c:2234 ↵Richard Henderson5-113/+163
with -fno-asynchronous-unwind-tables and long double) PR 50132 PR 49864 * cfgcleanup.c (old_insns_match_p): Don't allow cross-jump for non-constant stack adjutment. * expr.c (find_args_size_adjust): Break out from ... (fixup_args_size_notes): ... here. * rtl.h (find_args_size_adjust): Declare. From-SVN: r178084
2011-08-25* call.c (convert_like_real): Remove redundant complain checks.Jason Merrill2-36/+26
From-SVN: r178082
2011-08-25re PR c++/50157 ([C++0x] Non-silent SFINAE in new expression with explicit ↵Jason Merrill4-9/+39
conversion) PR c++/50157 * call.c (convert_like_real): Exit early if bad and !tf_error. From-SVN: r178081
2011-08-25i386.md (isa): Add sse2, sse2_noavx, sse3, sse4 and sse4_noavx.Uros Bizjak5-105/+164
* config/i386/i386.md (isa): Add sse2, sse2_noavx, sse3, sse4 and sse4_noavx. (enabled): Handle sse2, sse2_noavx, sse3, sse4 and sse4_noavx. (*pushdf_rex64): Change Y2 register constraint to x. (*movdf_internal_rex64): Ditto. (*zero_extendsidi2_rex64): Ditto. (*movdi_internal): Change Y2 register constraint to x and update "isa" attribute. (*pushdf): Ditto. (*movdf internal): Ditto. (zero_extendsidi2_1): Ditto. (*truncdfdf_mixed): Ditto. (*truncxfdf2_mixed): Ditto. * config/i386/mmx.md (*mov<mode>_internal_rex64): Change Y2 register constraint to x. (*movv2sf_internal_rex64): Ditto. (*mov<mode>_internal): Change Y2 register constraint to x and add "isa" attribute. (*movv2sf_internal): Ditto. (*vec_extractv2si_1): Ditto. * config/i386/sse.md ("vec_set<mode>_0): Change Y2 and Y4 register constraints to x and update "isa" attribute. (*vec_interleave_highv2df): Change Y3 registerconstraint to x and update "isa" attribute. (*vec_interleave_lowv2df): Ditto. (*vec_concatv2df): Change Y2 register constraint to x and update "isa" attribute. (sse2_loadld): Ditto. (*vec_extractv2di_1): Ditto. (*vec_dupv4si): Ditto. (*vec_dupv2di): Ditto. (*vec_concatv4si): Ditto. (vec_concatv2di): Ditto. * config/i386/constraints.md (Y2): Remove. (Y3): Ditto. (Y4): Ditto. From-SVN: r178073
2011-08-25trans-array.c (gfc_conv_descriptor_token): Add assert.Tobias Burnus8-20/+136
2011-08-25 Tobias Burnus <burnus@net-b.de> * trans-array.c (gfc_conv_descriptor_token): Add assert. * trans-decl.c (gfc_build_qualified_array, create_function_arglist): Handle assumed-shape arrays. * trans-expr.c (gfc_conv_procedure_call): Ditto. * trans-types.c (gfc_get_array_descriptor_base): Ditto, don't add "caf_token" to assumed-shape descriptors, new akind argument. (gfc_get_array_type_bounds): Pass akind. * trans.h (lang_decl): New elements caf_offset and token. (GFC_DECL_TOKEN, GFC_DECL_CAF_OFFSET): New macros. 2011-08-25 Tobias Burnus <burnus@net-b.de> * gfortran.dg/coarray_lib_token_4.f90: New. From-SVN: r178069
2011-08-25trans-array.c (structure_alloc_comps): Fix for allocatable scalar coarray ↵Tobias Burnus6-4/+34
components. 2011-08-25 Tobias Burnus <burnus@net-b.de> * trans-array.c (structure_alloc_comps): Fix for allocatable scalar coarray components. * trans-expr.c (gfc_conv_component_ref): Ditto. * trans-type.c (gfc_get_derived_type): Ditto. 2011-08-25 Tobias Burnus <burnus@net-b.de> * gfortran.dg/coarray/alloc_comp_1.f90: New. From-SVN: r178068
2011-08-25* config/avr/avr.c (byte_immediate_operand): Remove Function.Georg-Johann Lay1-9/+0
From-SVN: r178067
2011-08-25regrename.c (scan_rtx_reg, [...]): Don't declare.Bernd Schmidt2-131/+132
* regrename.c (scan_rtx_reg, scan_rtx_address, build_def_use, dump_def_use_chain): Don't declare. (mark_conflict, create_new_chain): Move before users. (regrename_optimize): Move to near end of file. From-SVN: r178065
2011-08-25avr-protos.h (byte_immediate_operand): Remove Prototype.Georg-Johann Lay4-11/+12
* config/avr-protos.h (byte_immediate_operand): Remove Prototype. (secondary_input_reload_class): Remove Prototype. * config/avr/avr.c (byte_immediate_operand): Remove Function. * config/avr/avr.md (setmemhi): Use u8_operand. (strlenhi): Use const0_rtx for comparison. * config/avr/avr.h (avr_reg_order): Remove Declaration. From-SVN: r178064
2011-08-25avr.c (reg_class_tab): Make local to avr_regno_reg_class.Georg-Johann Lay2-16/+29
* config/avr/avr.c (reg_class_tab): Make local to avr_regno_reg_class. Return smallest register class available. From-SVN: r178063
2011-08-25avr.c (STR_PREFIX_P): New Define.Georg-Johann Lay2-8/+18
* config/avr/avr.c (STR_PREFIX_P): New Define. (avr_asm_declare_function_name): Use it. (avr_asm_named_section): Use it. (avr_section_type_flags): Use it. From-SVN: r178062
2011-08-25Wshadow-3.c: Restore original content destroyed by r148442.Richard Guenther2-60/+24
2011-08-25 Richard Guenther <rguenther@suse.de> * gcc.dg/Wshadow-3.c: Restore original content destroyed by r148442. From-SVN: r178061
2011-08-25md.texi (automata_option): Document collapse-ndfa.Bernd Schmidt3-46/+174
* doc/md.texi (automata_option): Document collapse-ndfa. * genautomata.c (COLLAPSE_OPTION): New macro. (collapse_flag): New static variable. (struct description): New member normal_decls_num. (struct automaton): New members advance_ainsn and collapse_ainsn. (gen_automata_option): Check for COLLAPSE_OPTION. (collapse_ndfa_insn_decl): New static variable. (add_collapse_ndfa_insn_decl, special_decl_p): New functions. (find_arc): If insn is the collapse-ndfa insn, accept any arc we find. (transform_insn_regexps): Call add_collapse_ndfa_insn_decl if necessary. Use normal_decls_num rather than decls_num, remove test for special decls. (create_alt_states, form_ainsn_with_same_reservs): Use special_decl_p. (make_automaton); Likewise. Use the new advance_cycle_insn member of struct automaton. (create_composed_state): Disallow advance-cycle arcs if collapse_flag is set. (NDFA_to_DFA): Don't create composed states for the collapse-ndfa transition. Create the necessary transitions for it. (create_ainsns): Return void. Take an automaton_t argument, and update its ainsn_list, advance_ainsn and collapse_ainsn members. All callers changed. (COLLAPSE_NDFA_VALUE_NAME): New macro. (output_tables): Output code to define it. (output_internal_insn_code_evaluation): Output code to accept const0_rtx as collapse-ndfa transition. (output_default_latencies, output_print_reservation_func, output_print_description): Reorganize loops to use normal_decls_num as loop bound; remove special case for advance_cycle_insn_decl. (initiate_automaton_gen): Handle COLLAPSE_OPTION. (check_automata_insn_issues): Check for collapse_ainsn. (expand_automate): Allocate sufficient space. Initialize normal_decls_num. From-SVN: r178059
2011-08-25avr.md: Fix indentation from r177991.Georg-Johann Lay2-12/+16
* config/avr/avr.md: Fix indentation from r177991. From-SVN: r178058
2011-08-25regrename.c (struct du_head): Remove member terminated.Bernd Schmidt2-203/+210
* regrename.c (struct du_head): Remove member terminated. (create_new_chain): Don't initialize it. (scan_rtx_reg): Don't set or test it, test the open_chains_set bitmap instead. (tick, this_tick): New global variables, moved out of regrename_optimize. (current_id, open_chains, closed_chains, open_chains_set, live_in_chains, live_hard_regs): Reorder declarations. (dump_def_use_chain): Move function earlier in the file. (rename_chains): New static function, broken out of regrename_optimize. (regrename_optimize): Use it. Remove #if 0'ed code. From-SVN: r178057
2011-08-25varasm.c: (default_binds_local_p_1): Commentary typo fix.Bernhard Reutner-Fischer2-2/+6
2011-08-25 Bernhard Reutner-Fischer <aldot@gcc.gnu.org> * varasm.c: (default_binds_local_p_1): Commentary typo fix. From-SVN: r178055
2011-08-25Daily bump.GCC Administrator1-1/+1
From-SVN: r178053
2011-08-24gccgo...Roberto Lublinerman14-213/+448
gccgo: fixes to ast-dump, refactoring of export and ast-dump to implement a common interface for writing basic type literals and added flags for optimization. * lang.opt: Add fgo-optimize-. * go-lang.c (go_langhook_handle_option): Handle OPT_fgo_optimize. * go-c.h (go_enable_optimize): Declare. * Make-lang.in (GO_OBJS): Add go/go-optimize.o. (GO_EXPORT_H): Define. (GO_IMPORT_H): Add $(GO_EXPORT_H). (GO_AST_DUMP_H): Define. (go/ast-dump.o, go/statements.o): Use GO_AST_DUMP_H. (go/export.o, go/gogo.o, go/import.o): Use GO_EXPORT_H. (go/types.o): Likewise. (go/expressions.o): Use GO_AST_DUMP_H and GO_EXPORT_H. (go/go-optimize.o): New target. From-SVN: r178046
2011-08-24Mention PR target/50172.H.J. Lu1-0/+1
From-SVN: r178040