Commit Graph

147319 Commits

Author SHA1 Message Date
Martin Liska 6e6fa605f8 Enhance documentation of -fipa-ra option.
* doc/invoke.texi (-fipa-ra): Document when the option is
	disabled. Fix a typo.

From-SVN: r238510
2016-07-20 07:02:09 +00:00
Martin Liska ba1a7a0f85 Add selftests for fibonacci_heap
* Makefile.in: Include fibonacci_heap.c
	* fibonacci_heap.c: New file.
	* fibonacci_heap.h (fibonacci_heap::insert): Use insert_node.
	(fibonacci_heap::union_with): Fix deletion of the second heap.
	* selftest-run-tests.c (selftest::run_tests): Incorporate
	fibonacci heap tests.
	* selftest.h: Declare fibonacci_heap_c_tests.

From-SVN: r238509
2016-07-20 07:01:48 +00:00
Martin Liska dcbdb17aeb Add sreal to selftests
* selftest-run-tests.c (selftest::run_tests): New function.
	* selftest.h (sreal_c_tests): Declare.
	* sreal.c (sreal_verify_basics): New function.
	(verify_aritmetics): Likewise.
	(sreal_verify_arithmetics): Likewise.
	(verify_shifting): Likewise.
	(sreal_verify_shifting): Likewise.
	(void sreal_c_tests): Likewise.
	* gcc.dg/plugin/plugin.exp: Remove sreal test.
	* gcc.dg/plugin/sreal-test-1.c: Remove.
	* gcc.dg/plugin/sreal_plugin.c: Remove.

From-SVN: r238508
2016-07-20 07:00:50 +00:00
Jason Merrill 43694e8bbb PR c++/67164 - clean up dead code
* pt.c (iterative_hash_template_arg, template_args_equal): Don't
	handle ARGUMENT_PACK_SELECT.

From-SVN: r238507
2016-07-20 01:06:52 -04:00
GCC Administrator 30bfa23492 Daily bump.
From-SVN: r238506
2016-07-20 00:16:18 +00:00
Thomas Koenig 6ed825558e re PR fortran/71902 (Unneeded temporary on reallocatable character assignment)
2016-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/71902
	* dependency.c (gfc_check_dependency): Use dep_ref.  Handle case
	if identical is true and two array element references differ.
	(gfc_dep_resovler):  Move most of the code to dep_ref.
	(dep_ref):  New function.
	* frontend-passes.c (realloc_string_callback):  Name temporary
	variable "realloc_string".

2016-07-19  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/71902
	* gfortran.dg/dependency_47.f90:  New test.

From-SVN: r238497
2016-07-19 21:25:33 +00:00
Jakub Jelinek 4833f5615e re PR rtl-optimization/71916 (ICE at -O3 on valid code on x86_64-linux-gnu in "maybe_record_trace_start")
PR rtl-optimization/71916
	* cfgrtl.c (contains_no_active_insn_p): Return false also for
	bb which have a single succ fake edge.

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

From-SVN: r238490
2016-07-19 21:54:49 +02:00
Aldy Hernandez f36a3ff7f7 re PR debug/71855 (duplicate unspecified_parameters DIE in DWARF for functions with variable arguments)
PR debug/71855
	* dwarf2out.c (gen_subprogram_die): Only call
	gen_unspecified_parameters_die while dumping early dwarf.

From-SVN: r238488
2016-07-19 19:29:42 +00:00
Jakub Jelinek 4fda19ef2b re PR middle-end/71874 (memmove works wrong)
PR middle-end/71874
	* gimple-fold.c (fold_builtin_memory_op): Use
	get_addr_base_and_unit_offset instead of get_ref_base_and_extent.

	* g++.dg/torture/pr71874.C: New test.

From-SVN: r238484
2016-07-19 19:30:05 +02:00
Jakub Jelinek 13da0507f3 re PR middle-end/71734 (FAIL: libgomp.fortran/simd4.f90 -O3 -g execution test)
PR middle-end/71734
	* g++.dg/vect/pr70729.cc: Don't include string.h or xmmintrin.h.
	(my_alloc): Rewritten to use __builtin_posix_memalign and
	__SIZE_TYPE__.
	(my_free): Use __builtin_free instead of _mm_free.
	(Vec::operator=): Use __builtin_memcpy.

