gcc.git
7 years agoDon't fold conversion from a constant variable.
Jason Merrill [Fri, 9 Jun 2017 22:46:51 +0000 (18:46 -0400)]
Don't fold conversion from a constant variable.

* call.c (convert_like_real): Remove "inner" parameter.
Don't replace a constant with its value.
* cp-gimplify.c (cp_fully_fold): Use cp_fold_rvalue.

From-SVN: r249083

7 years agoAdd support for mutually-incompatible fix-it hints
David Malcolm [Fri, 9 Jun 2017 20:57:38 +0000 (20:57 +0000)]
Add support for mutually-incompatible fix-it hints

This patch adds a method:
  rich_location::fixits_cannot_be_auto_applied
for ensuring that mutually-incompatible fix-its hints don't
lead to insane output from -fdiagnostics-generate-patch.

Fix-it hints within such rich_location instances are printed
as normal by diagnostic_show_locus, but don't affect the output
of -fdiagnostics-generate-patch.

gcc/ChangeLog:
* diagnostic.c (diagnostic_report_diagnostic): Only add fixits
to the edit_context if they can be auto-applied.

gcc/testsuite/ChangeLog:
* gcc.dg/plugin/diagnostic-test-show-locus-bw.c
(test_mutually_exclusive_suggestions): New test function.
* gcc.dg/plugin/diagnostic-test-show-locus-generate-patch.c
(test_mutually_exclusive_suggestions): New test function.
* gcc.dg/plugin/diagnostic-test-show-locus-parseable-fixits.c
(test_mutually_exclusive_suggestions): New test function.
* gcc.dg/plugin/diagnostic_plugin_test_show_locus.c
(test_show_locus): Add special-case for
"test_mutually_exclusive_suggestions".

libcpp/ChangeLog:
* include/line-map.h
(rich_location::fixits_cannot_be_auto_applied): New method.
(rich_location::fixits_can_be_auto_applied_p): New accessor.
(rich_location::m_fixits_cannot_be_auto_applied): New field.
* line-map.c (rich_location::rich_location): Initialize new field.

From-SVN: r249081

7 years agoFix template argument of nullptr_t type.
Jason Merrill [Fri, 9 Jun 2017 20:18:06 +0000 (16:18 -0400)]
Fix template argument of nullptr_t type.

* pt.c (convert_nontype_argument): Check NULLPTR_TYPE_P rather than
nullptr_node.

From-SVN: r249080

7 years agoFix array decay handling in constant expressions.
Jason Merrill [Fri, 9 Jun 2017 20:13:44 +0000 (16:13 -0400)]
Fix array decay handling in constant expressions.

* parser.c (cp_parser_constant_expression): Check
potential_rvalue_constant_expression after decay_conversion.
* pt.c (convert_nontype_argument): Don't require linkage in C++17.

From-SVN: r249079

7 years agoPR c++/80384 - ICE with dependent noexcept-specifier
Jason Merrill [Fri, 9 Jun 2017 20:13:38 +0000 (16:13 -0400)]
PR c++/80384 - ICE with dependent noexcept-specifier

* pt.c (dependent_type_p_r) [FUNCTION_TYPE]: Check for dependent
noexcept-specifier.

From-SVN: r249078

7 years ago* constexpr.c (potential_constant_expression_1): Allow 'this' capture.
Jason Merrill [Fri, 9 Jun 2017 20:13:32 +0000 (16:13 -0400)]
* constexpr.c (potential_constant_expression_1): Allow 'this' capture.

From-SVN: r249077

7 years agoopts.c (finish_options): If -fsplit-stack, disable implicit -forder-blocks-and-partition.
Ian Lance Taylor [Fri, 9 Jun 2017 18:44:28 +0000 (18:44 +0000)]
opts.c (finish_options): If -fsplit-stack, disable implicit -forder-blocks-and-partition.

gcc/:
* opts.c (finish_options): If -fsplit-stack, disable implicit
-forder-blocks-and-partition.
* doc/invoke.texi (Optimize Options): Document that when using
-fsplit-stack -forder-blocks-and-partition is not implicitly
enabled.
gcc/go/:
* go-lang.c (go_langhook_post_options): If -fsplit-stack is turned
on, disable implicit -forder-blocks-and-partition.
gcc/testsuite/:
* gcc.dg/tree-prof/split-1.c: New test.

From-SVN: r249071

7 years agobuiltin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST, [...]): New.
Jan Hubicka [Fri, 9 Jun 2017 18:36:50 +0000 (20:36 +0200)]
builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST, [...]): New.

