1. 10 Nov, 2016 3 commits
    • revert: ipa-cp.c (ipa_get_jf_pass_through_result): Handle unary expressions. · e32d2c92
      2016-11-10  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	Revert
      	2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* ipa-cp.c (ipa_get_jf_pass_through_result): Handle unary expressions.
      	(propagate_vr_accross_jump_function): Likewise.
      	* ipa-prop.c (ipa_set_jf_unary_pass_through): New.
      	(load_from_param_1): New.
      	(load_from_unmodified_param): Factor common part into load_from_param_1.
      	(load_from_param): New.
      	(compute_complex_assign_jump_func): Handle unary expressions.
      	(ipa_write_jump_function): Likewise.
      	(ipa_read_jump_function): Likewise.
      
      From-SVN: r242032
      Kugan Vivekanandarajah committed
    • simplify-rtx: Transform (xor (and (xor A B) C) B) with C const · a62436c0
      match.pd transforms (A&C)|(B&~C) to ((A^B)&C)^B, which is fewer
      operations if C is not const (and it is not on simple tests at least,
      this transform is done very early already).
      
      Various processors have "insert" instructions that can do this, but
      combine cannot build those from the xor-and-xor, especially it has no
      chance at all to do that if A or B or multiple instructions as well
      (on PowerPC, the rl[wd]imi instructions can do this with together with
      a rotate, or a simple shift with appropriate C; other ISAs have similar
      insns).
      
      This patch makes RTL simplify transform (xor (and (xor A B) C) B) back
      to (ior (and A C) (and B ~C)) for constant C (and similar with A instead
      of B for that last term).
      
      
      	* simplify-rtx.c (simplify_binary_operation_1): Simplify
      	(xor (and (xor A B) C) B) to (ior (and A C) (and B ~C)) and
      	(xor (and (xor A B) C) A) to (ior (and A ~C) (and B C)) if C
      	is a const_int.
      
      From-SVN: r242031
      Segher Boessenkool committed
    • Daily bump. · a84a4f0b
      From-SVN: r242030
      GCC Administrator committed
  2. 09 Nov, 2016 29 commits
    • asan_test.C: Remove -Wno-format, add -Wno-c++1z-compat. · cc38d9d6
      	* g++.dg/asan/asan_test.C: Remove -Wno-format, add
      	-Wno-c++1z-compat.
      	* g++.dg/asan/dejagnu-gtest.h (EXPECT_TRUE): Use "%s" format
      	string in case condition contains % characters.
      
      From-SVN: r242027
      Jakub Jelinek committed
    • re PR c++/78283 (-Wc++1z-compat warning is sticky) · 0391e4a3
      	PR c++/78283
      	* mangle.c (start_mangling): Reset G.need_cxx1z_warning.
      
      	* g++.dg/cpp1z/noexcept-type13.C: New test.
      
      From-SVN: r242026
      Jakub Jelinek committed
    • regex.h (regex_iterator::regex_iterator()): Define end() as _M_pregex == nullptr. · 7ce69e5a
      	* libstdc++-v3/include/bits/regex.h (regex_iterator::regex_iterator()):
      	Define end() as _M_pregex == nullptr.
      	* libstdc++-v3/include/bits/regex.tcc (regex_iterator::operator==(),
      	regex_iterator::operator++()): Fix operator==() and operator++() to
      	look at null-ness of _M_pregex on both sides.
      	* testsuite/28_regex/regression.cc: New testcase.
      
      From-SVN: r242025
      Tim Shen committed
    • compiler: rework static initializer code · 39de1955
          
          Rename is_immutable to is_static_initializer to try to capture what it
          really means.  Be more precise about when an address expression, or a
          binary expression, can be a static initializer.  Don't check whether a
          type has pointers when deciding whether an initializer must be
          read-write, just check whether it is being used to initialize a global
          variable.  To make that work set the Translate_context function to NULL
          for a global variable with a static initializer.
          
          The effect of this is to let more global variables be initialized
          directly, rather than being initialized in the generated init function.
          
          Reviewed-on: https://go-review.googlesource.com/32917
      
      From-SVN: r242024
      Ian Lance Taylor committed
    • print-rtl-function.c: add (param) directive to dump · 677aa9b4
      gcc/ChangeLog:
      	* print-rtl-function.c: Include varasm.h.
      	(print_any_param_name): New function.
      	(print_param): New function.
      	(print_rtx_function): Call print_param for each argument.
      	* print-rtl.c (rtx_writer::finish_directive): New function.
      	* print-rtl.h (rtx_writer::finish_directive): New decl.
      
      From-SVN: r242023
      David Malcolm committed
    • mips.exp (mips-dg-options): Upgrade to MIPS IV if using (HAS_MOVN) with MIPS III. · 410fe60d
      2016-11-09  Toma Tabacu  <toma.tabacu@imgtec.com>
      
              * gcc.target/mips/mips.exp (mips-dg-options): Upgrade to MIPS IV if
              using (HAS_MOVN) with MIPS III.
      
      From-SVN: r242021
      Toma Tabacu committed
    • [multiple changes] · 271dd55c
      2016-11-09  Mikael Morin  <mikael@gcc.gnu.org>
      	    Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/46459
      	* interface.c (compare_actual_formal): Add safety checks to avoid ICE.
      
      2016-11-09  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/46459
      	* gfortran.dg/volatile14.f90: New test.
      
      From-SVN: r242020
      Janus Weil committed
    • Fix C++17 template placeholder for template template parm. · e922b256
      	* parser.c (cp_parser_simple_type_specifier): Allow placeholder
      	for template template parameter.
      	(cp_parser_type_id_1): Improve diagnostic.
      	* decl.c (grokdeclarator): Handle class deduction diagnostics here.
      	* pt.c (splice_late_return_type): Not here.
      	(tsubst) [TEMPLATE_TYPE_PARM]: Substitute into placeholder template.
      	(do_class_deduction): Handle non-class templates.
      
      From-SVN: r242018
      Jason Merrill committed
    • Implement P0127R2, Declaring non-type parameters with auto. · 4a826ca6
      gcc/cp/
      	* cp-tree.h (enum auto_deduction_context): Add adc_unify.
      	* decl.c (grokdeclarator): Allow 'auto' in C++17 template non-type
      	parameter types.
      	* pt.c (do_auto_deduction): Add outer_targs parameter.
      	(convert_template_argument): Call do_auto_deduction.  If adc_unify,
      	don't give up on dependent init.
      	(unify): Likewise.  In C++17, walk into the type of a
      	TEMPLATE_PARM_INDEX.
      	(for_each_template_parm): Add any_fn parameter.
      	(struct pair_fn_data): Likewise.
      	(for_each_template_parm_r): Call it for any tree.  In C++17, walk
      	into the type of a TEMPLATE_PARM_INDEX.
      	(zero_r, array_deduction_r, try_array_deduction): New.
      	(type_unification_real): Call try_array_deduction.
      	(get_partial_spec_bindings): Likewise.
      gcc/c-family/
      	* c-cppbuiltin.c (c_cpp_builtins): Define __cpp_template_auto.
      
      From-SVN: r242017
      Jason Merrill committed
    • re PR target/78262 (wrong code with -fschedule-insns) · ff1f317b
      	PR target/78262
      	* config/i386/i386.md (*<shift_insn><mode>3_doubleword): Mark
      	operand 0 as earlyclobber.
      
      testsuite/ChangeLog:
      
      	PR target/78262
      	* gcc.target/i386/pr78262.c: New test.
      
      From-SVN: r242013
      Uros Bizjak committed
    • Fix ICE in gfc_trans_subcomponent_assign due to NULL components. · f31adad4
      	PR fortran/78259
      	* gcc/fortran/trans-expr.c (gfc_trans_subcomponent_assign): Guard
      	against NULL values.
      
      	PR fortran/78259
      	* gcc/testsuite/gfortran.dg/pr78259.f90: New test.
      
      From-SVN: r242010
      Fritz O. Reese committed
    • [multiple changes] · b349a81a
      2016-11-09  Steve Kargl <kargl@gcc.gnu.org>
      	    Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/60777
      	* expr.c (external_spec_function): Allow recursive specification
      	functions in F03.
      
      2016-11-09  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/60777
      	* gfortran.dg/spec_expr_7.f90: New test.
      
      From-SVN: r242009
      Janus Weil committed
    • re PR middle-end/77718 (expand_builtin_memcmp swaps args) · 4f353581
      	PR target/77718
      	* builtins.c (expand_builtin_memcmp): Formatting fix.
      
      	* gcc.c-torture/execute/pr77718.c: New test.
      
      From-SVN: r242007
      Jakub Jelinek committed
    • flag-types.h (enum sanitize_code): Add SANITIZE_SHIFT_BASE and SANITIZE_SHIFT_EXPONENT... · 2e955d50
      	* flag-types.h (enum sanitize_code): Add SANITIZE_SHIFT_BASE
      	and SANITIZE_SHIFT_EXPONENT, change SANITIZE_SHIFT to bitwise
      	or of them, renumber other enumerators.
      	* opts.c (sanitizer_opts): Add shift-base and shift-exponent.
      	* doc/invoke.texi: Document -fsanitize=shift-base and
      	-fsanitize-shift-exponent, document -fsanitize=shift as
      	having those 2 suboptions.
      c-family/
      	* c-ubsan.c (ubsan_instrument_shift): Handle split
      	-fsanitize=shift-base and -fsanitize=shift-exponent.
      testsuite/
      	* gcc.dg/ubsan/c99-shift-3.c: New test.
      	* gcc.dg/ubsan/c99-shift-4.c: New test.
      	* gcc.dg/ubsan/c99-shift-5.c: New test.
      	* gcc.dg/ubsan/c99-shift-6.c: New test.
      
      From-SVN: r242005
      Jakub Jelinek committed
    • fold-const.c (tree_swap_operands_p): Remove unused arg. · 14e72812
      2016-11-09  Richard Biener  <rguenther@suse.de>
      
      	* fold-const.c (tree_swap_operands_p): Remove unused arg.
      	* fold-const.c (tree_swap_operands_p): Likewise.
      	(fold_binary_loc): Adjust.
      	(fold_ternary_loc): Likewise.
      	* genmatch.c (dt_operand::gen_gimple_exp): Likewise.
      	* gimple-fold.c (fold_stmt_1): Likewise.
      	* gimple-match-head.c (gimple_resimplify2): Likewise.
      	(gimple_resimplify3): Likewise.
      	(gimple_simplify): Likewise.
      	* tree-ssa-dom.c (record_equality): Likewise.
      	* tree-ssa-reassoc.c (optimize_range_tests_var_bound): Likewise.
      	* tree-ssa-sccvn.c (vn_nary_op_compute_hash): Likewise.
      	* tree-ssa-threadedge.c (simplify_control_stmt_condition_1): Likewise.
      
      From-SVN: r242004
      Richard Biener committed
    • tree-ssa-dom.c (canonicalize_comparison): Remove. · 2c49f22a
      2016-11-09  Richard Biener  <rguenther@suse.de>
      
      	* tree-ssa-dom.c (canonicalize_comparison): Remove.
      	(optimize_stmt): Remove redundant pre-propagation canonicalization
      	of comparison operand order.
      
      From-SVN: r242003
      Richard Biener committed
    • Fix folding of memcmp("a", "a", 2) (PR · 68c93708
      	* fold-const-call.c (fold_const_call): Fix the folding.
      	* gcc.dg/tree-ssa/builtins-folding-generic.c (main): Add new
      	test-case for memcmp.
      	* gcc.dg/tree-ssa/builtins-folding-gimple.c: Likewise.
      
      From-SVN: r242000
      Martin Liska committed
    • common.opt (flag_evaluation_order): Remove. · 6fa161dc
      2016-11-09  Richard Biener  <rguenther@suse.de>
      
      	* common.opt (flag_evaluation_order): Remove.
      	* expr.c (expand_operands): Remove code guarded by
      	flag_evaluation_order.
      	* fold-const.c (reorder_operands_p): Remove, it always returns
      	true.
      	(negate_expr_p): Remove calls to reorder_operands_p.
      	(fold_negate_expr): Likewise.
      	(tree_swap_operands_p): Likewise.
      	(fold_binary_loc): Likewise.
      
      From-SVN: r241998
      Richard Biener committed
    • re PR c++/78269 (FAIL: FAIL: g++.dg/cpp1z/noexcept-type11.C and FAIL:… · 7b649f79
      re PR c++/78269 (FAIL: FAIL: g++.dg/cpp1z/noexcept-type11.C and FAIL: g++.dg/cpp1z/noexcept-type9.C)
      
      2016-11-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>
      
          gcc/testsuite/
          PR testsuite/78269
          * g++.dg/cpp1z/noexcept-type9.C: Make it a compile test.
      
      From-SVN: r241997
      Thomas Preud'homme committed
    • re PR target/78254 (FAIL: g++.dg/torture/pr77822.C -O3 -g (internal compiler error)) · 0ff27231
      PR target/78254
      * config/m68k/m68k.md: Reject out-of-range bit pos in bit-fields
      insns operating on a register.
      
      From-SVN: r241996
      Andreas Schwab committed
    • check.c (gfc_check_move_alloc): Prevent error that avoids aliasing between to… · bfcb501d
      check.c (gfc_check_move_alloc): Prevent error that avoids aliasing between to and from arguments from rejecting...
      
      2016-11-09  Paul Thomas  <pault@gcc.gnu.org>
      
      	* check.c (gfc_check_move_alloc): Prevent error that avoids
      	aliasing between to and from arguments from rejecting valid
      	code.
      
      2016-11-09  Paul Thomas  <pault@gcc.gnu.org>
      
      	* gfortran.dg/move_alloc_18.f90: New test.
      
      From-SVN: r241995
      Paul Thomas committed
    • re PR testsuite/78256 (test case gcc.dg/pr35691-1.c fails starting with its… · e15861c2
      re PR testsuite/78256 (test case gcc.dg/pr35691-1.c fails starting with its introduction in r241915)
      
      2016-11-09  Prathamesh Kulkarni  <prathamesh.kulkarni@linaro.org>
      
      	PR middle-end/78256
      testsuite/
      	* gcc.dg/pr35691-1.c (foo): Use & instead of &&.
      	* gcc.dg/pr35691-2.c (foo): Use | instead of ||.
      
      From-SVN: r241994
      Prathamesh Kulkarni committed
    • re PR fortran/71894 ([OOP] ICE in gfc_add_component_ref, at fortran/class.c:227) · 5f395580
      2016-11-09  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/71894
      	* class.c (gfc_add_component_ref): Add safety checks to avoid ICE.
      
      2016-11-09  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/71894
      	* gfortran.dg/class_59.f90: New test.
      
      From-SVN: r241993
      Janus Weil committed
    • re PR target/78007 (Important loop from 482.sphinx3 is not vectorized) · 37b14185
      2016-11-09  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/78007
      	* tree-vect-stmts.c (vectorizable_bswap): New function.
      	(vectorizable_call): Call vectorizable_bswap for
      	BUILT_IN_BSWAP{16,32,64} if arguments are not promoted.
      
      	* gcc.dg/vect/vect-bswap32.c: Adjust.
      	* gcc.dg/vect/vect-bswap64.c: Likewise.
      
      From-SVN: r241992
      Richard Biener committed
    • tree-vect-data-refs.c (vect_compute_data_ref_alignment): Look at the… · 5b3fa6a1
      tree-vect-data-refs.c (vect_compute_data_ref_alignment): Look at the DR_BASE_ADDRESS object for forcing alignment.
      
      2016-11-09  Richard Biener  <rguenther@suse.de>
      
      	* tree-vect-data-refs.c (vect_compute_data_ref_alignment):
      	Look at the DR_BASE_ADDRESS object for forcing alignment.
      
      From-SVN: r241991
      Richard Biener committed
    • Handle unary pass-through jump functions for ipa-vrp · d6e8a41c
      Handle unary pass-through jump functions for ipa-vrp
      gcc/testsuite/ChangeLog:
      
      2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* gcc.dg/ipa/vrp7.c: New test.
      
      
      gcc/ChangeLog:
      
      2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	* ipa-cp.c (ipa_get_jf_pass_through_result): Handle unary expressions.
      	(propagate_vr_accross_jump_function): Likewise.
      	* ipa-prop.c (ipa_set_jf_unary_pass_through): New.
      	(load_from_param_1): New.
      	(load_from_unmodified_param): Factor common part into load_from_param_1.
      	(load_from_param): New.
      	(compute_complex_assign_jump_func): Handle unary expressions.
      	(ipa_write_jump_function): Likewise.
      	(ipa_read_jump_function): Likewise.
      
      From-SVN: r241990
      Kugan Vivekanandarajah committed
    • Fix ice in set_value_range · 5d5f1e95
      Fix ice in set_value_range
      gcc/ChangeLog:
      
      2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR ipa/78121
      	* ipa-cp.c (propagate_vr_accross_jump_function): Pass param type.
      	Also fold constant passed as argument while computing value range.
      	(propagate_constants_accross_call): Pass param type.
      	* ipa-prop.c: export ipa_get_callee_param_type.
      	* ipa-prop.h: export ipa_get_callee_param_type.
      
      gcc/testsuite/ChangeLog:
      
      2016-11-09  Kugan Vivekanandarajah  <kuganv@linaro.org>
      
      	PR ipa/78121
      	* gcc.dg/ipa/pr78121.c: New test.
      
      From-SVN: r241989
      Kugan Vivekanandarajah committed
    • Daily bump. · 8f33501e
      From-SVN: r241987
      GCC Administrator committed
  3. 08 Nov, 2016 8 commits
    • asan.h (asan_intercepted_p): Handle BUILT_IN_STRCSPN, BUILT_IN_STRPBRK,… · 0290a292
      asan.h (asan_intercepted_p): Handle BUILT_IN_STRCSPN, BUILT_IN_STRPBRK, BUILT_IN_STRSPN and BUILT_IN_STRSTR.
      
      gcc/
      
      	* asan.h (asan_intercepted_p): Handle BUILT_IN_STRCSPN,
      	BUILT_IN_STRPBRK, BUILT_IN_STRSPN and BUILT_IN_STRSTR.
      
      gcc/testsuite/
      
      	* c-c++-common/asan/default_options.h: New file.
      	* c-c++-common/asan/strcasestr-1.c: New test.
      	* c-c++-common/asan/strcasestr-2.c: Likewise.
      	* c-c++-common/asan/strcspn-1.c: Likewise.
      	* c-c++-common/asan/strcspn-2.c: Likewise.
      	* c-c++-common/asan/strpbrk-1.c: Likewise.
      	* c-c++-common/asan/strpbrk-2.c: Likewise.
      	* c-c++-common/asan/strspn-1.c: Likewise.
      	* c-c++-common/asan/strspn-2.c: Likewise.
      	* c-c++-common/asan/strstr-1.c: Likewise.
      	* c-c++-common/asan/strstr-2.c: Likewise.
      	* c-c++-common/asan/halt_on_error_suppress_equal_pcs-1.c: Likewise.
      
      From-SVN: r241984
      Maxim Ostapenko committed
    • asan.h (ASAN_STACK_MAGIC_PARTIAL): Remove. · fbdb92eb
      gcc/
      
      	* asan.h (ASAN_STACK_MAGIC_PARTIAL): Remove.
      	* asan.c (ASAN_STACK_MAGIC_PARTIAL): Replace with
      	ASAN_STACK_MAGIC_MIDDLE.
      	(asan_global_struct): Increase the size of fields.
      	(asan_add_global): Add new field constructor.
      	* sanitizer.def (__asan_version_mismatch_check_v6): Replace with
      	__asan_version_mismatch_check_v8.
      
      gcc/testsuite/
      
      	* c-c++-common/asan/null-deref-1.c: Adjust testcase.
      
      From-SVN: r241983
      Maxim Ostapenko committed
    • asan_globals.cc (RegisterGlobal): Do not call CheckODRViolationViaPoisoning. · 8f16b6ca
      libsanitizer/
      
      	* asan/asan_globals.cc (RegisterGlobal): Do not call
      	CheckODRViolationViaPoisoning.
      	(CheckODRViolationViaPoisoning): Remove.
      
      From-SVN: r241981
      Maxim Ostapenko committed
    • sanitizer_stacktrace.cc (GetCanonicFrame): Assume we compiled code with GCC when… · 789306de
      sanitizer_stacktrace.cc (GetCanonicFrame): Assume we compiled code with GCC when extracting the caller PC for ARM if...
      
      libsanitizer/
      
      	* sanitizer_common/sanitizer_stacktrace.cc (GetCanonicFrame): Assume we
      	compiled code with GCC when extracting the caller PC for ARM if no
      	valid frame pointer is available.
      
      From-SVN: r241980
      Maxim Ostapenko committed
    • re PR fortran/68440 ([OOP] ICE on declaring class variable with wrong attribute) · 103c4f75
      2016-11-08  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/68440
      	* expr.c (check_alloc_comp_init): Loosen an assert.
      	* resolve.c (resolve_fl_parameter): Reject class parameters.
      
      2016-11-08  Janus Weil  <janus@gcc.gnu.org>
      
      	PR fortran/68440
      	* gfortran.dg/class_58.f90: New test.
      
      From-SVN: r241979
      Janus Weil committed
    • re PR sanitizer/63958 (bootstrap failure in the sanitizer libs on sparc-linux-gnu) · fe7913f6
      	PR sanitizer/63958
      	Reapply:
      	2014-10-14  David S. Miller  <davem@davemloft.net>
      
      	* sanitizer_common/sanitizer_platform_limits_linux.cc (time_t):
      	Define at __kernel_time_t, as needed for sparc.
      	(struct __old_kernel_stat): Don't check if __sparc__ is defined.
      	* libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h
      	(__sanitizer): Define struct___old_kernel_stat_sz,
      	struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc.
      	(__sanitizer_ipc_perm): Adjust for sparc targets.
      	(__sanitizer_shmid_ds): Likewsie.
      	(__sanitizer_sigaction): Likewise.
      	(IOC_SIZE): Likewsie.
      
      From-SVN: r241978
      Maxim Ostapenko committed
    • All source files: Merge from upstream 285547. · 10189819
      libsanitizer/
      
      	* All source files: Merge from upstream 285547.
      	* configure.tgt (SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS): New
      	variable.
      	* configure.ac (SANITIZER_COMMON_TARGET_DEPENDENT_OBJECTS): Handle it.
      	* asan/Makefile.am (asan_files): Add new files.
      	* asan/Makefile.in: Regenerate.
      	* ubsan/Makefile.in: Likewise.
      	* lsan/Makefile.in: Likewise.
      	* tsan/Makefile.am (tsan_files): Add new files.
      	* tsan/Makefile.in: Regenerate.
      	* sanitizer_common/Makefile.am (sanitizer_common_files): Add new files.
      	(EXTRA_libsanitizer_common_la_SOURCES): Define.
      	(libsanitizer_common_la_LIBADD): Likewise.
      	(libsanitizer_common_la_DEPENDENCIES): Likewise.
      	* sanitizer_common/Makefile.in: Regenerate.
      	* interception/Makefile.in: Likewise.
      	* libbacktace/Makefile.in: Likewise.
      	* Makefile.in: Likewise.
      	* configure: Likewise.
      	* merge.sh: Handle builtins/assembly.h merging.
      	* builtins/assembly.h: New file.
      	* asan/libtool-version: Bump the libasan SONAME.
      
      From-SVN: r241977
      Maxim Ostapenko committed
    • dwarf2asm.c (USE_LINKONCE_INDIRECT): Test XCOFF_DEBUGGING_INFO at runtime. · f31d9224
              * dwarf2asm.c (USE_LINKONCE_INDIRECT): Test XCOFF_DEBUGGING_INFO
              at runtime.
      
      From-SVN: r241975
      David Edelsohn committed