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
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
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
Jan Hubicka [Fri, 9 Jun 2017 11:36:59 +0000 (13:36 +0200)]
* gimple.h (gimple_check_failed): Mark cold.
From-SVN: r249055
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
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
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
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
Tamar Christina [Fri, 9 Jun 2017 08:10:51 +0000 (08:10 +0000)]
Reverted r249005 until PowerPC and AIX issues sorted.
From-SVN: r249050
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
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
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
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
GCC Administrator [Fri, 9 Jun 2017 00:16:23 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249045
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
GCC Administrator [Thu, 8 Jun 2017 00:16:26 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r249003
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
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
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
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
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
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
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
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
Segher Boessenkool [Wed, 7 Jun 2017 15:35:40 +0000 (17:35 +0200)]
I love SVN.
From-SVN: r248988
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
David Edelsohn [Wed, 7 Jun 2017 12:41:20 +0000 (08:41 -0400)]
Fix white space.
From-SVN: r248969
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
GCC Administrator [Wed, 7 Jun 2017 00:16:31 +0000 (00:16 +0000)]
Daily bump.
From-SVN: r248942
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
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
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
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
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
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
Maxim Kuvyrkov [Tue, 6 Jun 2017 17:00:46 +0000 (17:00 +0000)]
Add debug counter for loop array prefetching.
* dbgcnt.def (prefetch): New debug counter.
* tree-ssa-loop-prefetch.c (dbgcnt.h): New include.
(schedule_prefetches): Stop issueing prefetches if debug counter
tripped.
Change-Id: Ia6160364735a889fb6d2370be21d98f87c0fe962
From-SVN: r248924