From-SVN: r238482
2016-07-19 18:47:30 +02:00
Uros Bizjak fecfbfa4a2 builtins.c: Use HOST_WIDE_INT_1 instead of (HOST_WIDE_INT) 1...
* builtins.c: Use HOST_WIDE_INT_1 instead of (HOST_WIDE_INT) 1,
	HOST_WIDE_INT_1U instead of (unsigned HOST_WIDE_INT) 1,
	HOST_WIDE_INT_M1 instead of (HOST_WIDE_INT) -1 and
	HOST_WIDE_INT_M1U instead of (unsigned HOST_WIDE_INT) -1.
	* combine.c: Ditto.
	* cse.c: Ditto.
	* dojump.c: Ditto.
	* double-int.c: Ditto.
	* dse.c: Ditto.
	* dwarf2out.c: Ditto.
	* expmed.c: Ditto.
	* expr.c: Ditto.
	* fold-const.c: Ditto.
	* function.c: Ditto.
	* fwprop.c: Ditto.
	* genmodes.c: Ditto.
	* hwint.c: Ditto.
	* hwint.h: Ditto.
	* ifcvt.c: Ditto.
	* loop-doloop.c: Ditto.
	* loop-invariant.c: Ditto.
	* loop-iv.c: Ditto.
	* match.pd: Ditto.
	* optabs.c: Ditto.
	* real.c: Ditto.
	* reload.c: Ditto.
	* rtlanal.c: Ditto.
	* simplify-rtx.c: Ditto.
	* stor-layout.c: Ditto.
	* toplev.c: Ditto.
	* tree-ssa-loop-ivopts.c: Ditto.
	* tree-vect-generic.c: Ditto.
	* tree-vect-patterns.c: Ditto.
	* tree.c: Ditto.
	* tree.h: Ditto.
	* ubsan.c: Ditto.
	* varasm.c: Ditto.
	* wide-int-print.cc: Ditto.
	* wide-int.cc: Ditto.
	* wide-int.h: Ditto.

From-SVN: r238481
2016-07-19 18:40:55 +02:00
David Malcolm 5989388cdf selftest.c: gracefully handle NULL in assert_streq
gcc/ChangeLog:
	* selftest.c (selftest::assert_streq): Handle NULL values of
	val_actual and val_expected.

From-SVN: r238479
2016-07-19 16:16:18 +00:00
Nick Clifton 985a47b297 config.host (m32r): Add m32r/t-m32r to tmake_file.
* config.host (m32r): Add m32r/t-m32r to tmake_file.
	Add crtinit.o and crtfini.o to extra_parts.

From-SVN: r238478
2016-07-19 16:07:40 +00:00
Martin Jambor e7980addd0 re PR fortran/71688 (ICE in analyze, at cgraphunit.c:632 with -fcoarray=lib)
Fix PR fortran/71688

2016-07-19  Martin Jambor  <mjambor@suse.cz>

        PR fortran/71688
        * trans-decl.c (gfc_generate_function_code): Use cgraph_get_create_node
        rather than cgraph_create_node to get a call graph node.

testsuite/
        gfortran.dg/pr71688.f90: New test.

From-SVN: r238476
2016-07-19 17:40:43 +02:00
Richard Biener 13e889530d gimple-fold.c (get_base_constructor): Add VIEW_CONVERT case, handle all tcc_constant bases and valueize SSA names.
2016-07-19  Richard Biener  <rguenther@suse.de>

	* gimple-fold.c (get_base_constructor): Add VIEW_CONVERT case,
	handle all tcc_constant bases and valueize SSA names.
	* tree-ssa-sccvn.c (fully_constant_vn_reference_p): Handle
	tcc_constant bases.

	* c-c++-common/vector-subscript-6.c: New testcase.
	* c-c++-common/vector-subscript-7.c: Likewise.

From-SVN: r238475
2016-07-19 14:16:54 +00:00
Senthil Kumar Selvaraj 1caf048210 Fix failing test for targets with sizeof(int) != 4.
gcc/testsuite/

