gcc.git
7 years ago[ARM] Allow arm_arch_*_ok to test several macros
Thomas Preud'homme [Fri, 9 Jun 2017 12:55:38 +0000 (12:55 +0000)]
[ARM] Allow arm_arch_*_ok to test several macros

2017-06-09  Thomas Preud'homme  <thomas.preudhomme@arm.com>

    gcc/testsuite/
    * lib/target-supports.exp (check_effective_target_arm_arch_FUNC_ok):
    Test for null definitions instead of them being undefined.  Add entry
    for ARMv7VE.  Reindent entry for ARMv8-M Baseline.  Add comment warning
    about using the effective target for architecture extension.
    (check_effective_target_arm_arch_v7ve_ok): Remove.
    (add_options_for_arm_arch_v7ve): Likewise.

From-SVN: r249059

7 years agoSpeed-up indirect-call instrumentation
Martin Liska [Fri, 9 Jun 2017 12:54:53 +0000 (14:54 +0200)]
Speed-up indirect-call instrumentation

2017-06-09  Martin Liska  <mliska@suse.cz>

* tree-profile.c (gimple_gen_ic_profiler): Update comment.
(gimple_gen_ic_func_profiler): Emit direct comparison
of __gcov_indirect_call_callee with NULL.
(gimple_gen_time_profiler): Change probability from
PROB_VERY_UNLIKELY to PROB_UNLIKELY.
2017-06-09  Martin Liska  <mliska@suse.cz>

* libgcov-profiler.c (__gcov_indirect_call_profiler_v2):
Reset __gcov_indirect_call_callee to NULL.

From-SVN: r249058

7 years agoprofile.c (edge_gcov_counts): Turn to pointer.
Jan Hubicka [Fri, 9 Jun 2017 11:45:46 +0000 (13:45 +0200)]
profile.c (edge_gcov_counts): Turn to pointer.

* profile.c (edge_gcov_counts): Turn to pointer.
(compute_branch_probabilities, compute_branch_probabilities): Update.
(branch_prob): Do not clear edge_gcov_count.
* profile.h (edge_gcov_counts): Turn to pointer.
(edge_gcov_count): Update.

From-SVN: r249057

7 years agoprofile.c (edge_gcov_counts): Turn to pointer.
Jan Hubicka [Fri, 9 Jun 2017 11:38:35 +0000 (13:38 +0200)]
profile.c (edge_gcov_counts): Turn to pointer.

* profile.c (edge_gcov_counts): Turn to pointer.
(compute_branch_probabilities, compute_branch_probabilities): Update.
* profile.h (edge_gcov_counts): Turn to pointer.
(edge_gcov_count): Update.

From-SVN: r249056

7 years ago* gimple.h (gimple_check_failed): Mark cold.
Jan Hubicka [Fri, 9 Jun 2017 11:36:59 +0000 (13:36 +0200)]
* gimple.h (gimple_check_failed): Mark cold.

From-SVN: r249055

7 years agoAdd deduction guides for sequence containers (P0433R2, partial)
Jonathan Wakely [Fri, 9 Jun 2017 11:04:53 +0000 (12:04 +0100)]
Add deduction guides for sequence containers (P0433R2, partial)

* include/bits/forward_list.h (forward_list): Add deduction guide.
* include/bits/stl_deque.h (deque): Likewise.
* include/bits/stl_list.h (list): Likewise.
* include/bits/stl_vector.h (vector): Likewise.
* testsuite/23_containers/deque/cons/deduction.cc: New.
* testsuite/23_containers/forward_list/cons/deduction.cc: New.
* testsuite/23_containers/list/cons/deduction.cc: New.
* testsuite/23_containers/vector/cons/deduction.cc: New.

From-SVN: r249054

7 years agore PR tree-optimization/66623 (Unsafe FP math reduction used in strict math mode)
Richard Biener [Fri, 9 Jun 2017 09:40:45 +0000 (09:40 +0000)]
re PR tree-optimization/66623 (Unsafe FP math reduction used in strict math mode)

2017-06-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/66623
* tree-vect-loop.c (vect_is_simple_reduction): Cleanup,
refactor check_reduction into two parts, properly computing
whether we have to check reduction validity for outer loop
vectorization.

* gcc.dg/vect/pr66623.c: New testcase.

From-SVN: r249053