* builtin-attrs.def (ATTR_NORETURN_NOTHROW_LEAF_COLD_LIST,
ATTR_CONST_NORETURN_NOTHROW_LEAF_COLD_LIST,
ATTR_TMPURE_NORETURN_NOTHROW_LEAF_COLD_LIST): New.
* builtins.def (abort, trap, unreachable): Declare cold.
* calls.c (flags_from_decl_or_type): Lookup ECF_COLD.
* tree-core.h (ECF_COLD): New.
* tree.c (set_call_expr_flags): Handle ECF_COLD.
(build_common_builtin_nodes): Mark unreachable and abort as cold.

* class.c (build_vtbl_initializer): Mark dvirt_fn as cold.
* decl.c (cxx_init_decl_processing, push_throw_library_fn): Likewise.
(excpet.c): Mark terminate as cold.

* gcc.dg/predict-14.c: Avoid cold function detection.
* gcc.target/i386/umod-3.c: Likewise.

From-SVN: r249070

7 years ago* predict.c (unlikely_executed_stmt_p): Cleanup.
Jan Hubicka [Fri, 9 Jun 2017 18:34:29 +0000 (18:34 +0000)]
* predict.c (unlikely_executed_stmt_p): Cleanup.

From-SVN: r249069

7 years ago* predict.c (unlikely_executed_stmt_p): Cleanup.
Jan Hubicka [Fri, 9 Jun 2017 18:32:47 +0000 (20:32 +0200)]
* predict.c (unlikely_executed_stmt_p): Cleanup.

From-SVN: r249068

7 years agoaarch64.md (lrint<GPF:mode><GPI:mode>2): New.
Tamar Christina [Fri, 9 Jun 2017 13:33:35 +0000 (13:33 +0000)]
aarch64.md (lrint<GPF:mode><GPI:mode>2): New.

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

* config/aarch64/aarch64.md (lrint<GPF:mode><GPI:mode>2): New.

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

* gcc.target/aarch64/lrint-matherr.h: New.
* gcc.target/aarch64/inline-lrint_1.c: New.
* gcc.target/aarch64/inline-lrint_2.c: New.
* gcc.target/aarch64/no-inline-lrint_1.c: New.
* gcc.target/aarch64/no-inline-lrint_2.c: New.

From-SVN: r249064

7 years agotree-ssa-loop-im.c (execute_sm): Do not force multi-threaded model if the ref is...
Richard Biener [Fri, 9 Jun 2017 13:31:27 +0000 (13:31 +0000)]
tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded model if the ref is always written to.

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

* tree-ssa-loop-im.c (execute_sm): Do not force multi-threaded
model if the ref is always written to.

From-SVN: r249063

7 years agoarm.c (arm_rtx_costs_internal): Make sdiv more expensive than udiv.
Tamar Christina [Fri, 9 Jun 2017 13:22:39 +0000 (13:22 +0000)]
arm.c (arm_rtx_costs_internal): Make sdiv more expensive than udiv.

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

* config/arm/arm.c (arm_rtx_costs_internal): Make sdiv more expensive than udiv.

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

* gcc.target/arm/sdiv_costs_1.c: New.

From-SVN: r249062

7 years agoSupport move-only deleters in std::shared_ptr (LWG 2802)
Jonathan Wakely [Fri, 9 Jun 2017 13:20:37 +0000 (14:20 +0100)]
Support move-only deleters in std::shared_ptr (LWG 2802)

* doc/xml/manual/intro.xml: Document LWG 2802, 2873 and 2942 changes.
* include/bits/shared_ptr.h (shared_ptr): Use rvalues for deleters
(LWG 2802).
* include/bits/shared_ptr_base.h (_Sp_ebo_helper, _Sp_counted_deleter
(_Sp_counted_deleter::_Impl, __shared_count, __shared_ptr): Likewise.
* testsuite/20_util/shared_ptr/cons/lwg2802.cc: New.

From-SVN: r249061

7 years agoAdd "sorry, target cannot support label values" for nvptx
Tom de Vries [Fri, 9 Jun 2017 13:11:52 +0000 (13:11 +0000)]
Add "sorry, target cannot support label values" for nvptx

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

PR target/80855
* config/nvptx/nvptx.md (define_expand "mov<QHSDISDFM>"): Error out with
"target cannot support label values" when encountering LABEL_REF.

* gcc.target/nvptx/label-values.c: New test.

From-SVN: r249060

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