2016-07-19  Senthil Kumar Selvaraj  <senthil_kumar.selvaraj@atmel.com>

	* gcc.dg/params/blocksort-part.c: Conditionally define Int32 
	and UInt32 based on __SIZEOF_INT__.

From-SVN: r238471
2016-07-19 13:16:32 +00:00
David Malcolm 00f06cd733 Fix copy&paste bug in function-tests.c
gcc/ChangeLog:
	* function-tests.c (selftest::verify_three_block_rtl_cfg): Verify
	the flags of the exit block and bb2, not just the entry block.

From-SVN: r238470
2016-07-19 13:04:32 +00:00
Fritz Reese 60d518829c MAINTAINERS (Write After Approval): Add myself.
2016-07-19  Fritz Reese  <fritzoreese@gmail.com>

	* MAINTAINERS (Write After Approval): Add myself.

From-SVN: r238469
2016-07-19 10:39:19 +00:00
Richard Biener cef5388d95 re PR tree-optimization/71901 (ice in find_or_generate_expression)
2016-07-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71901
	* tree-ssa-sccvn.h (struct vn_reference_op_struct): Add
	align member, group stuff with the bitfield.
	(vn_ref_op_align_unit): New inline.
	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): For ARRAY_REFs
	record element alignment and operand 3 unchanged.
	(ao_ref_init_from_vn_reference): Adjust.
	(valueize_refs_1): Likewise.
	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Likewise.

	* gcc.dg/torture/pr71901.c: New testcase.

From-SVN: r238468
2016-07-19 10:19:46 +00:00
Richard Biener 9a4cb9733d re PR tree-optimization/71908 (ICE at -Os and above in both 32-bit and 64-bit modes on x86_64-linux-gnu (get_constraint_for_component_ref))
2016-07-18  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71908
	* tree-ssa-structalias.c (get_constraint_for_component_ref): Handle
	symbolic constants in a more reliable way.

	* gcc.dg/torture/pr71908.c: New testcase.

From-SVN: r238467
2016-07-19 10:18:25 +00:00
Ilya Enkovich d9157f1514 tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Update comment.
gcc/

	* tree-vect-loop-manip.c (vect_update_ivs_after_vectorizer): Update
	comment.
	(vect_update_inits_of_drs): Likewise.
	(vect_create_cond_for_alias_checks): Likewise.
	* tree-vect-loop.c (vect_get_known_peeling_cost): Likewise.

From-SVN: r238466
2016-07-19 10:04:02 +00:00
Richard Biener f6918a8b63 re PR middle-end/71907 (missing buffer overflow warnings with -flto)
2016-07-19  Richard Biener  <rguenther@suse.de>

	PR lto/71907
	* lto-streamer-out.c (DFS::DFS_write_tree_body): For blocks
	with an abstract origin that is not an inlined function outer
	scope add a self-reference as abstract origin.
	* tree-streamer-out.c (write_ts_block_tree_pointers): Likewise.

From-SVN: r238456
2016-07-19 07:35:05 +00:00
Michael Meissner a8f7a89526 re PR target/71493 (accidental ABI change for structure return on PowerPC)
[gcc]
2016-07-18  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/71493
	* config/rs6000/rs6000.c (rs6000_function_value): Fix
	unintentional System V.4 structure return breakage for structures
	with a single floating point element.

[gcc/testsuite]
2016-07-18  Michael Meissner  <meissner@linux.vnet.ibm.com>

	PR target/71493
	* gcc.target/powerpc/pr71493-1.c: New test.
	* gcc.target/powerpc/pr71493-2.c: Likewise.

From-SVN: r238454
2016-07-19 03:31:48 +00:00
GCC Administrator 40d9a67476 Daily bump.
From-SVN: r238453
2016-07-19 00:16:18 +00:00
Jakub Jelinek e43ebb1268 re PR c++/70869 (internal compiler error: Segmentation fault on array of pointer to function members)
PR c++/70869
	PR c++/71054
	* cp-gimplify.c (cp_genericize_r): Revert the 2016-07-07 change.
	* tree.c (cp_walk_subtrees): For DECL_EXPR on DECL_ARTIFICIAL
	non-static VAR_DECL, walk the decl's DECL_INITIAL, DECL_SIZE and
	DECL_SIZE_UNIT.