7 years agore PR tree-optimization/79483 ([graphite] ICE: verify_ssa failed (error: definition...
Richard Biener [Fri, 9 Jun 2017 09:36:06 +0000 (09:36 +0000)]
re PR tree-optimization/79483 ([graphite] ICE: verify_ssa failed (error: definition in block 31 does not dominate use in block 28))

2017-06-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/79483
* graphite-scop-detection.c (order): New global.
(get_order): Compute bb to order mapping that satisfies code
generation constraints.
(cmp_pbbs): New helper.
(build_scops): Start domwalk at entry block, sort generated
pbbs.

* gcc.dg/graphite/pr79483.c: New testcase.

From-SVN: r249052

7 years agore PR ipa/81007 (ICE with virtual function in broken class)
Richard Biener [Fri, 9 Jun 2017 09:35:05 +0000 (09:35 +0000)]
re PR ipa/81007 (ICE with virtual function in broken class)

2017-06-09  Richard Biener  <rguenther@suse.de>

PR middle-end/81007
* ipa-polymorphic-call.c
(ipa_polymorphic_call_context::restrict_to_inner_class):
Skip FIELD_DECLs with error_mark_node type.
* passes.def (all_lowering_passes): Run pass_build_cgraph_edges
last again.

* g++.dg/pr81007.C: New testcase.

From-SVN: r249051

7 years agoReverted r249005 until PowerPC and AIX issues sorted.
Tamar Christina [Fri, 9 Jun 2017 08:10:51 +0000 (08:10 +0000)]
Reverted r249005 until PowerPC and AIX issues sorted.

From-SVN: r249050

7 years agohard-reg-1-nov.c (mpx_test): Use "esp" instead of "rsp" for -m32.
Jakub Jelinek [Fri, 9 Jun 2017 08:02:00 +0000 (10:02 +0200)]
hard-reg-1-nov.c (mpx_test): Use "esp" instead of "rsp" for -m32.

* gcc.target/i386/mpx/hard-reg-1-nov.c (mpx_test): Use "esp"
instead of "rsp" for -m32.
* gcc.target/i386/mpx/hard-reg-2-lbv.c: Require sse2_runtime effective
target, add -msse2 to dg-options.
* gcc.target/i386/mpx/hard-reg-2-nov.c: Likewise.
* gcc.target/i386/mpx/hard-reg-2-ubv.c: Likewise.

From-SVN: r249049

7 years agoCome up with selftests for predict.c.
Martin Liska [Fri, 9 Jun 2017 07:38:52 +0000 (09:38 +0200)]
Come up with selftests for predict.c.

2017-06-09  Martin Liska  <mliska@suse.cz>

* predict.c (struct branch_predictor): New struct.
(test_prediction_value_range): New test.
(predict_c_tests): New function.
* selftest-run-tests.c (selftest::run_tests): Run the function.
* selftest.h: Declare new tests.

From-SVN: r249048

7 years agocompiler: additional lvalue/rvalue context fixes
Ian Lance Taylor [Fri, 9 Jun 2017 04:35:57 +0000 (04:35 +0000)]
compiler: additional lvalue/rvalue context fixes

    Fix lvalue/rvalue context mixup Set_and_use_temporary_expression's
    do_get_backend() method. Enhance Mark_lvalue_varexprs to handle
    conversions and temporary reference expressions, since occasionally
    the front end emits code such as "deref(conv(tempref)) = ...".

    Reviewed-on: https://go-review.googlesource.com/45141

From-SVN: r249047

7 years agors6000: Don't add an immediate to r0 (PR80966)
Segher Boessenkool [Fri, 9 Jun 2017 03:46:08 +0000 (05:46 +0200)]
rs6000: Don't add an immediate to r0 (PR80966)

If there is a large stack frame the rs6000 -fstack-limit code would
calculate the new stack pointer value using two insns (an addis and
an addi), with r0 as temporary.  Such instructions do not exist.

This patch changes add<mode>3 to expand using a different strategy in
such cases; to FAIL if there is no way to do it (namely, if the source
is r0 and there is no way to get a temporary reg); and it changes
rs6000_emit_allocate_stack to assert gen_add3_insn did in fact emit
instructions.

PR target/80966
* config/rs6000/rs6000.c (rs6000_emit_allocate_stack): Assert that
gen_add3_insn did not fail.
* config/rs6000/rs6000.md (add<mode>3): If asked to add a constant to
r0, construct that number in a temporary reg and add that reg to r0.
If asked to put the result in r0 as well, fail.

gcc/testsuite/
* gcc.target/powerpc/stack-limit.c: New testcase.

From-SVN: r249046

7 years agoDaily bump.
GCC Administrator [Fri, 9 Jun 2017 00:16:23 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r249045

7 years agors6000.c (rs6000_gimple_fold_builtin): Add handling for early expansion of vec_eqv.
Will Schmidt [Thu, 8 Jun 2017 20:51:42 +0000 (20:51 +0000)]
rs6000.c (rs6000_gimple_fold_builtin): Add handling for early expansion of vec_eqv.

[gcc]

2017-06-08  Will Schmidt  <will_schmidt@vnet.ibm.com>

* config/rs6000/rs6000.c (rs6000_gimple_fold_builtin): Add handling
for early expansion of vec_eqv.

[gcc/testsuite]

2017-06-08  Will Schmidt  <will_schmidt@vnet.ibm.com>

* testsuite/gcc.target/powerpc/fold-vec-logical-eqv-char.c: New.
* testsuite/gcc.target/powerpc/fold-vec-logical-eqv-float.c: New.
* testsuite/gcc.target/powerpc/fold-vec-logical-eqv-floatdouble.c: New.
* testsuite/gcc.target/powerpc/fold-vec-logical-eqv-int.c: New.
* testsuite/gcc.target/powerpc/fold-vec-logical-eqv-longlong.c: New.
* testsuite/gcc.target/powerpc/fold-vec-logical-eqv-short.c: New.

From-SVN: r249040

7 years agore PR c/81006 (ICE with zero-size array and #pragma omp task depend)
Jakub Jelinek [Thu, 8 Jun 2017 19:10:49 +0000 (21:10 +0200)]
re PR c/81006 (ICE with zero-size array and #pragma omp task depend)

PR c/81006
* c-typeck.c (handle_omp_array_sections_1): Convert TYPE_MAX_VALUE
to sizetype before size_binop.

* semantics.c (handle_omp_array_sections_1): Convert TYPE_MAX_VALUE
to sizetype before size_binop.

* c-c++-common/gomp/pr81006.c: New test.

From-SVN: r249035

7 years agolibgo: update to 1.8.3 release
Ian Lance Taylor [Thu, 8 Jun 2017 19:02:12 +0000 (19:02 +0000)]
libgo: update to 1.8.3 release

    Reviewed-on: https://go-review.googlesource.com/45150

From-SVN: r249033

7 years agore PR c++/81011 (ICE with #pragma omp task and inaccessible copy-constructor)
Jakub Jelinek [Thu, 8 Jun 2017 18:55:04 +0000 (20:55 +0200)]
re PR c++/81011 (ICE with #pragma omp task and inaccessible copy-constructor)

PR c++/81011
* cp-gimplify.c (cxx_omp_finish_clause): When changing clause
to OMP_CLAUSE_SHARED, also clear OMP_CLAUSE_SHARED_FIRSTPRIVATE
and OMP_CLAUSE_SHARED_READONLY flags.

* g++.dg/gomp/pr81011.C: New test.

From-SVN: r249031

7 years agore PR middle-end/81005 (-fsanitize=null and -fsanitize=alignment doesn't check aggreg...
Jakub Jelinek [Thu, 8 Jun 2017 18:53:16 +0000 (20:53 +0200)]
re PR middle-end/81005 (-fsanitize=null and -fsanitize=alignment doesn't check aggregate arguments of calls)

PR middle-end/81005
* ubsan.c (instrument_null): Avoid pointless code temporary.
(pass_ubsan::execute): Instrument aggregate arguments of calls.

* c-c++-common/ubsan/align-10.c: New test.
* c-c++-common/ubsan/null-13.c: New test.

From-SVN: r249030

7 years agocompiler: lvalue context fixes in Unary_expression::do_get_backend
Ian Lance Taylor [Thu, 8 Jun 2017 18:42:04 +0000 (18:42 +0000)]
compiler: lvalue context fixes in Unary_expression::do_get_backend

    A couple of the Backend::var_expression invocations in
    Unary_expression::do_get_backend were selecting "lvalue" context
    incorrectly (these var exprs were not in an assignment or LHS
    position); fix is to change back to "rvalue" context.

    Reviewed-on: https://go-review.googlesource.com/45136

From-SVN: r249029

7 years agore PR target/81015 (Bad codegen for __builtin_clz(unsigned short))
Uros Bizjak [Thu, 8 Jun 2017 17:28:19 +0000 (19:28 +0200)]
re PR target/81015 (Bad codegen for __builtin_clz(unsigned short))

PR target/81015
Revert:
2016-12-14  Uros Bizjak  <ubizjak@gmail.com>

PR target/59874
* config/i386/i386.md (*ctzhi2): New insn_and_split pattern.
(*clzhi2): Ditto.

testsuite/ChangeLog:

PR target/81015
* gcc.target/i386/pr59874-1.c (foo): Call __builtin_ctzs.
* gcc.target/i386/pr59874-2.c (foo): Call __builtin_clzs.
* gcc.target/i386/pr81015.c: New test.

From-SVN: r249028

7 years agoRemove NO_TRAMPOLINES
Tom de Vries [Thu, 8 Jun 2017 17:16:10 +0000 (17:16 +0000)]
Remove NO_TRAMPOLINES

2017-06-08  Tom de Vries  <tom@codesourcery.com>

* gcc.c-torture/compile/930506-2.c: Use dg-require-effective-target
trampolines instead of NO_TRAMPOLINES.
* gcc.c-torture/execute/20000822-1.c: Same.
* gcc.c-torture/execute/920428-2.c: Same.
* gcc.c-torture/execute/920501-7.c: Same.
* gcc.c-torture/execute/920612-2.c: Same.
* gcc.c-torture/execute/921017-1.c: Same.
* gcc.c-torture/execute/921215-1.c: Same.
* gcc.c-torture/execute/931002-1.c: Same.
* gcc.c-torture/execute/comp-goto-2.c: Same.
* gcc.c-torture/execute/nestfunc-1.c: Same.
* gcc.c-torture/execute/nestfunc-2.c: Same.
* gcc.c-torture/execute/nestfunc-3.c: Same.
* gcc.c-torture/execute/nestfunc-5.c: Same.
* gcc.c-torture/execute/nestfunc-6.c: Same.
* gcc.c-torture/execute/pr24135.c: Same.
* gcc.dg/Wtrampolines.c: Same.
* gcc.dg/torture/stackalign/comp-goto-1.c: Same.
* gcc.dg/torture/stackalign/nested-5.c: Same.
* gcc.dg/torture/stackalign/nested-6.c: Same.
* gcc.dg/torture/stackalign/non-local-goto-3.c: Same.
* gcc.dg/torture/stackalign/non-local-goto-4.c: Same.
* gcc.dg/torture/stackalign/non-local-goto-5.c: Same.
* gcc.dg/trampoline-1.c: Same.
* gcc.dg/tree-prof/pr44777.c: Same.
* gcc.target/i386/pr67770.c: Same.
* lib/gcc.exp (gcc_target_compile): Remove appending of
-DNO_TRAMPOLINES to additional_flags.
* lib/objc.exp (objc_target_compile): Same.

From-SVN: r249027

7 years agoFix no_trampolines test in check_effective_target_trampolines
Tom de Vries [Thu, 8 Jun 2017 17:15:56 +0000 (17:15 +0000)]
Fix no_trampolines test in check_effective_target_trampolines

2017-06-08  Tom de Vries  <tom@codesourcery.com>

* lib/target-supports.exp (check_effective_target_trampolines): Test for
'gcc,no_trampolines' instead of 'no_trampolines'.

From-SVN: r249026

7 years agopredict.c (unlikely_executed_edge_p): Move ahead.
Jan Hubicka [Thu, 8 Jun 2017 16:41:35 +0000 (18:41 +0200)]
predict.c (unlikely_executed_edge_p): Move ahead.

* predict.c (unlikely_executed_edge_p): Move ahead.
(probably_never_executed_edge_p): Use it.

From-SVN: r249025

7 years agocompiler: fix undefined symbol error with unexported method
Ian Lance Taylor [Thu, 8 Jun 2017 16:40:21 +0000 (16:40 +0000)]
compiler: fix undefined symbol error with unexported method

    When an interface I1 in an imported package has an unexported method,
    and is then embedded into another interface I2, in a different
    package, that has other methods, and a type T2 is converted to I2, we
    failed to ever define the required interface method table.  Naturally
    T2 must implement the unexported method, and must therefore either be
    defined in the same package as I1, or embed a type from that package.
    In this case the compiler was assuming that that package would define
    the interface method table, but of course, since I2 was not defined in
    that package, that did not happen.

    The fix is to only assume that the interface method table will be
    defined elsewhere in the case where T2 and I2 are defined in the same
    package.  The compiler ensures that all such interface method tables
    are created, in Gogo::build_interface_method_tables.  This requires
    knowing the package in which an interface type is defined, a simple
    tweak to the importer.

    Testing this revealed that the special case for stub methods created
    for the embedded unexported methods of T2 needs to be done for
    function declarations as it currently is for function definitions, so
    that the newly created interface method tables use the correct name.

    Testing that revealed that the code to determine the pkgpath symbol
    for such stub methods was wrong.  It assumed that one could call
    pkgpath_for_symbol on the pkgpath to get the pkgpath symbol.  Would
    that it twere so simple.  Instead, add a function to look up the
    package, which must be known, and fetch the pkgpath symbol.

    The test for this is https://golang.org/cl/45085.

    Reviewed-on: https://go-review.googlesource.com/45086

From-SVN: r249024

7 years agore PR middle-end/79988 ([CHKP] ICE in tree check: accessed operand 5 of call_expr...
Alexander Ivchenko [Thu, 8 Jun 2017 16:05:59 +0000 (16:05 +0000)]
re PR middle-end/79988 ([CHKP] ICE in tree check: accessed operand 5 of call_expr with 4 operands in ix86_expand_builtin, at config/i386/i386.c:36851)

2017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>

       PR middle-end/79988
       * tree-chkp.c (chkp_gimple_call_builtin_p): Remove
       gimple_call_builtin_p call.

017-06-08  Alexander Ivchenko  <alexander.ivchenko@intel.com>

        PR middle-end/79988
        * gcc.target/i386/mpx/pr79988.c: New test.

From-SVN: r249023

7 years agosystem.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
Jan Hubicka [Thu, 8 Jun 2017 15:24:38 +0000 (17:24 +0200)]
system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.

* system.h (fancy_abort): Annotate by ATTRIBUTE_COLD.
* rtl.h (rtl_check_failed_bounds, rtl_check_failed_type1,
rtl_check_failed_type2, rtl_check_failed_code1,
rtl_check_failed_code2, rtl_check_failed_code_mode,
rtl_check_failed_block_symbol, cwi_check_failed_bounds,
rtvec_check_failed_bounds, rtl_check_failed_flag,
_fatal_insn_not_found, _fatal_insn): Likewise.
* tree.h (tree_contains_struct_check_failed,
tree_check_failed, tree_not_check_failed,
tree_class_check_failed, tree_range_check_failed,
tree_not_class_check_failed, tree_int_cst_elt_check_failed,
tree_vec_elt_check_failed, phi_node_elt_check_failed,
tree_operand_check_failed, omp_clause_check_failed,
omp_clause_operand_check_failed, omp_clause_range_check_failed):
Likewise.

* cp-tree.h (lang_check_failed): Annotate by ATTRIBUTE_COLD.

From-SVN: r249022

7 years agocgraph.c (cgraph_edge::maybe_hot_p): Do not check flag_branch_probabilities.
Jan Hubicka [Thu, 8 Jun 2017 15:15:51 +0000 (17:15 +0200)]
cgraph.c (cgraph_edge::maybe_hot_p): Do not check flag_branch_probabilities.

* cgraph.c (cgraph_edge::maybe_hot_p): Do not check
flag_branch_probabilities.
* ipa-inline.c (edge_badness): Likewise.
* ipa-profile.c (ipa_propagate_frequency_1): Likewise.
* postreload-gcse.c (eliminate_partially_redundant_load): Likewise.
* predict.c (maybe_hot_frequency_p): Likewise.
(probably_never_executed): Likewise.
* sched-ebb.c (schedule_ebbs): Likewise.
* sched-rgn.c (find_single_block_region): Likewise.
* tracer.c (tail_duplicate): Likewise.

From-SVN: r249020

7 years agoopts.c (finish_options): x_flag_reorder_blocks_and_partition no longer requires x_fla...
Jan Hubicka [Thu, 8 Jun 2017 14:47:26 +0000 (16:47 +0200)]
opts.c (finish_options): x_flag_reorder_blocks_and_partition no longer requires x_flag_profile_use.

* opts.c (finish_options): x_flag_reorder_blocks_and_partition no
longer requires x_flag_profile_use.

From-SVN: r249019

7 years agoPR libstdc++/81017 add noexcept to std::function move operations
Jonathan Wakely [Thu, 8 Jun 2017 14:27:45 +0000 (15:27 +0100)]
PR libstdc++/81017 add noexcept to std::function move operations

PR libstdc++/81017
* include/bits/std_function.h (function::function(function&&))
(function::operator=(funtion&&)): Add noexcept.
* testsuite/20_util/function/assign/move.cc: Check for noexcept.
* testsuite/20_util/function/cons/move.cc: Likewise.

From-SVN: r249018

7 years agocfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition instead of flag_reorde...
Jan Hubicka [Thu, 8 Jun 2017 14:23:43 +0000 (16:23 +0200)]
cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition instead of flag_reorder_blocks_and_partition.

* cfgrtl.c (cfg_layout_initialize): Check crtl->has_bb_partition
instead of flag_reorder_blocks_and_partition.
* dbxout.c (dbxout_function_end): Likewise.
* dwarf2out.c (gen_subprogram_die): Likewise.
* haifa-sched.c (sched_create_recovery_edges): Likewise.
* hw-doloop.c (reorg_loops): Likewise.
* varasm.c (assemble_start_function,
assemble_end_function): Likewise.
(decide_function_section): Do not check for
flag_reorder_blocks_and_partition.

From-SVN: r249017

7 years agot-vxworks (LIBGCC2_INCLUDES): Add path to wrn/coreip to the set of -I options...
Olivier Hainque [Thu, 8 Jun 2017 14:08:56 +0000 (14:08 +0000)]
t-vxworks (LIBGCC2_INCLUDES): Add path to wrn/coreip to the set of -I options...

2017-06-08  Olivier Hainque  <hainque@adacore.com>

        * config/t-vxworks (LIBGCC2_INCLUDES): Add path to wrn/coreip to
        the set of -I options, support for direct inclusions of net/uio.h
        by VxWorks header files via ioLib.h.

From-SVN: r249016

7 years agotree-chkp.c (chkp_get_hard_register_var_fake_base_address): New function.
Alexander Ivchenko [Thu, 8 Jun 2017 14:07:21 +0000 (14:07 +0000)]
tree-chkp.c (chkp_get_hard_register_var_fake_base_address): New function.

gcc/ChangeLog:

2017-05-09  Alexander Ivchenko  <aivchenk@gmail.com>

        * tree-chkp.c (chkp_get_hard_register_var_fake_base_address):
        New function.
        (chkp_get_hard_register_fake_addr_expr): Ditto.
        (chkp_build_addr_expr): Add check for hard reg case.
        (chkp_parse_array_and_component_ref): Ditto.
        (chkp_find_bounds_1): Ditto.
        (chkp_process_stmt): Don't generate bounds store for
        hard reg case.

gcc/testsuite/ChangeLog:

2017-05-09  Alexander Ivchenko  <aivchenk@gmail.com>

        * gcc.target/i386/mpx/hard-reg-2-lbv.c: New test.
        * gcc.target/i386/mpx/hard-reg-2-nov.c: New test.
        * gcc.target/i386/mpx/hard-reg-2-ubv.c: New test.

From-SVN: r249015

7 years agopredict.c (maybe_hot_bb_p): Do not check profile status.
Jan Hubicka [Thu, 8 Jun 2017 13:16:44 +0000 (15:16 +0200)]
predict.c (maybe_hot_bb_p): Do not check profile status.

* predict.c (maybe_hot_bb_p): Do not check profile status.
(maybe_hot_edge_p): Likewise.
(probably_never_executed): Check for zero counts even if profile
is not read.
(unlikely_executed_edge_p): New function.
(unlikely_executed_stmt_p): New function.
(unlikely_executed_bb_p): New function.
(set_even_probabilities): Use unlikely predicates.
(combine_predictions_for_bb): Likewise.
(predict_paths_for_bb): Likewise.
(predict_paths_leading_to_edge): Likewise.
(determine_unlikely_bbs): New function.
(estimate_bb_frequencies): Use it.
(compute_function_frequency): Use zero counts even if profile is
not read.
* profile-count.h: Fix typo.

* g++.dg/tree-ssa/counts-1.C: New testcase.
* gcc.dg/tree-ssa/counts-1.c: New testcase.

From-SVN: r249013

7 years agoAdd mov[us]wb store intrinsics.
Julia Koval [Thu, 8 Jun 2017 13:04:43 +0000 (15:04 +0200)]
Add mov[us]wb store intrinsics.

gcc/
* config/i386/avx512bwintrin.h (_mm512_mask_cvtepi16_storeu_epi8,
_mm512_mask_cvtsepi16_storeu_epi8,
_mm512_mask_cvtusepi16_storeu_epi8): New intrinsics.
* config/i386/avx512vlbwintrin.h (_mm256_mask_cvtepi16_storeu_epi8,
_mm_mask_cvtsepi16_storeu_epi8, _mm256_mask_cvtsepi16_storeu_epi8,
_mm_mask_cvtusepi16_storeu_epi8, _mm256_mask_cvtusepi16_storeu_epi8,
_mm_mask_cvtepi16_storeu_epi8): New intrinsics.
* config/i386/i386-builtin-types.def (PV8Q, V8QI): New pointer type.
(VOID_FTYPE_PV32QI_V32HI_USI, VOID_FTYPE_PV8QI_V8HI_UQI,
VOID_FTYPE_PV16QI_V16HI_UHI): New function types.
* config/i386/i386-builtin.def (__builtin_ia32_pmovwb128mem_mask,
__builtin_ia32_pmovwb256mem_mask, __builtin_ia32_pmovswb128mem_mask,
__builtin_ia32_pmovswb256mem_mask, __builtin_ia32_pmovuswb128mem_mask,
__builtin_ia32_pmovuswb256mem_mask,
__builtin_ia32_pmovuswb512mem_mask, __builtin_ia32_pmovswb512mem_mask)
__builtin_ia32_pmovwb512mem_mask): New builtins.

gcc/testsuite/
* gcc.target/i386/avx512bw-vpmovswb-1.c: Add new intrinsics to test.
* gcc.target/i386/avx512bw-vpmovswb-2.c: Ditto.
* gcc.target/i386/avx512bw-vpmovuswb-1.c: Ditto.
* gcc.target/i386/avx512bw-vpmovuswb-2.c: Ditto.
* gcc.target/i386/avx512bw-vpmovwb-1.c: Ditto.
* gcc.target/i386/avx512bw-vpmovwb-2.c: Ditto.

From-SVN: r249012

7 years agore PR sanitizer/80932 (UBSAN: false positive as a result of distribution: c1*(c2...
Marek Polacek [Thu, 8 Jun 2017 12:38:27 +0000 (12:38 +0000)]
re PR sanitizer/80932 (UBSAN: false positive as a result of distribution: c1*(c2*v1-c3*v2)=>c1*c2*v1-c1*c3*v2)

PR sanitize/80932
* c-c++-common/ubsan/pr80932.c: Test with ints, not with long ints.

From-SVN: r249010

7 years ago[PR73350][PR80862] Improve subst for RC-capable insns.
Julia Koval [Thu, 8 Jun 2017 11:24:50 +0000 (13:24 +0200)]
[PR73350][PR80862] Improve subst for RC-capable insns.

PR target/73350,80862
gcc/
* config/i386/subst.md (round): Fix round pattern.
* config/i386/i386.c (ix86_erase_embedded_rounding):
Fix erasing rounding for the fixed pattern.

gcc/testsuite/
* gcc.target/i386/pr73350.c: New test.

From-SVN: r249009

7 years ago* cfgbuild.c (find_many_sub_basic_blocks): Fix thinko.
Jan Hubicka [Thu, 8 Jun 2017 09:34:32 +0000 (11:34 +0200)]
* cfgbuild.c (find_many_sub_basic_blocks): Fix thinko.

From-SVN: r249008

7 years agovx_crtbegin_auto.c: Update year in copyright notice.
Olivier Hainque [Thu, 8 Jun 2017 08:20:39 +0000 (08:20 +0000)]
vx_crtbegin_auto.c: Update year in copyright notice.

2017-06-08  Olivier Hainque  <hainque@adacore.com>

        * vx_crtbegin_auto.c: Update year in copyright notice.
        * vx_crtbegin.c: Likewise.
        * vx_crtbegin.inc: Likewise.
        * vx_crtend.c:  Likewise.

From-SVN: r249007

7 years agogcov: Add block_info::block_info (PR gcov-profile/80911).
Martin Liska [Thu, 8 Jun 2017 07:51:07 +0000 (09:51 +0200)]
gcov: Add block_info::block_info (PR gcov-profile/80911).

2017-06-08  Martin Liska  <mliska@suse.cz>

PR gcov-profile/80911
* gcov.c (block_info::block_info): New constructor.

From-SVN: r249006

7 years agore PR middle-end/77925 (Add __builtin_issubnormal)
Tamar Christina [Thu, 8 Jun 2017 07:38:42 +0000 (07:38 +0000)]
re PR middle-end/77925 (Add __builtin_issubnormal)

2017-06-08  Tamar Christina  <tamar.christina@arm.com>

PR middle-end/77925
PR middle-end/77926
PR middle-end/66462

* gcc/builtins.c (fold_builtin_fpclassify): Remove.
(fold_builtin_interclass_mathfn): Remove.
(expand_builtin): Add builtins to lowering list.
(fold_builtin_n): Remove fold_builtin_varargs.
(fold_builtin_varargs): Remove.
* gcc/builtins.def (BUILT_IN_ISZERO, BUILT_IN_ISSUBNORMAL): New.
* gcc/real.h (get_min_float): New.
(real_format): Add is_ieee_compatible field.
* gcc/real.c (get_min_float): New.
(ieee_single_format): Set is_ieee_compatible flag.
* gcc/gimple-low.c (lower_stm): Define BUILT_IN_FPCLASSIFY,
CASE_FLT_FN (BUILT_IN_ISINF), BUILT_IN_ISINFD32, BUILT_IN_ISINFD64,
BUILT_IN_ISINFD128, BUILT_IN_ISNAND32, BUILT_IN_ISNAND64,
BUILT_IN_ISNAND128, BUILT_IN_ISNAN, BUILT_IN_ISNORMAL, BUILT_IN_ISZERO,
BUILT_IN_ISSUBNORMAL, CASE_FLT_FN (BUILT_IN_FINITE), BUILT_IN_FINITED32
BUILT_IN_FINITED64, BUILT_IN_FINITED128, BUILT_IN_ISFINITE.
(lower_builtin_fpclassify, is_nan, is_normal, is_infinity): New.
(is_zero, is_subnormal, is_finite, use_ieee_int_mode): Likewise.
(lower_builtin_isnan, lower_builtin_isinfinite): Likewise.
(lower_builtin_isnormal, lower_builtin_iszero): Likewise.
(lower_builtin_issubnormal, lower_builtin_isfinite): Likewise.
(emit_tree_cond, get_num_as_int, emit_tree_and_return_var): New.
(mips_single_format): Likewise.
(motorola_single_format): Likewise.
(spu_single_format): Likewise.
(ieee_double_format): Likewise.
(mips_double_format): Likewise.
(motorola_double_format): Likewise.
(ieee_extended_motorola_format): Likewise.
(ieee_extended_intel_128_format): Likewise.
(ieee_extended_intel_96_round_53_format): Likewise.
(ibm_extended_format): Likewise.
(mips_extended_format): Likewise.
(ieee_quad_format): Likewise.
(mips_quad_format): Likewise.
(vax_f_format): Likewise.
(vax_d_format): Likewise.
(vax_g_format): Likewise.
(decimal_single_format): Likewise.
(decimal_quad_format): Likewise.
(iee_half_format): Likewise.
(mips_single_format): Likewise.
(arm_half_format): Likewise.
(real_internal_format): Likewise.
* gcc/doc/extend.texi: Add documentation for built-ins.
* gcc/c/c-typeck.c (convert_arguments): Add BUILT_IN_ISZERO
and BUILT_IN_ISSUBNORMAL.

gcc/testsuite/
2017-06-08  Tamar Christina  <tamar.christina@arm.com>

* gcc.target/aarch64/builtin-fpclassify.c: New codegen test.
* gcc.dg/fold-notunord.c: Removed.
* gcc.dg/torture/floatn-tg-4.h: Add tests for iszero and issubnormal.
* gcc.dg/torture/float128-tg-4.c: Likewise.
* gcc.dg/torture/float128x-tg-4: Likewise.
* gcc.dg/torture/float16-tg-4.c: Likewise.
* gcc.dg/torture/float32-tg-4.c: Likewise.
* gcc.dg/torture/float32x-tg-4.c: Likewise.
* gcc.dg/torture/float64-tg-4.c: Likewise.
* gcc.dg/torture/float64x-tg-4.c: Likewise.
* gcc.dg/pr28796-1.c: Add -O2.
* gcc.dg/builtins-43.c: Check lower instead of gimple.
* gcc.dg/tg-tests.h: Add iszero and issubnormal.
* gcc.dg/pr77925.c: Add to test safe cases.

From-SVN: r249005

7 years agore PR tree-optimization/80928 (SLP vectorization does not handle induction in outer...
Richard Biener [Thu, 8 Jun 2017 07:32:52 +0000 (07:32 +0000)]
re PR tree-optimization/80928 (SLP vectorization does not handle induction in outer loop vectorization)

2017-06-08  Richard Biener  <rguenther@suse.de>

PR tree-optimization/80928
* gcc.dg/vect/slp-perm-8.c: Do not expect check loop to be vectorized.

From-SVN: r249004

7 years agoDaily bump.
GCC Administrator [Thu, 8 Jun 2017 00:16:26 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r249003

7 years agosimple-object-xcoff.c (simple_object_xcoff_find_sections): Search symbol table for...
Tony Reix [Wed, 7 Jun 2017 23:23:55 +0000 (23:23 +0000)]
simple-object-xcoff.c (simple_object_xcoff_find_sections): Search symbol table for .go_export symbol and apply pfn if found.

2017-06-07  Tony Reix  <tony.reix@atos.net>
            Matthieu Sarter  <matthieu.sarter.external@atos.net>
            David Edelsohn  <dje.gcc@gmail.com>

        * simple-object-xcoff.c (simple_object_xcoff_find_sections):
        Search symbol table for .go_export symbol and apply pfn if found.

Co-Authored-By: David Edelsohn <dje.gcc@gmail.com>
Co-Authored-By: Matthieu Sarter <matthieu.sarter.external@atos.net>
From-SVN: r248999

7 years agors6000-c: The return type of the following built-in functions was implemented as...
Carl Love [Wed, 7 Jun 2017 22:23:15 +0000 (22:23 +0000)]
rs6000-c: The return type of the following built-in functions was implemented as int not...

gcc/ChangeLog:

2017-06-07  Carl Love  <cel@us.ibm.com>

* config/rs6000/rs6000-c: The return type of the following
built-in functions was implemented as int not long long.  Fix sign
of return value for the unsigned version of vec_mulo and vec_mule.
vector unsigned long long vec_bperm (vector unsigned long long,
                                     vector unsigned char)
vector signed long long vec_mule (vector signed int,
                                  vector signed int)
vector unsigned long long vec_mule (vector unsigned int,
                                    vector unsigned int)
vector signed long long vec_mulo (vector signed int,
                                  vector signed int)
vector unsigned long long vec_mulo (vector unsigned int,
                                    vector unsigned int)
* doc/extend.texi: Fix the documentation for the built-in
functions.

gcc/testsuite/ChangeLog:

2017-06-07  Carl Love  <cel@us.ibm.com>
* gcc.target/powerpc/builtins-3.c: Fix vec_mule, vec_mulo test cases.
---

From-SVN: r248998

7 years agore PR target/80982 (gcc.target/powerpc/builtins-3-runnable.c fails starting with...
Carl Love [Wed, 7 Jun 2017 22:03:48 +0000 (22:03 +0000)]
re PR target/80982 (gcc.target/powerpc/builtins-3-runnable.c fails starting with its introduction in r248846)

gcc/ChangeLog:

2017-06-07  Carl Love  <cel@us.ibm.com>

PR target/80982
* config/rs6000/altivec.md (double<mode>2): Fix the implementation of
for BE.

From-SVN: r248997

7 years agoaltivec.md: Fix argument swizzle in vec_doublel support...
Carl Love [Wed, 7 Jun 2017 21:59:06 +0000 (21:59 +0000)]
altivec.md: Fix argument swizzle in vec_doublel support...

gcc/ChangeLog:

2017-06-07  Carl Love  <cel@us.ibm.com>

* config/rs6000/altivec.md: Fix argument swizzle in vec_doublel
support, Generate doublehv for signed int/float for BE case only.

From-SVN: r248996

7 years agodoc: update x86 -mcx16 option description
Alexander Monakov [Wed, 7 Jun 2017 21:51:51 +0000 (00:51 +0300)]
doc: update x86 -mcx16 option description

* doc/invoke.texi (mcx16): Rewrite.

From-SVN: r248995

7 years agoruntime: support ia64 in lfstack
Ian Lance Taylor [Wed, 7 Jun 2017 18:12:58 +0000 (18:12 +0000)]
runtime: support ia64 in lfstack

    Patch by Andreas Schwab.

    Reviewed-on: https://go-review.googlesource.com/45071

From-SVN: r248994

7 years agoAdd C++17 deduction guide for std::basic_regex (P0433R2, partial)
Jonathan Wakely [Wed, 7 Jun 2017 15:43:54 +0000 (16:43 +0100)]
Add C++17 deduction guide for std::basic_regex (P0433R2, partial)

* include/bits/regex.h (basic_regex): Add deduction guide from P0433.
* testsuite/28_regex/basic_regex/ctors/deduction.cc: New.

From-SVN: r248990

7 years agoPR libstdc++/81002 fix std::basic_regex range constructor
Jonathan Wakely [Wed, 7 Jun 2017 15:43:35 +0000 (16:43 +0100)]
PR libstdc++/81002 fix std::basic_regex range constructor

PR libstdc++/81002
* include/bits/regex.h (basic_regex): Adjust call to __compile_nfa
so iterator type is deduced.
* include/bits/regex_compiler.h (__compile_nfa): Reorder template
parameters to allow iterator type to be deduced.
* testsuite/28_regex/basic_regex/ctors/basic/iter.cc: New.

From-SVN: r248989

7 years agoI love SVN.
Segher Boessenkool [Wed, 7 Jun 2017 15:35:40 +0000 (17:35 +0200)]
I love SVN.

From-SVN: r248988

7 years agors6000: Remove rs6000_nonimmediate_operand
Segher Boessenkool [Wed, 7 Jun 2017 15:33:58 +0000 (17:33 +0200)]
rs6000: Remove rs6000_nonimmediate_operand

Now rs6000_nonimmediate_operand is just nonimmediate_operand.

* config/rs6000/predicates.md (rs6000_nonimmediate_operand): Delete.
* config/rs6000/rs6000.md (*movsi_internal1, movsi_from_sf,
*mov<mode>_softfloat, and an anonymous splitter): Use
nonimmediate_operand instead of rs6000_nonimmediate_operand.

From-SVN: r248987

7 years agors6000: Remove spe_acc and spefscr
Segher Boessenkool [Wed, 7 Jun 2017 15:32:39 +0000 (17:32 +0200)]
rs6000: Remove spe_acc and spefscr

We can also remove the two other SPE registers.

* config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE_ACC and
SPEFSCR registers.
* config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
(enum rs6000_reg_type): Delete SPE_ACC_TYPE and SPEFSCR_REG_TYPE.
(rs6000_debug_reg_global): Adjust.
(rs6000_init_hard_regno_mode_ok): Adjust.
(rs6000_dbx_register_number): Adjust.
* config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change to 115.
(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
Remove SPE_ACC and SPEFSCR.
(REG_ALLOC_ORDER): Ditto.
(FRAME_POINTER_REGNUM): Change to 111.
(enum reg_class): Remove the SPE_ACC and SPEFSCR registers.
(REG_CLASS_NAMES): Ditto.
(REG_CLASS_CONTENTS): Delete the SPE_ACC and SPEFSCR registers.
(REGISTER_NAMES): Ditto.
(ADDITIONAL_REG_NAMES): Ditto.
(rs6000_reg_names): Ditto.
* config/rs6000/rs6000.md: Renumber some register number
define_constants.

From-SVN: r248986

7 years agors6000: Remove SPE high registers
Segher Boessenkool [Wed, 7 Jun 2017 15:30:55 +0000 (17:30 +0200)]
rs6000: Remove SPE high registers

* config/rs6000/darwin.h (REGISTER_NAMES): Delete the SPE high
registers.
* config/rs6000/rs6000.c (rs6000_reg_names, alt_reg_names): Ditto.
* config/rs6000/rs6000.h (FIRST_PSEUDO_REGISTER): Change from 149
to 117.
(DWARF_REG_TO_UNWIND_COLUMN): Do not define.
(FIXED_REGISTERS, CALL_USED_REGISTERS, CALL_REALLY_USED_REGISTERS):
Delete the SPE high registers.
(REG_ALLOC_ORDER): Ditto.
(enum reg_class): Remove SPE_HIGH_REGS.
(REG_CLASS_NAMES): Ditto.
(REG_CLASS_CONTENTS): Delete the SPE high registers.
(REGISTER_NAMES): Ditto.
(rs6000_reg_names): Ditto.
* doc/tm.texi.in: Remove SPE as example.
* doc/tm.texi: Regenerate.

From-SVN: r248985

7 years agors6000: Remove type attribute "brinc"
Segher Boessenkool [Wed, 7 Jun 2017 15:29:14 +0000 (17:29 +0200)]
rs6000: Remove type attribute "brinc"

Nothing uses it anymore.

* config/rs6000/8540.md (ppc8540_brinc): Delete.
* config/rs6000/e500mc.md (e500mc_brinc): Delete.
* config/rs6000/e500mc64.md (e500mc64_brinc): Delete.
* config/rs6000/rs6000.md (type): Remove "brinc".

From-SVN: r248984

7 years agors6000: Remove spe.md, spe.h, linuxspe.h
Segher Boessenkool [Wed, 7 Jun 2017 15:27:45 +0000 (17:27 +0200)]
rs6000: Remove spe.md, spe.h, linuxspe.h

* config.gcc (powerpc*-*-*): Don't add spe.h to extra_headers.
(powerpc*-linux*spe*): Use ${cpu_type} instead of rs6000.
* config/rs6000/linuxspe.h: Delete file.
* config/rs6000/rs6000.md: Don't include spe.md.
* config/rs6000/spe.h: Delete file.
* config/rs6000/spe.md: Delete file.
* config/rs6000/t-rs6000: Remove spe.md.

From-SVN: r248983

7 years agors6000: Remove reg_or_none500mem_operand
Segher Boessenkool [Wed, 7 Jun 2017 15:25:01 +0000 (17:25 +0200)]
rs6000: Remove reg_or_none500mem_operand

* config/rs6000/predicates.md (reg_or_mem_operand): Reformat.
(reg_or_none500mem_operand): Delete.
* config/rs6000/rs6000.md (extendsfdf2): Use reg_or_mem_operand
instead of reg_or_none500mem_operand.

From-SVN: r248982

7 years agors6000: Remove -mspe options
Segher Boessenkool [Wed, 7 Jun 2017 15:23:49 +0000 (17:23 +0200)]
rs6000: Remove -mspe options

* config/rs6000/rs6000.c (rs6000_option_override_internal): Delete
handling of SPE flags.
* config/rs6000/rs6000.opt (-mspe, -mspe=no, -mspe=yes): Delete.

From-SVN: r248981

7 years agors6000: Remove TARGET_SPE and TARGET_SPE_ABI and friends
Segher Boessenkool [Wed, 7 Jun 2017 15:22:33 +0000 (17:22 +0200)]
rs6000: Remove TARGET_SPE and TARGET_SPE_ABI and friends

* config/rs6000/rs6000-common.c (rs6000_handle_option): Remove
SPE ABI handling.
* config/rs6000/paired.md (paired_negv2sf2): Rename to negv2sf2.
(paired_absv2sf2, paired_addv2sf3, paired_subv2sf3, paired_mulv2sf3,
paired_divv2sf3): Similar.
* config/rs6000/predicates.md: Replace TARGET_SPE, TARGET_SPE_ABI,
SPE_VECTOR_MODE and SPE_HIGH_REGNO_P by 0; simplify.
* config/rs6000/rs6000-builtin.def: Delete RS6000_BUILTIN_E and
RS6000_BUILTIN_S.
Delete BU_SPE_1, BU_SPE_2, BU_SPE_3, BU_SPE_E, BU_SPE_P, and BU_SPE_X.
Rename the paired_* instruction patterns.
* config/rs6000/rs6000-c.c (rs6000_target_modify_macros): Do not
define __SPE__.
* config/rs6000/rs6000-protos.h (invalid_e500_subreg): Delete.
* config/rs6000/rs6000.c: Delete RS6000_BUILTIN_E and RS6000_BUILTIN_S.
(struct rs6000_stack): Delete fields spe_gp_save_offset, spe_gp_size,
spe_padding_size, and spe_64bit_regs_used.  Replace TARGET_SPE and
TARGET_SPE_ABI with 0, simplify.  Replace SPE_VECTOR_MODE with
PAIRED_VECTOR_MODE.
(struct machine_function): Delete field spe_insn_chain_scanned_p.
(spe_func_has_64bit_regs_p): Delete.
(spe_expand_predicate_builtin): Delete.
(spe_expand_evsel_builtin): Delete.
(TARGET_DWARF_REGISTER_SPAN): Do not define.
(TARGET_MEMBER_TYPE_FORCES_BLK): Do not define.
(invalid_e500_subreg): Delete.
(rs6000_legitimize_address): Always force_reg op2 as well, for
paired single memory accesses.
(rs6000_member_type_forces_blk): Delete.
(rs6000_spe_function_arg): Delete.
(rs6000_expand_unop_builtin): Delete SPE handling.
(rs6000_expand_binop_builtin): Ditto.
(spe_expand_stv_builtin): Delete.
(bdesc_2arg_spe): Delete.
(spe_expand_builtin): Delete.
(spe_expand_predicate_builtin): Delete.
(spe_expand_evsel_builtin): Delete.
(rs6000_invalid_builtin): Remove RS6000_BTM_SPE handling.
(spe_init_builtins): Delete.
(spe_func_has_64bit_regs_p): Delete.
(savres_routine_name): Delete "info" parameter.  Adjust callers.
(rs6000_emit_stack_reset): Ditto.
(rs6000_dwarf_register_span): Delete.
* config/rs6000/rs6000.h (TARGET_SPE_ABI, TARGET_SPE,
UNITS_PER_SPE_WORD, SPE_HIGH_REGNO_P, SPE_SIMD_REGNO_P,
SPE_VECTOR_MODE, RS6000_BTM_SPE, RS6000_BUILTIN_E, RS6000_BUILTIN_S):
Delete.
* config/rs6000/rs6000.md (FIRST_SPE_HIGH_REGNO, LAST_SPE_HIGH_REGNO):
Delete.
* config/rs6000/rs6000.opt (-mabi=spe, -mabi=no-spe): Delete.
* config/rs6000/spe.md: Delete every pattern that uses TARGET_SPE.
* config/rs6000/vector.md (absv2sf2, negv2sf2, addv2sf3, subv2sf3,
mulv2sf3, divv2sf3): Delete expanders.

From-SVN: r248980

7 years agors6000: Remove UNSPEC_MV_CR_GT
Segher Boessenkool [Wed, 7 Jun 2017 15:16:44 +0000 (17:16 +0200)]
rs6000: Remove UNSPEC_MV_CR_GT

config/rs6000/rs6000.md (UNSPEC_MV_CR_GT): Delete.

From-SVN: r248979

7 years agors6000: Remove output_e500_flip_gt_bit
Segher Boessenkool [Wed, 7 Jun 2017 15:14:29 +0000 (17:14 +0200)]
rs6000: Remove output_e500_flip_gt_bit

* config/rs6000/rs6000-protos.h (output_e500_flip_gt_bit): Delete.
* config/rs6000/rs6000.c: Ditto.

From-SVN: r248978

7 years agors6000: Remove rs6000_cbranch_operator
Segher Boessenkool [Wed, 7 Jun 2017 15:06:53 +0000 (17:06 +0200)]
rs6000: Remove rs6000_cbranch_operator

rs6000_cbranch_operator now is just comparison_operator, so just use
that directly.

* config/rs6000/predicated.md (rs6000_cbranch_operator): Delete.
* config/rs6000/rs6000.md: Replace rs6000_cbranch_operator by
comparison_operator.

From-SVN: r248977

7 years agors6000: Remove -mfloat-gprs
Segher Boessenkool [Wed, 7 Jun 2017 15:04:46 +0000 (17:04 +0200)]
rs6000: Remove -mfloat-gprs

This deletes -mfloat-gprs and the variables that go with it.

* config/rs6000/rs6000.c: Remove everything related to -mfloat-gprs.
* config/rs6000/rs6000.opt: Ditto.
* config/rs6000/t-rtems: Ditto.

From-SVN: r248976

7 years agors6000: Remove TARGET_E500_{SINGLE,DOUBLE}
Segher Boessenkool [Wed, 7 Jun 2017 14:59:11 +0000 (16:59 +0200)]
rs6000: Remove TARGET_E500_{SINGLE,DOUBLE}

TARGET_E500_{SINGLE,DOUBLE} is always false now.

* config/rs6000/predicates.md: Replace TARGET_E500_DOUBLE and
TARGET_E500_SINGLE by 0, simplify.
* config/rs6000/rs6000.c: Ditto.
(rs6000_option_override_internal): Delete CHECK_E500_OPTIONS.
(spe_build_register_parallel): Delete.
* config/rs6000/rs6000.h: Delete TARGET_E500_SINGLE,
TARGET_E500_DOUBLE, and CHECK_E500_OPTIONS.
* config/rs6000/rs6000.md: Replace TARGET_E500_DOUBLE,
TARGET_E500_SINGLE, and <E500_CONVERT> by 0, simplify.
(E500_CONVERT): Delete.
* config/rs6000/spe.md: Remove many patterns and all define_constants.

From-SVN: r248975

7 years agors6000: Remove TARGET_FPRS
Segher Boessenkool [Wed, 7 Jun 2017 14:55:54 +0000 (16:55 +0200)]
rs6000: Remove TARGET_FPRS

Since rs6000 no longer supports SPE, TARGET_FPRS now always is true.

This makes TARGET_{SF,DF}_SPE always false.  Many patterns in spe.md
can now be deleted; which makes it possible to merge e.g. negdd2 with
*negdd2_fpr.

Finally, e500.h is deleted (it isn't used).

* config/rs6000/darwin.md: Replace TARGET_FPRS by 1 and simplify.
* config/rs6000/dfp.md: Ditto.
(negdd2, *negdd2_fpr): Merge.
(absdd2, *absdd2_fpr): Merge.
(negtd2, *negtd2_fpr): Merge.
(abstd2, *abstd2_fpr): Merge.
* config/rs6000/e500.h: Delete file.
* config/rs6000/predicates.md (rs6000_cbranch_operator): Replace
TARGET_FPRS by 1 and simplify.
* config/rs6000/rs6000-c.c: Ditto.
* config/rs6000/rs6000.c: Ditto.  Also replace TARGET_SF_SPE and
TARGET_DF_SPE by 0.
* config/rs6000/rs6000.h: Ditto.  Delete TARGET_SF_SPE and
TARGET_DF_SPE.
* config/rs6000/rs6000.md: Ditto.
(floatdidf2, *floatdidf2_fpr): Merge.
(move_from_CR_gt_bit): Delete.
* config/rs6000/spe.md: Replace TARGET_FPRS by 1 and simplify.
(E500_CR_IOR_COMPARE): Delete.
(All patterns that require !TARGET_FPRS): Delete.
* config/rs6000/vsx.md: Replace TARGET_FPRS by 1 and simplify.

From-SVN: r248974

7 years agoclass.c (layout_class_type): Restructure overlong-bitfield tpe search.
Nathan Sidwell [Wed, 7 Jun 2017 13:41:20 +0000 (13:41 +0000)]
class.c (layout_class_type): Restructure overlong-bitfield tpe search.

* class.c (layout_class_type): Restructure overlong-bitfield tpe
search.

From-SVN: r248971

7 years agoFix white space.
David Edelsohn [Wed, 7 Jun 2017 12:41:20 +0000 (08:41 -0400)]
Fix white space.

From-SVN: r248969

7 years agoaix-unwind.h (MD_FALLBACK_FRAME_STATE_FOR): Define unconditionally.
Tony Reix [Wed, 7 Jun 2017 12:35:19 +0000 (12:35 +0000)]
aix-unwind.h (MD_FALLBACK_FRAME_STATE_FOR): Define unconditionally.

2017-06-07  Tony Reix  <tony.reix@atos.net>
            Matthieu Sarter  <matthieu.sarter.external@atos.net>
            David Edelsohn  <dje.gcc@gmail.com>

        * config/rs6000/aix-unwind.h (MD_FALLBACK_FRAME_STATE_FOR): Define
        unconditionally.
        (ucontext_for): Add 64-bit AIX 6.1, 7.1, 7.2 support.  Add 32-bit
        AIX 7.2 support.

Co-Authored-By: David Edelsohn <dje.gcc@gmail.com>
Co-Authored-By: Matthieu Sarter <matthieu.sarter.external@atos.net>
From-SVN: r248968

7 years agoAdd C++17 deduction guide for std::basic_string (P0433R2, partial)
Jonathan Wakely [Wed, 7 Jun 2017 12:35:08 +0000 (13:35 +0100)]
Add C++17 deduction guide for std::basic_string (P0433R2, partial)

* include/bits/alloc_traits.h (__is_allocator, _RequireAllocator):
New trait and alias for detecting Allocator-like types.
* include/bits/basic_string.h (basic_string): Add deduction guide
from P0433.
* include/ext/alloc_traits.h (__gnu_cxx::__alloc_traits): Add template
parameter with default template argument that causes substitution
failures for types that cannot be allocators.
* testsuite/21_strings/basic_string/cons/char/deduction.cc: New.
* testsuite/21_strings/basic_string/cons/wchar_t/deduction.cc: New.

From-SVN: r248967

7 years agoPR c++/80990 use cv-qualifiers in class template argument deduction
Jonathan Wakely [Wed, 7 Jun 2017 11:34:36 +0000 (12:34 +0100)]
PR c++/80990 use cv-qualifiers in class template argument deduction

gcc/cp:

PR c++/80990
* pt.c (do_class_deduction): Build qualified type.

gcc/testsuite:

PR c++/80990
* g++.dg/cpp1z/class-deduction39.C: New.

From-SVN: r248966

7 years ago* passes.def (pass_iv_canon): Move before pass_loop_distribution.
Bin Cheng [Wed, 7 Jun 2017 11:31:44 +0000 (11:31 +0000)]
* passes.def (pass_iv_canon): Move before pass_loop_distribution.

From-SVN: r248965

7 years agographds.c (add_edge): Intitialize edge's attached data.
Bin Cheng [Wed, 7 Jun 2017 11:29:37 +0000 (11:29 +0000)]
graphds.c (add_edge): Intitialize edge's attached data.

* graphds.c (add_edge): Intitialize edge's attached data.
(foll_in_subgraph, dfs_fst_edge, dfs_next_edge): New function
pointer parameter.  Call pointed function on each edge during
graph traversing.  Skip traversing the edge when the function
returns true.
(graphds_dfs, graphds_scc): Ditto.
(for_each_edge): New parameter.  Pass the new parameter to callback
function.
* graphds.h (skip_edge_callback): New function pointer type.
(graphds_dfs, graphds_scc): New function pointer parameter.
(graphds_edge_callback, for_each_edge): New parameter.

From-SVN: r248964

7 years agotree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor out code checking...
Bin Cheng [Wed, 7 Jun 2017 11:28:17 +0000 (11:28 +0000)]
tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor out code checking if runtime alias check is possible to below ...

* tree-vect-data-refs.c (vect_mark_for_runtime_alias_test): Factor
out code checking if runtime alias check is possible to below ...
Call the new function.
* tree-data-ref.c (runtime_alias_check_p): ... to new function.
* tree-data-ref.h (runtime_alias_check_p): New decalaration.

From-SVN: r248962

7 years agore PR sanitizer/80932 (UBSAN: false positive as a result of distribution: c1*(c2...
Marek Polacek [Wed, 7 Jun 2017 11:19:40 +0000 (11:19 +0000)]
re PR sanitizer/80932 (UBSAN: false positive as a result of distribution: c1*(c2*v1-c3*v2)=>c1*c2*v1-c1*c3*v2)

PR sanitizer/80932
* fold-const.c (extract_muldiv_1) <case MINUS_EXPR>: Add
TYPE_OVERFLOW_WRAPS check.

* c-c++-common/ubsan/pr80932.c: New test.

From-SVN: r248961

7 years agol_fma_double_1.c: Adjust test strings.
Bin Cheng [Wed, 7 Jun 2017 11:00:48 +0000 (11:00 +0000)]
l_fma_double_1.c: Adjust test strings.

gcc/testsuite
* gcc.target/i386/l_fma_double_1.c: Adjust test strings.
* gcc.target/i386/l_fma_double_2.c: Ditto.
* gcc.target/i386/l_fma_double_3.c: Ditto.
* gcc.target/i386/l_fma_double_4.c: Ditto.
* gcc.target/i386/l_fma_double_5.c: Ditto.
* gcc.target/i386/l_fma_double_6.c: Ditto.
* gcc.target/i386/l_fma_float_1.c: Ditto.
* gcc.target/i386/l_fma_float_2.c: Ditto.
* gcc.target/i386/l_fma_float_3.c: Ditto.
* gcc.target/i386/l_fma_float_4.c: Ditto.
* gcc.target/i386/l_fma_float_5.c: Ditto.
* gcc.target/i386/l_fma_float_6.c: Ditto.

From-SVN: r248960

7 years agotree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop if versioning is...
Bin Cheng [Wed, 7 Jun 2017 10:56:54 +0000 (10:56 +0000)]
tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop if versioning is required.

* tree-vect-loop-manip.c (vect_do_peeling): Don't skip vector loop
if versioning is required.
* tree-vect-loop.c (vect_analyze_loop_2): Merge niter check for loop
peeling with the check for versioning.

From-SVN: r248959

7 years agotree-vectorizer.h (vect_build_loop_niters): New parameter.
Bin Cheng [Wed, 7 Jun 2017 10:53:02 +0000 (10:53 +0000)]
tree-vectorizer.h (vect_build_loop_niters): New parameter.

* tree-vectorizer.h (vect_build_loop_niters): New parameter.
* tree-vect-loop-manip.c (vect_build_loop_niters): New parameter.
Set true to new parameter if new ssa variable is defined.
(vect_gen_vector_loop_niters): Refactor.  Set range information
for the new vector loop bound variable.
(vect_do_peeling): Ditto.

From-SVN: r248958

7 years agotree-affine.c (ssa.h): Include header file.
Bin Cheng [Wed, 7 Jun 2017 10:49:09 +0000 (10:49 +0000)]
tree-affine.c (ssa.h): Include header file.

* tree-affine.c (ssa.h): Include header file.
(tree_to_aff_combination): Handle (T1)(X - CST) when inner type
has wrapping overflow behavior.

From-SVN: r248957

7 years ago* tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X).
Bin Cheng [Wed, 7 Jun 2017 10:47:26 +0000 (10:47 +0000)]
* tree-affine.c (tree_to_aff_combination): Handle (T1)(X + X).

From-SVN: r248956

7 years ago(aff_combination_expand): Move (T1)(X *+- CST) simplification to ...
Bin Cheng [Wed, 7 Jun 2017 10:46:21 +0000 (10:46 +0000)]
(aff_combination_expand): Move (T1)(X *+- CST) simplification to ...

(tree_to_aff_combination): ... here.

From-SVN: r248955

7 years agotree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New reg_pressure model function.
Bin Cheng [Wed, 7 Jun 2017 10:45:03 +0000 (10:45 +0000)]
tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New reg_pressure model function.

* tree-ssa-loop-ivopts.c (ivopts_estimate_reg_pressure): New
reg_pressure model function.
(ivopts_global_cost_for_size): Delete.
(determine_set_costs, iv_ca_recount_cost): Call new model function
ivopts_estimate_reg_pressure.

From-SVN: r248954

7 years agoaarch64.c (aarch64_rtx_costs): Make sdiv more expensive than udiv.
Tamar Christina [Wed, 7 Jun 2017 10:06:29 +0000 (10:06 +0000)]
aarch64.c (aarch64_rtx_costs): Make sdiv more expensive than udiv.

2017-06-07  Tamar Christina  <tamar.christina@arm.com>

* config/aarch64/aarch64.c (aarch64_rtx_costs): Make sdiv more expensive than udiv.
Remove floating point cases from mod.

From-SVN: r248953

7 years agoRTEMS: Use TLS for Ada run-time
Sebastian Huber [Wed, 7 Jun 2017 09:49:27 +0000 (09:49 +0000)]
RTEMS: Use TLS for Ada run-time

Do not use the RTEMS-specific task variables for the Ada run-time since
they are not available in RTEMS 4.12 or later.  Use thread-local storage
instead.

gcc/ada
* Makefile.in (rtems): Use TLS implementation for s-tpopsp.adb.
* s-tpopsp-rtems.adb: Delete.

From-SVN: r248952

7 years agoaarch-cost-tables.h (cortexa53_extra_cost): Increase idiv cost.
Tamar Christina [Wed, 7 Jun 2017 09:45:53 +0000 (09:45 +0000)]
aarch-cost-tables.h (cortexa53_extra_cost): Increase idiv cost.

2017-06-07  Tamar Christina  <tamar.christina@arm.com>

* config/arm/aarch-cost-tables.h (cortexa53_extra_cost): Increase idiv cost.

From-SVN: r248951

7 years agore PR tree-optimization/80928 (SLP vectorization does not handle induction in outer...
Richard Biener [Wed, 7 Jun 2017 09:39:53 +0000 (09:39 +0000)]
re PR tree-optimization/80928 (SLP vectorization does not handle induction in outer loop vectorization)

2017-06-07  Richard Biener  <rguenther@suse.de>

PR tree-optimization/80928
* gcc.dg/vect/slp-13.c: Adjust patterns with vect_pack_trunc.
* gcc.dg/vect/slp-13-big-array.c: Likewise.

From-SVN: r248950

7 years ago2017-06-07 Tamar Christina <tamar.christina@arm.com>
Tamar Christina [Wed, 7 Jun 2017 09:36:17 +0000 (09:36 +0000)]
2017-06-07  Tamar Christina  <tamar.christina@arm.com>

        * config/aarch64/aarch64.md
        (copysignsf3): Fix mask generation.

From-SVN: r248949

7 years agore PR tree-optimization/80928 (SLP vectorization does not handle induction in outer...
Richard Biener [Wed, 7 Jun 2017 09:10:17 +0000 (09:10 +0000)]
re PR tree-optimization/80928 (SLP vectorization does not handle induction in outer loop vectorization)

2017-06-07  Richard Biener  <rguenther@suse.de>

PR tree-optimization/80928
* gcc.dg/vect/slp-perm-8.c: Avoid vectorizing loop computing
check_results.

From-SVN: r248948

7 years agodumpfile.h (enum tree_dump_index): Rename TDI_generic to TDI_gimple.
Jakub Jelinek [Wed, 7 Jun 2017 08:57:11 +0000 (10:57 +0200)]
dumpfile.h (enum tree_dump_index): Rename TDI_generic to TDI_gimple.

* dumpfile.h (enum tree_dump_index): Rename TDI_generic to
TDI_gimple.
(class dump_manager): Add register_dumps method.
* dumpfile.c: Include langhooks.h.
(dump_files): Use 0 instead of 3/4/5 for TDI_{original,gimple,nested}.
(FIRST_AUTO_NUMBERED_DUMP): Decrease to 1.
(FIRST_ME_AUTO_NUMBERED_DUMP): Define.
(dump_manager::dump_register): Start with 512 entries instead of 32.
(dump_manager::register_dumps): New method.
* toplev.c (general_init): Instead of invoking register_dumps
langhook, invoke register_dumps method on the dump manager.
* gimplify.c (gimplify_function_tree): Use TDI_gimple instead of
TDI_generic.

* gimple-parser.c (c_parser_parse_gimple_body): Use TDI_gimple instead
of TDI_generic.

From-SVN: r248947

7 years agoClarify define_insn documentation
Richard Sandiford [Wed, 7 Jun 2017 06:45:36 +0000 (06:45 +0000)]
Clarify define_insn documentation

This patch tries to clarify some of the restrictions on define_insn
conditions, and also on the use of "#".

2017-06-06  Richard Sandiford  <richard.sandiford@linaro.org>

gcc/
* doc/md.texi: Clarify the restrictions on a define_insn condition.
Say that # requires an associated define_split to exist, and that
the define_split must be suitable for use after register allocation.

From-SVN: r248946

7 years agocfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.
Jan Hubicka [Wed, 7 Jun 2017 06:42:43 +0000 (08:42 +0200)]
cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.

* cfgbuild.c (find_bb_boundaries): Initialize profile of split blocks.
(compute_outgoing_frequencies): Also initialize zero counts.
(find_many_sub_basic_blocks): Do not produce uninitialized profile
around loops; preserve more of profile when nothing changes.

From-SVN: r248945

7 years agoRemove aarch32 support for falkor/qdf24xx, not in released hardware.
Jim Wilson [Wed, 7 Jun 2017 01:55:12 +0000 (01:55 +0000)]
Remove aarch32 support for falkor/qdf24xx, not in released hardware.

gcc/
* config/aarch64/aarch64-cost-tables.h (qdf24xx_extra_costs): Move to
here.
* config/arm/aarch-cost-tables.h (qdf24xx_extra_costs): From here.
* config/arm/arm-cpu-cdata.h: Regenerate.
* config/arm/arm-cpu-data.h, config/arm/arm-cpu.h: Likewise.
* config/arm/arm-tables.opt, config/arm/arm-tune.md: Likewise.
* config/arm/arm-cpus.in: Delete falkor and qdf24xx entries.
* config/arm/arm.c (arm_qdf24xx_tune): Delete.
* config/arm/bpabi.h (BE8_LINK_SPEC): Delete falkor and qdf24xx
support.
* config/arm/t-aprofile (MULTILIB_MATCHES): Delete falkor and qdf24xx
support.
* config/arm/t-rmprofile: Likewise.
* doc/invoke.texi (ARM Options): Drop falkor and qdf24xx support.

From-SVN: r248944

7 years agoDaily bump.
GCC Administrator [Wed, 7 Jun 2017 00:16:31 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r248942

7 years agoname-lookup.c (suggest_alternatives_for): Use qualified lookup sans using directives.
Nathan Sidwell [Tue, 6 Jun 2017 23:02:49 +0000 (23:02 +0000)]
name-lookup.c (suggest_alternatives_for): Use qualified lookup sans using directives.

* name-lookup.c (suggest_alternatives_for): Use qualified lookup
sans using directives.  Don't walk into inline namespaces.

* g++.dg/pr45330.C: Add inline namespace case.

From-SVN: r248938

7 years agocompiler: typing fixes for Interface_mtable_expression
Ian Lance Taylor [Tue, 6 Jun 2017 20:57:03 +0000 (20:57 +0000)]
compiler: typing fixes for Interface_mtable_expression

    Interface_mtable_expression::do_type computes a type that incorporates
    Go type descriptors for the interface methods, whereas in order to
    have strict type agreement with the mtable data, the interface method
    fields need to be C function ptrs. Change the type recipe accordingly,
    and then update Interface_mtable_expression::do_get_backend to compute
    a revised backend type that uses the correct fcn types.

    Reviewed-on: https://go-review.googlesource.com/44750

From-SVN: r248934

7 years agore PR fortran/80975 (matmul for zero-length arrays)
Thomas Koenig [Tue, 6 Jun 2017 19:18:37 +0000 (19:18 +0000)]
re PR fortran/80975 (matmul for zero-length arrays)

2017-06-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/80975
* m4/matmul_internal.m4:  Move zeroing before early return.
* generated/matmul_c10.c: Regenerated.
* generated/matmul_c16.c: Regenerated.
* generated/matmul_c4.c: Regenerated.
* generated/matmul_c8.c: Regenerated.
* generated/matmul_i1.c: Regenerated.
* generated/matmul_i16.c: Regenerated.
* generated/matmul_i2.c: Regenerated.
* generated/matmul_i4.c: Regenerated.
* generated/matmul_i8.c: Regenerated.
* generated/matmul_r10.c: Regenerated.
* generated/matmul_r16.c: Regenerated.
* generated/matmul_r4.c: Regenerated.
* generated/matmul_r8.c: Regenerated.
* generated/matmulavx128_c10.c: Regenerated.
* generated/matmulavx128_c16.c: Regenerated.
* generated/matmulavx128_c4.c: Regenerated.
* generated/matmulavx128_c8.c: Regenerated.
* generated/matmulavx128_i1.c: Regenerated.
* generated/matmulavx128_i16.c: Regenerated.
* generated/matmulavx128_i2.c: Regenerated.
* generated/matmulavx128_i4.c: Regenerated.
* generated/matmulavx128_i8.c: Regenerated.
* generated/matmulavx128_r10.c: Regenerated.
* generated/matmulavx128_r16.c: Regenerated.
* generated/matmulavx128_r4.c: Regenerated.
* generated/matmulavx128_r8.c: Regenerated.

2017-06-06  Thomas Koenig  <tkoenig@gcc.gnu.org>

PR fortran/80975
* gfortran.dg/matmul_16.f90: New test.
* gfortran.dg/inline_matmul_18.f90: New test.

From-SVN: r248932

7 years agore PR c/79983 (Improve enum and struct redefinition diagnostic)
Marek Polacek [Tue, 6 Jun 2017 17:40:34 +0000 (17:40 +0000)]
re PR c/79983 (Improve enum and struct redefinition diagnostic)

PR c/79983
* c-decl.c (start_struct): Use the location of TYPE_STUB_DECL of
ref.
(start_enum): Use the location of TYPE_STUB_DECL of enumtype.

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

From-SVN: r248927

7 years agosparc: Fix stack references in return delay slot.
David S. Miller [Tue, 6 Jun 2017 17:02:22 +0000 (17:02 +0000)]
sparc: Fix stack references in return delay slot.

gcc/

PR target/80968
* config/sparc/sparc.c (sparc_expand_prologue): Emit frame
blockage if function uses alloca.

gcc/testsuite/

* gcc.target/sparc/sparc-ret-3.c: New test.

From-SVN: r248926

7 years agoImprove debug output of loop data prefetching.
Maxim Kuvyrkov [Tue, 6 Jun 2017 17:01:00 +0000 (17:01 +0000)]
Improve debug output of loop data prefetching.

* tree-ssa-loop-prefetch.c (struct mem_ref_group, struct mem_ref):
New "uid" fields to hold pretty-print IDs of group and ref.
Memory references are now identified as <group_id>:<ref_id>
instead of using [random] addresses.
(dump_mem_details): Simplify, no functional change.
(dump_mem_ref): Simplify and make output more concise.
Replace couple of fprintf's throughout code with calls to dump_mem_ref.
(find_or_create_group): Initialize group uid.
(record_ref): Initialize ref uid.  Improve debug output.
(prune_group_by_reuse, should_issue_prefetch_p,)
(should_issue_prefetch_p, schedule_prefetches, issue_prefetch_ref,)
(mark_nontemporal_store, determine_loop_nest_reuse):
Improve debug output.

Change-Id: Ia594d5854de96183f3c5a669c161e5a9a73a29d7

From-SVN: r248925