From-SVN: r238444
2016-07-18 20:45:18 +02:00
Jakub Jelinek 99516432c2 re PR c++/71835 (ICE on invalid C++ code with ambiguous overloaded operators: tree check: expected tree that contains ‘decl minimal’ structure, have ‘pointer_type’ in convert_like_real, at cp/call.c:6549)
PR c++/71835
	* call.c (build_op_call_1): Use convert_like_with_context only
	if cand->fn is a decl.

	* g++.dg/conversion/ambig3.C: New test.

From-SVN: r238443
2016-07-18 20:44:51 +02:00
Jakub Jelinek 87713c6a50 re PR c++/71828 (ICE on valid C++11 code with constexpr __Complex int variable declaration: in operand_equal_p, at fold-const.c:2790)
PR c++/71828
	* constexpr.c (cxx_eval_constant_expression) <case REALPART_EXPR>:
	For lval don't use cxx_eval_unary_expression and instead recurse
	and if needed rebuild the reference.

	* g++.dg/cpp0x/constexpr-71828.C: New test.

From-SVN: r238442
2016-07-18 20:43:19 +02:00
Jakub Jelinek 7a7f16ca45 re PR c++/71826 (ICE on valid C++ code with ambiguous member lookup: tree check: expected baselink, have error_mark in tsubst_baselink, at cp/pt.c:13737)
PR c++/71826
	* pt.c (tsubst_baselink): Only set BASELINK_OPTYPE for BASELINK_P.

	* g++.dg/template/pr71826.C: New test.

From-SVN: r238441
2016-07-18 20:42:24 +02:00
Jakub Jelinek f4d902955b re PR c++/71822 (ICE: in gimplify_expr, at gimplify.c:11025)
PR c++/71822
	* cp-gimplify.c (cp_gimplify_expr) <case VEC_INIT_EXPR>: Recursively
	fold *expr_p before genericizing it.

	* g++.dg/template/defarg21.C: New test.

From-SVN: r238440
2016-07-18 20:40:12 +02:00
Jakub Jelinek f2111a3640 re PR c++/71871 (ICE on mixing templates and vector extensions ternary operator)
PR c++/71871
	* typeck.c (build_x_conditional_expr): Revert the 2012-10-25 change.

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

From-SVN: r238439
2016-07-18 19:44:48 +02:00
Uros Bizjak 0b96552628 pr70017.c: Do not check for warning on alpha*-*-*.
* gcc.dg/pr70017.c: Do not check for warning on alpha*-*-*.

From-SVN: r238438
2016-07-18 17:55:36 +02:00
Jason Merrill 7864eaaff7 Demangle C++17 fold-expressions.
* cp-demangle.c (cplus_demangle_operators): Add f[lrLR].
	(d_expression_1): Handle them.
	(d_maybe_print_fold_expression): New.
	(d_print_comp_inner): Use it.
	(d_index_template_argument): Handle negative index.

From-SVN: r238437
2016-07-18 11:28:51 -04:00
Ville Voutilainen 40f3e91334 Clean up optional's comments.
From-SVN: r238436
2016-07-18 17:45:56 +03:00
Yuri Rumyantsev 94e136b95b re PR middle-end/71734 (FAIL: libgomp.fortran/simd4.f90 -O3 -g execution test)
gcc/

2016-07-18  Yuri Rumyantsev  <ysrumyan@gmail.com>

	PR tree-optimization/71734
	* tree-ssa-loop-im.c (ref_indep_loop_p_1): Add REF_LOOP argument which
	contains REF, use it to check safelen, assume that safelen value
	must be greater 1, fix style.
	(ref_indep_loop_p_2): Add REF_LOOP argument.
	(ref_indep_loop_p): Pass LOOP as additional argument to
	ref_indep_loop_p_2.

gcc/testsuite/

2016-07-18  Yuri Rumyantsev  <ysrumyan@gmail.com>

	PR tree-optimization/71734
	* g++.dg/vect/pr70729.cc: Delete redundant dg options, fix style.

From-SVN: r238435
2016-07-18 14:30:20 +00:00
Dominik Vogt 7072df0aae Allocate constant size dynamic stack space in the prologue
The attached patch fixes a warning during Linux kernel compilation
on S/390 due to -mwarn-dynamicstack and runtime alignment of stack
variables with constant size causing cfun->calls_alloca to be set
(even if alloca is not used at all).  The patched code places
constant size runtime aligned variables in the "virtual stack
vars" area instead of creating a "virtual stack dynamic" area.

This behaviour is activated by defining

  #define ALLOCATE_DYNAMIC_STACK_SPACE_IN_PROLOGUE 1

in the backend; otherwise the old logic is used.

The kernel uses runtime alignment for the page structure (aligned
to 16 bytes), and apart from triggereing the alloca warning
(-mwarn-dynamicstack), the current Gcc also generates inefficient
code like

  aghi %r15,-160  # prologue: create stack frame
    lgr %r11,%r15   # prologue: generate frame pointer
      aghi %r15,-32   # space for dynamic stack

which could be simplified to

  aghi %r15,-192

(if later optimization passes are able to get rid of the frame
pointer).  Is there a specific reason why the patched behaviour
shouldn't be used for all platforms?

--

As the placement of runtime aligned stack variables with constant
size is done completely in the middleend, I don't see a way to fix
this in the backend.

gcc/ChangeLog:

2016-07-18  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* cfgexpand.c (expand_stack_vars): Implement synamic stack space
	allocation in the prologue.
	* explow.c (get_dynamic_stack_base): New function to return an address
	expression for the dynamic stack base.
	(get_dynamic_stack_size): New function to do the required dynamic stack
	space size calculations.
	(allocate_dynamic_stack_space): Use new functions.
	(align_dynamic_address): Move some code from
	allocate_dynamic_stack_space to new function.
	* explow.h (get_dynamic_stack_base, get_dynamic_stack_size): Export.

gcc/testsuite/ChangeLog:

2016-07-18  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* gcc.target/s390/warn-dynamicstack-1.c: New test.
	* gcc.dg/stack-usage-2.c (foo3): Adapt expected warning.
	stack-layout-dynamic-1.c: New test.

From-SVN: r238432
2016-07-18 13:10:27 +00:00
Andreas Krebbel 54158a1aa9 S/390: Fix alignment check for literal pool references.
gcc/ChangeLog:

2016-07-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* config/s390/s390.c (s390_encode_section_info): Always set
	notaligned marker if mode size is 0 or no MEM_ALIGN info could be
	found.

gcc/testsuite/ChangeLog:

2016-07-18  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	* gcc.target/s390/nolrl-1.c: New test.

From-SVN: r238427
2016-07-18 10:47:09 +00:00
Richard Biener 2e7565b268 re PR tree-optimization/71893 (gfortran.dg ICEs in gcc/tree-ssa-pre.c; -fcode-hoisting?)
2016-07-18  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/71893
	* tree-ssa-pre.c (create_component_ref_by_pieces_1): Compensate
	for sizetype cast added by array_ref_element_size.
	* tree-ssa-sccvn.c (copy_reference_ops_from_ref): Likewise.

From-SVN: r238426
2016-07-18 08:46:42 +00:00
GCC Administrator 9c9549e100 Daily bump.
From-SVN: r238424
2016-07-18 00:16:21 +00:00
Fritz Reese 43068916e3 re PR fortran/71523 (Static variables given automatic initializers with -finit-* and -fmax-stack-var-size)
2016-07-17  Fritz Reese  <fritzoreese@gmail.com>

	PR fortran/71523
	* trans-decl.c (gfc_finish_var_decl): Replace automatic initializer with
	a static one.

	* gfortran.dg/pr71523_1.f90: New test.
	* gfortran.dg/pr71523_2.f90: New test.

From-SVN: r238420
2016-07-17 20:13:41 +00:00
GCC Administrator 48b3613757 Daily bump.
From-SVN: r238419
2016-07-17 00:16:19 +00:00
John David Anglin 730a27a251 pa.c (hppa_profile_hook): Allocate stack space for register parameters.
* config/pa/pa.c (hppa_profile_hook): Allocate stack space for
	register parameters.  Remove code to initialize argument pointer
	on TARGET_64BIT.  Optimize call to _mcount when it can be reached
	using a pc-relative branch.  Cleanup conditional code.
	* config/pa/pa.md (call_mcount): New expander.
	(call_mcount_nonpic): New insn.
	(call_mcount_pic): New insn and split.
	(call_mcount_pic_post_reload): New insn.
	(call_mcount_64bit): New insn and split.
	(call_mcount_64bit_post_reload): New insn.

From-SVN: r238414
2016-07-16 15:59:33 +00:00
Andreas Schwab a9356b1242 nullptr35.C (caught): Fix typo.
* g++.dg/cpp0x/nullptr35.C (caught): Fix typo.

From-SVN: r238413
2016-07-16 09:53:23 +00:00
GCC Administrator 5a12c91315 Daily bump.
From-SVN: r238409
2016-07-16 00:16:22 +00:00
Jonathan Wakely 4f5f9962c8 Replace references to C++0x with C++11 in comments
* include/bits/algorithmfwd.h: Change C++0x to C++11 in comments.
	* include/bits/move.h: Likewise.
	* include/bits/postypes.h: Likewise.
	* include/debug/bitset: Likewise.
	* include/ext/pb_ds/detail/type_utils.hpp: Likewise.
	* include/ext/string_conversions.h: Change C++0x to __cxx11 in
	comment.
	* testsuite/27_io/fpos/14320-1.cc: Change C++0x to C++11 in comment.
	* testsuite/util/thread/all.h: Likewise.

From-SVN: r238402
2016-07-15 21:23:08 +01:00
Jerry DeLisle a07b81c742 re PR fortran/62125 (Nested select type not accepted (rejects valid))
2016-07-15  Jerry DeLisle  <jvdelisle@gcc.gnu.org>
	    Marco Restelli <mrestelli@gmail.com>

	PR fortran/62125
	* symbol.c (select_type_insert_tmp): Recursively call self to take care
	of nested select type.

	* gfortran.dg/pr62125.f90: New test.

Co-Authored-By: Marco Restelli <mrestelli@gmail.com>

From-SVN: r238400
2016-07-15 19:58:55 +00:00
Jonathan Wakely d1129d45b0 Remove redundant std::move in std::for_each
* include/bits/stl_algo.h (for_each): Remove redundant _GLIBCXX_MOVE
	and adjust comment.

From-SVN: r238399
2016-07-15 20:51:33 +01:00
Bill Schmidt 96c0ec125f divkc3-1.c: Require p8vector support.
2016-07-15  Bill Schmidt  <wschmidt@linux.vnet.ibm.com>

	* gcc.target/powerpc/divkc3-1.c: Require p8vector support.
	* gcc.target/powerpc/mulkc3-1.c: Likewise.

From-SVN: r238398
2016-07-15 18:57:06 +00:00
Jason Merrill 37a80bf956 PR c++/71495 - spurious note during SFINAE.
* call.c (convert_like_real): Mask complain.
	* semantics.c (perform_koenig_lookup): Likewise.

From-SVN: r238397
2016-07-15 14:56:29 -04:00
Jonathan Wakely 479d0ed590 c++/58796 Make nullptr match exception handlers of pointer type
libstdc++-v3:

	PR c++/58796
	* libsupc++/pbase_type_info.cc (__pbase_type_info::__do_catch): Make
	nullptr match handlers of pointer type.

gcc/testsuite:

	PR c++/58796
	* g++.dg/cpp0x/nullptr21.C: Remove void* handlers.
	* g++.dg/cpp0x/nullptr35.C: New test.

From-SVN: r238396
2016-07-15 19:51:51 +01:00
Jason Merrill de54de93fa PR c++/71092 - ICE with array and constexpr.
* constexpr.c (cxx_eval_call_expression): Fail quietly when cgraph
	threw away DECL_SAVED_TREE.

From-SVN: r238395
2016-07-15 14:49:38 -04:00