gcc.git
5 years agogimple-parser.c (c_parser_gimple_statement): Remove questionable auto-promotion to...
Richard Biener [Tue, 14 May 2019 13:57:03 +0000 (13:57 +0000)]
gimple-parser.c (c_parser_gimple_statement): Remove questionable auto-promotion to VIEW_CONVERT_EXPR.

2019-05-14  Richard Biener  <rguenther@suse.de>

* gimple-parser.c (c_parser_gimple_statement): Remove
questionable auto-promotion to VIEW_CONVERT_EXPR.
(c_parser_gimple_typespec): Split out from __MEM parsing.
(c_parser_gimple_postfix_expression): Handle __VIEW_CONVERT.
* tree-pretty-print.c (dump_generic_node): Dump VIEW_CONVERT_EXPR
as __VIEW_CONVERT with -gimple.

* gcc.dg/gimplefe-40.c: New testcase.

From-SVN: r271170

5 years agoReduce header dependencies in <iterator>
Jonathan Wakely [Tue, 14 May 2019 12:47:39 +0000 (13:47 +0100)]
Reduce header dependencies in <iterator>

* include/std/iterator: Include <iosfwd> instead of <istream> and
<ostream>.

From-SVN: r271169

5 years agoRemoving unused, non-standard function in _Rb_tree
Jonathan Wakely [Tue, 14 May 2019 12:19:10 +0000 (13:19 +0100)]
Removing unused, non-standard function in _Rb_tree

* include/bits/stl_tree.h (_Rb_tree::erase(const Key*, const Key*)):
Remove unused, non-standard function.

From-SVN: r271168

5 years agoMake std::match_results::_M_resize more useful
Jonathan Wakely [Tue, 14 May 2019 12:19:05 +0000 (13:19 +0100)]
Make std::match_results::_M_resize more useful

As both callers of match_results::_M_resize(unsigned) immediately follow
it with a loop to update the value of each sub_match, that behaviour can
be moved into _M_resize itself. The first caller fills the container
with unmatched subs, which can be done with vector::assign, and the
second caller clears the container to establish a specific state, which
can be provided by a new member function specific to that purpose.

Tangentially, I also noticed that match_results::max_size() doesn't
account for the three special sub_match objects that are always present
in a fully established result state. This patch also fixes that.

* include/bits/regex.h (match_results::max_size()): Adjust return
value to account for prefix/suffix/unmatched subs.
(match_results::_M_resize(unsigned int)): Use _Base_type::assign to
reset the contained sub matches.
(match_results::_M_establish_failed_match(_Bi_iter)): Add new member
function to set result state following a failed match.
* include/bits/regex.tcc (__regex_algo_impl): Remove loop to set
sub_match states after _M_resize. Use _M_establish_failed_match.

From-SVN: r271167

5 years agoPR libstdc++/69724 avoid temporary in std::thread construction
Jonathan Wakely [Tue, 14 May 2019 12:01:15 +0000 (13:01 +0100)]
PR libstdc++/69724 avoid temporary in std::thread construction

The std::thread constructor creates (and then moves) an unnecessary
temporary copy of each argument. Optimize it to only make the one copy
that is required.

PR libstdc++/69724
* include/std/thread (thread::_State_impl, thread::_S_make_state):
Replace single _Callable parameter with variadic _Args pack, to
forward them directly to the tuple of decayed copies.
* testsuite/30_threads/thread/cons/69724.cc: New test.

From-SVN: r271166

5 years agoInconsistency wrt Allocators in basic_string assignment (LWG2579)
Nina Dinka Ranns [Tue, 14 May 2019 11:48:31 +0000 (11:48 +0000)]
Inconsistency wrt Allocators in basic_string assignment (LWG2579)

2019-05-14  Nina Dinka Ranns  <dinka.ranns@gmail.com>

Inconsistency wrt Allocators in basic_string assignment (LWG2579)
* include/bits/basic_string.h: (operator=(const basic_string&):
Move allocator decision to assign.
(assign(const basic_string&)): Move allocator decision here.
* testsuite/21_strings/basic_string/allocator/char/copy_assign.cc:
Add tests.
* testsuite/21_strings/basic_string/allocator/wchar_t/copy_assign.cc:
Add tests.

From-SVN: r271165

5 years agoReapply r270597.
Paolo Carlini [Tue, 14 May 2019 11:43:55 +0000 (11:43 +0000)]
Reapply r270597.

2019-05-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR preprocessor/90382
* decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
min_location.
2019-05-14  Paolo Carlini  <paolo.carlini@oracle.com>

PR preprocessor/90382
* g++.dg/diagnostic/trailing1.C: New test.

From-SVN: r271164

5 years agoFix min_location usage in line-map.c (PR preprocessor/90382).
Martin Liska [Tue, 14 May 2019 11:41:53 +0000 (13:41 +0200)]
Fix min_location usage in line-map.c (PR preprocessor/90382).

2019-05-14  Martin Liska  <mliska@suse.cz>

PR preprocessor/90382
* line-map.c (first_map_in_common_1): Handle ADHOC
locations.

From-SVN: r271163

5 years agoDo a refactoring in linemap (PR preprocessor/90382).
Martin Liska [Tue, 14 May 2019 11:41:40 +0000 (13:41 +0200)]
Do a refactoring in linemap (PR preprocessor/90382).

2019-05-14  Martin Liska  <mliska@suse.cz>

PR preprocessor/90382
* include/line-map.h (get_data_from_adhoc_loc): Add const to
the first argument.
(get_location_from_adhoc_loc): Likewise.
* line-map.c(get_data_from_adhoc_loc):  Add const to
the first argument.
(get_location_from_adhoc_loc): Likewise.
(get_combined_adhoc_loc): Use get_location_from_adhoc_loc
(or get_data_from_adhoc_loc).
(get_range_from_adhoc_loc): Likewise.
(get_pure_location): Likewise.
(linemap_position_for_loc_and_offset): Likewise.
(linemap_lookup): Likewise.
(linemap_ordinary_map_lookup): Likewise.
(linemap_macro_map_lookup): Likewise.
(linemap_get_expansion_line): Likewise.
(linemap_get_expansion_filename): Likewise.
(linemap_location_in_system_header_p): Likewise.
(linemap_location_from_macro_expansion_p): Likewise.
(linemap_macro_loc_to_exp_point): Likewise.
(linemap_resolve_location): Likewise.
(linemap_unwind_toward_expansion): Likewise.
(linemap_unwind_to_first_non_reserved_loc): Likewise.
(linemap_expand_location): Likewise.
(linemap_dump_location): Likewise.

From-SVN: r271162

5 years agoFix indentation in testsuite utility header
Jonathan Wakely [Tue, 14 May 2019 11:17:27 +0000 (12:17 +0100)]
Fix indentation in testsuite utility header

* testsuite/util/testsuite_allocator.h (memory_resource)
(default_resource_mgr): Fix indentation.

From-SVN: r271161

5 years agoAdd __gnu_test::NullablePointer utility to testsuite
Jonathan Wakely [Tue, 14 May 2019 11:17:23 +0000 (12:17 +0100)]
Add __gnu_test::NullablePointer utility to testsuite

* testsuite/20_util/allocator_traits/members/allocate_hint_nonpod.cc:
Use operator-> to access raw pointer member.
* testsuite/23_containers/vector/59829.cc: Likewise.
* testsuite/23_containers/vector/bool/80893.cc: Likewise.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Use NullablePointer.
* testsuite/util/testsuite_allocator.h (NullablePointer): New utility
for tests.
(PointerBase, PointerBase_void): Derive from NullablePointer and use
its constructors and equality operators. Change converting
constructors to use operator-> to access private member of the other
pointer type.
(PointerBase_void::operator->()): Add, for access to private member.
(operator-(PointerBase, PointerBase)): Change to hidden friend.
(operator==(PointerBase, PointerBase)): Remove.
(operator!=(PointerBase, PointerBase)): Remove.

From-SVN: r271160

5 years agoFix unique_ptr pretty printer for empty classes
Jonathan Wakely [Tue, 14 May 2019 11:17:18 +0000 (12:17 +0100)]
Fix unique_ptr pretty printer for empty classes

The printer was confused when unique_ptr<T,D>::pointer is an empty
class, or the deleter is not empty. Instead of assuming the tuple has a
single _M_head_impl member manually inspect the tuple base classes to
get the first element.

* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__): Do
not assume field called _M_head_impl is the first tuple element.
* testsuite/libstdc++-prettyprinters/compat.cc: Make tuple
implementation more accurate.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Check unique_ptr with
empty pointer type and non-empty deleter.

From-SVN: r271159

5 years agoLWG 2899 - Make is_move_constructible correct for unique_ptr
Jonathan Wakely [Tue, 14 May 2019 11:17:11 +0000 (12:17 +0100)]
LWG 2899 - Make is_move_constructible correct for unique_ptr

* include/bits/unique_ptr.h (__uniq_ptr_impl): Add move constructor,
move assignment operator.
(__uniq_ptr_impl::release(), __uniq_ptr_impl::reset(pointer)): Add.
(__uniq_ptr_data): New class template with conditionally deleted
special members.
(unique_ptr, unique_ptr<T[], D>): Change type of data member from
__uniq_ptr_impl<T, D> to __uniq_ptr_data<T, D>. Define move
constructor and move assignment operator as defaulted.
(unique_ptr::release(), unique_ptr<T[], D>::release()): Forward to
__uniq_ptr_impl::release().
(unique_ptr::reset(pointer), unique_ptr<T[], D>::reset<U>(U)): Forward
to __uniq_ptr_impl::reset(pointer).
* python/libstdcxx/v6/printers.py (UniquePointerPrinter.__init__):
Check for new __uniq_ptr_data type.
* testsuite/20_util/unique_ptr/dr2899.cc: New test.

From-SVN: r271158

5 years agoFix a test-case in PR middle-end/90340.
Martin Liska [Tue, 14 May 2019 10:00:53 +0000 (10:00 +0000)]
Fix a test-case in PR middle-end/90340.

2019-05-14  marxin  <mliska@suse.cz>

PR middle-end/90340
* gcc.dg/tree-ssa/pr90340-2.c: Add case-values-threshold
param.

From-SVN: r271156

5 years agore PR tree-optimization/88828 (Inefficient update of the first element of vector...
Richard Biener [Tue, 14 May 2019 09:11:15 +0000 (09:11 +0000)]
re PR tree-optimization/88828 (Inefficient update of the first element of vector registers)

2019-05-14  Richard Biener  <rguenther@suse.de>
H.J. Lu  <hongjiu.lu@intel.com>

PR tree-optimization/88828
* tree-ssa-forwprop.c (simplify_vector_constructor): Handle
permuting in a single non-constant element not extracted
from a vector.

* gcc.target/i386/pr88828-1.c: New test.
* gcc.target/i386/pr88828-1a.c: Likewise.
* gcc.target/i386/pr88828-1b.c: Likewise.
* gcc.target/i386/pr88828-1c.c: Likewise.
* gcc.target/i386/pr88828-4a.c: Likewise.
* gcc.target/i386/pr88828-4b.c: Likewise.
* gcc.target/i386/pr88828-5a.c: Likewise.
* gcc.target/i386/pr88828-5b.c: Likewise.
* gcc.target/i386/pr88828-7.c: Likewise.
* gcc.target/i386/pr88828-7a.c: Likewise.
* gcc.target/i386/pr88828-7b.c: Likewise.
* gcc.target/i386/pr88828-8.c: Likewise.
* gcc.target/i386/pr88828-8a.c: Likewise.
* gcc.target/i386/pr88828-8b.c: Likewise.
* gcc.target/i386/pr88828-9.c: Likewise.
* gcc.target/i386/pr88828-9a.c: Likewise.
* gcc.target/i386/pr88828-9b.c: Likewise.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
From-SVN: r271153

5 years ago2019-05-14 Przemyslaw Wirkus <przemyslaw.wirkus@arm.com\>
Przemyslaw Wirkus [Tue, 14 May 2019 08:07:56 +0000 (08:07 +0000)]
2019-05-14  Przemyslaw Wirkus  <przemyslaw.wirkus@arm.com\>

gcc/
* internal-fn.def (SIGNBIT): New.
* config/aarch64/aarch64-simd.md (signbitv2sf2): New expand
defined.
(signbitv4sf2): Likewise.

gcc/testsuite/
* gcc.target/aarch64/signbitv4sf.c: New test.
* gcc.target/aarch64/signbitv2sf.c: New test.

From-SVN: r271149

5 years ago[MIPS] Skip forward src into next insn when the SRC reg is dead.
Chenghua Xu [Tue, 14 May 2019 01:42:59 +0000 (01:42 +0000)]
[MIPS] Skip forward src into next insn when the SRC reg is dead.

PR target/90357
gcc/
* config/mips/mips.c (mips_split_move): Skip forward SRC into
next insn when the SRC reg is dead.

From-SVN: r271146

5 years agogimple-ssa-strength-reduction.c (lookup_cand): Adjust index by 1.
Bin Cheng [Tue, 14 May 2019 01:18:53 +0000 (01:18 +0000)]
gimple-ssa-strength-reduction.c (lookup_cand): Adjust index by 1.

* gimple-ssa-strength-reduction.c (lookup_cand): Adjust index by 1.
(alloc_cand_and_find_basis): Ditto.
(backtrace_base_for_ref, create_mul_ssa_cand): Remove if-then-else.
(create_mul_imm_cand, create_add_ssa_cand): Ditto.
(create_add_imm_cand, slsr_process_cast): Ditto.
(slsr_process_copy, replace_mult_candidate): Ditto.
(replace_rhs_if_not_dup, replace_one_candidate): Ditto.
(dump_cand_vec, analyze_candidates_and_replace): Skip NULL element.
(pass_strength_reduction::execute): Init the first NULL element.

From-SVN: r271145

5 years agoDaily bump.
GCC Administrator [Tue, 14 May 2019 00:16:19 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271144

5 years ago* sv.po: Update.
Joseph Myers [Mon, 13 May 2019 22:26:22 +0000 (23:26 +0100)]
* sv.po: Update.

From-SVN: r271139

5 years agoUse releasing_vec more broadly.
Jason Merrill [Mon, 13 May 2019 21:32:14 +0000 (17:32 -0400)]
Use releasing_vec more broadly.

* cp-tree.h (struct releasing_vec): Replace get_ref method with
operator&.
(vec_safe_push, vec_safe_reserve, vec_safe_length, vec_safe_splice):
Forwarding functions for releasing_vec.
(release_tree_vector): Declare but don't define.
* call.c (build_op_delete_call, build_temp, call_copy_ctor)
(perform_direct_initialization_if_possible): Use releasing_vec.
* constexpr.c (cxx_eval_vec_init_1, cxx_eval_store_expression):
Likewise.
* cp-gimplify.c (cp_fold): Likewise.
* cvt.c (force_rvalue, ocp_convert): Likewise.
* decl.c (get_tuple_decomp_init): Likewise.
* except.c (build_throw): Likewise.
* init.c (perform_member_init, expand_default_init): Likewise.
* method.c (do_build_copy_assign, locate_fn_flags): Likewise.
* parser.c (cp_parser_userdef_char_literal)
(cp_parser_userdef_numeric_literal)
(cp_parser_userdef_string_literal)
(cp_parser_perform_range_for_lookup)
(cp_parser_range_for_member_function, cp_parser_omp_for_loop)
(cp_parser_omp_for_loop_init): Likewise.
* pt.c (tsubst_copy_and_build, do_class_deduction): Likewise.
* semantics.c (calculate_direct_bases, calculate_bases)
(finish_omp_barrier, finish_omp_flush, finish_omp_taskwait)
(finish_omp_taskyield, finish_omp_cancel)
(finish_omp_cancellation_point): Likewise.
* tree.c (build_vec_init_elt, strip_typedefs, strip_typedefs_expr)
(build_min_non_dep_op_overload): Likewise.
* typeck.c (build_function_call_vec, cp_build_function_call_nary)
(cp_build_modify_expr): Likewise.
* typeck2.c (build_functional_cast): Likewise.

From-SVN: r271138

5 years agolibgo: drop Solaris 10 support
Ian Lance Taylor [Mon, 13 May 2019 20:26:24 +0000 (20:26 +0000)]
libgo: drop Solaris 10 support

    Based on patch by Rainer Orth.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176938

From-SVN: r271135

5 years agoPR libstdc++/90454.cc path construction from void*
Jonathan Wakely [Mon, 13 May 2019 20:12:06 +0000 (21:12 +0100)]
PR libstdc++/90454.cc path construction from void*

Make the filesystem::path constructors SFINAE away for void* arguments,
instead of giving an error due to iterator_traits<void*>::reference.

PR libstdc++/90454.cc path construction from void*
* include/bits/fs_path.h (path::_Path): Use remove_pointer so that
pointers to void are rejected as well as void.
* include/experimental/bits/fs_path.h (path::_Path): Likewise.
* testsuite/27_io/filesystem/path/construct/80762.cc: Also check
pointers to void.
* testsuite/experimental/filesystem/path/construct/80762.cc: Likewise.

From-SVN: r271134

5 years agoFix testsuite regression caused by r271077
Jonathan Wakely [Mon, 13 May 2019 20:11:52 +0000 (21:11 +0100)]
Fix testsuite regression caused by r271077

* g++.dg/cpp0x/Wattributes1.C: Adjust dg-error line number to fix
regression, by matching a note on any line.
* g++.dg/cpp0x/Wattributes2.C: Add another copy that checks the
correct line number is matched without depending on a library header.

From-SVN: r271133

5 years agoSmall markup changes to PBDS docs
Jonathan Wakely [Mon, 13 May 2019 20:11:47 +0000 (21:11 +0100)]
Small markup changes to PBDS docs

* doc/xml/manual/policy_data_structures.xml: Comment out stray
<remark> elements. Fix formatting of bibliography references.

From-SVN: r271132

5 years ago[PATCH] A couple of driver cleanups
Nathan Sidwell [Mon, 13 May 2019 15:57:33 +0000 (15:57 +0000)]
[PATCH] A couple of driver cleanups

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00624.html
* gcc.c (execute): Simplify cond-expr into if.  Reformat comment.
(run_attempt): Reformat line break

From-SVN: r271131

5 years agore PR bootstrap/90418 (powerpc-darwin9 bootstrap fails after r271013)
David Edelsohn [Mon, 13 May 2019 15:19:50 +0000 (15:19 +0000)]
re PR bootstrap/90418 (powerpc-darwin9 bootstrap fails after r271013)

PR target/90418
        * config/rs6000/rs6000.c (rs6000_emit_epilogue): Don't load EH
        data registers in sibcall epilogues.
        Don't add EH_RETURN_STACKADJ_RTX to sp in sibcall epilogues.

From-SVN: r271130

5 years agore PR target/89221 (--enable-frame-pointer does not work as intended)
Uros Bizjak [Mon, 13 May 2019 14:58:38 +0000 (16:58 +0200)]
re PR target/89221 (--enable-frame-pointer does not work as intended)

PR target/89221
* configure.ac (--enable-frame-pointer):
Disable by default for cygwin and mingw.
* configure: Regenerate.

From-SVN: r271129

5 years ago2019-05-13 Chung-Lin Tang <cltang@codesourcery.com>
Chung-Lin Tang [Mon, 13 May 2019 13:32:00 +0000 (13:32 +0000)]
2019-05-13  Chung-Lin Tang  <cltang@codesourcery.com>

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
libgomp/
* libgomp-plugin.h (struct goacc_asyncqueue): Declare.
(struct goacc_asyncqueue_list): Likewise.
(goacc_aq): Likewise.
(goacc_aq_list): Likewise.
(GOMP_OFFLOAD_openacc_register_async_cleanup): Remove.
(GOMP_OFFLOAD_openacc_async_test): Remove.
(GOMP_OFFLOAD_openacc_async_test_all): Remove.
(GOMP_OFFLOAD_openacc_async_wait): Remove.
(GOMP_OFFLOAD_openacc_async_wait_async): Remove.
(GOMP_OFFLOAD_openacc_async_wait_all): Remove.
(GOMP_OFFLOAD_openacc_async_wait_all_async): Remove.
(GOMP_OFFLOAD_openacc_async_set_async): Remove.
(GOMP_OFFLOAD_openacc_exec): Adjust declaration.
(GOMP_OFFLOAD_openacc_cuda_get_stream): Likewise.
(GOMP_OFFLOAD_openacc_cuda_set_stream): Likewise.
(GOMP_OFFLOAD_openacc_async_exec): Declare.
(GOMP_OFFLOAD_openacc_async_construct): Declare.
(GOMP_OFFLOAD_openacc_async_destruct): Declare.
(GOMP_OFFLOAD_openacc_async_test): Declare.
(GOMP_OFFLOAD_openacc_async_synchronize): Declare.
(GOMP_OFFLOAD_openacc_async_serialize): Declare.
(GOMP_OFFLOAD_openacc_async_queue_callback): Declare.
(GOMP_OFFLOAD_openacc_async_host2dev): Declare.
(GOMP_OFFLOAD_openacc_async_dev2host): Declare.

* libgomp.h (struct acc_dispatch_t): Define 'async' sub-struct.
(gomp_acc_insert_pointer): Adjust declaration.
(gomp_copy_host2dev): New declaration.
(gomp_copy_dev2host): Likewise.
(gomp_map_vars_async): Likewise.
(gomp_unmap_tgt): Likewise.
(gomp_unmap_vars_async): Likewise.
(gomp_fini_device): Likewise.

* oacc-async.c (get_goacc_thread): New function.
(get_goacc_thread_device): New function.
(lookup_goacc_asyncqueue): New function.
(get_goacc_asyncqueue): New function.
(acc_async_test): Adjust code to use new async design.
(acc_async_test_all): Likewise.
(acc_wait): Likewise.
(acc_wait_async): Likewise.
(acc_wait_all): Likewise.
(acc_wait_all_async): Likewise.
(goacc_async_free): New function.
(goacc_init_asyncqueues): Likewise.
(goacc_fini_asyncqueues): Likewise.
* oacc-cuda.c (acc_get_cuda_stream): Adjust code to use new async
design.
(acc_set_cuda_stream): Likewise.
* oacc-host.c (host_openacc_exec): Adjust parameters, remove 'async'.
(host_openacc_register_async_cleanup): Remove.
(host_openacc_async_exec): New function.
(host_openacc_async_test): Adjust parameters.
(host_openacc_async_test_all): Remove.
(host_openacc_async_wait): Remove.
(host_openacc_async_wait_async): Remove.
(host_openacc_async_wait_all): Remove.
(host_openacc_async_wait_all_async): Remove.
(host_openacc_async_set_async): Remove.
(host_openacc_async_synchronize): New function.
(host_openacc_async_serialize): New function.
(host_openacc_async_host2dev): New function.
(host_openacc_async_dev2host): New function.
(host_openacc_async_queue_callback): New function.
(host_openacc_async_construct): New function.
(host_openacc_async_destruct): New function.
(struct gomp_device_descr host_dispatch): Remove initialization of old
interface, add intialization of new async sub-struct.
* oacc-init.c (acc_shutdown_1): Adjust to use gomp_fini_device.
(goacc_attach_host_thread_to_device): Remove old async code usage.
* oacc-int.h (goacc_init_asyncqueues): New declaration.
(goacc_fini_asyncqueues): Likewise.
(goacc_async_copyout_unmap_vars): Likewise.
(goacc_async_free): Likewise.
(get_goacc_asyncqueue): Likewise.
(lookup_goacc_asyncqueue): Likewise.

* oacc-mem.c (memcpy_tofrom_device): Adjust code to use new async
design.
(present_create_copy): Adjust code to use new async design.
(delete_copyout): Likewise.
(update_dev_host): Likewise.
(gomp_acc_insert_pointer): Add async parameter, adjust code to use new
async design.
(gomp_acc_remove_pointer): Adjust code to use new async design.
* oacc-parallel.c (GOACC_parallel_keyed): Adjust code to use new async
design.
(GOACC_enter_exit_data): Likewise.
(goacc_wait): Likewise.
(GOACC_update): Likewise.
* oacc-plugin.c (GOMP_PLUGIN_async_unmap_vars): Change to assert fail
when called, warn as obsolete in comment.

* target.c (goacc_device_copy_async): New function.
(gomp_copy_host2dev): Remove 'static', add goacc_asyncqueue parameter,
add goacc_device_copy_async case.
(gomp_copy_dev2host): Likewise.
(gomp_map_vars_existing): Add goacc_asyncqueue parameter, adjust code.
(gomp_map_pointer): Likewise.
(gomp_map_fields_existing): Likewise.
(gomp_map_vars_internal): New always_inline function, renamed from
gomp_map_vars.
(gomp_map_vars): Implement by calling gomp_map_vars_internal.
(gomp_map_vars_async): Implement by calling gomp_map_vars_internal,
passing goacc_asyncqueue argument.
(gomp_unmap_tgt): Remove static, add attribute_hidden.
(gomp_unref_tgt): New function.
(gomp_unmap_vars_internal): New always_inline function, renamed from
gomp_unmap_vars.
(gomp_unmap_vars): Implement by calling gomp_unmap_vars_internal.
(gomp_unmap_vars_async): Implement by calling
gomp_unmap_vars_internal, passing goacc_asyncqueue argument.
(gomp_fini_device): New function.
(gomp_exit_data): Adjust gomp_copy_dev2host call.
(gomp_load_plugin_for_device): Remove old interface, adjust to load
new async interface.
(gomp_target_fini): Adjust code to call gomp_fini_device.

* plugin/plugin-nvptx.c (struct cuda_map): Remove.
(struct ptx_stream): Remove.
(struct nvptx_thread): Remove current_stream field.
(cuda_map_create): Remove.
(cuda_map_destroy): Remove.
(map_init): Remove.
(map_fini): Remove.
(map_pop): Remove.
(map_push): Remove.
(struct goacc_asyncqueue): Define.
(struct nvptx_callback): Define.
(struct ptx_free_block): Define.
(struct ptx_device): Remove null_stream, active_streams, async_streams,
stream_lock, and next fields.
(enum ptx_event_type): Remove.
(struct ptx_event): Remove.
(ptx_event_lock): Remove.
(ptx_events): Remove.
(init_streams_for_device): Remove.
(fini_streams_for_device): Remove.
(select_stream_for_async): Remove.
(nvptx_init): Remove ptx_events and ptx_event_lock references.
(nvptx_attach_host_thread_to_device): Remove CUDA_ERROR_NOT_PERMITTED
case.
(nvptx_open_device): Add free_blocks initialization, remove
init_streams_for_device call.
(nvptx_close_device): Remove fini_streams_for_device call, add
free_blocks destruct code.
(event_gc): Remove.
(event_add): Remove.
(nvptx_exec): Adjust parameters and code.
(nvptx_free): Likewise.
(nvptx_host2dev): Remove.
(nvptx_dev2host): Remove.
(nvptx_set_async): Remove.
(nvptx_async_test): Remove.
(nvptx_async_test_all): Remove.
(nvptx_wait): Remove.
(nvptx_wait_async): Remove.
(nvptx_wait_all): Remove.
(nvptx_wait_all_async): Remove.
(nvptx_get_cuda_stream): Remove.
(nvptx_set_cuda_stream): Remove.
(GOMP_OFFLOAD_alloc): Adjust code.
(GOMP_OFFLOAD_free): Likewise.
(GOMP_OFFLOAD_openacc_register_async_cleanup): Remove.
(GOMP_OFFLOAD_openacc_exec): Adjust parameters and code.
(GOMP_OFFLOAD_openacc_async_test_all): Remove.
(GOMP_OFFLOAD_openacc_async_wait): Remove.
(GOMP_OFFLOAD_openacc_async_wait_async): Remove.
(GOMP_OFFLOAD_openacc_async_wait_all): Remove.
(GOMP_OFFLOAD_openacc_async_wait_all_async): Remove.
(GOMP_OFFLOAD_openacc_async_set_async): Remove.
(cuda_free_argmem): New function.
(GOMP_OFFLOAD_openacc_async_exec): New plugin hook function.
(GOMP_OFFLOAD_openacc_create_thread_data): Adjust code.
(GOMP_OFFLOAD_openacc_cuda_get_stream): Adjust code.
(GOMP_OFFLOAD_openacc_cuda_set_stream): Adjust code.
(GOMP_OFFLOAD_openacc_async_construct): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_destruct): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_test): Remove and re-implement.
(GOMP_OFFLOAD_openacc_async_synchronize): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_serialize): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_queue_callback): New plugin hook function.
(cuda_callback_wrapper): New function.
(cuda_memcpy_sanity_check): New function.
(GOMP_OFFLOAD_host2dev): Remove and re-implement.
(GOMP_OFFLOAD_dev2host): Remove and re-implement.
(GOMP_OFFLOAD_openacc_async_host2dev): New plugin hook function.
(GOMP_OFFLOAD_openacc_async_dev2host): New plugin hook function.

From-SVN: r271128

5 years ago[DWARF] dwarf2out cleanups
Nathan Sidwell [Mon, 13 May 2019 11:56:57 +0000 (11:56 +0000)]
[DWARF] dwarf2out cleanups

https://gcc.gnu.org/ml/gcc-patches/2019-05/msg00485.html
* dwarf2out.c (breakout_comdat_types): Move comment to correct
piece of code.
(const_ok_for_output_1): Balance parens around #if/#else/#endif
(gen_member_die): Move abstract origin check earlier.  Only VARs
can be static_inline_p.  Simplify splicing control flow.

From-SVN: r271127

5 years agotree-vect-slp.c (vect_get_and_check_slp_defs): Handle VIEW_CONVERT_EXPR.
Richard Biener [Mon, 13 May 2019 11:42:08 +0000 (11:42 +0000)]
tree-vect-slp.c (vect_get_and_check_slp_defs): Handle VIEW_CONVERT_EXPR.

2019-05-13  Richard Biener  <rguenther@suse.de>

* tree-vect-slp.c (vect_get_and_check_slp_defs): Handle
VIEW_CONVERT_EXPR.
(vect_build_slp_tree_1): Likewise.

From-SVN: r271126

5 years agore PR tree-optimization/90402 (ICE in slpeel_duplicate_current_defs_from_edges)
Richard Biener [Mon, 13 May 2019 11:37:21 +0000 (11:37 +0000)]
re PR tree-optimization/90402 (ICE in slpeel_duplicate_current_defs_from_edges)

2019-05-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/90402
* tree-if-conv.c (tree_if_conversion): Value number only
the loop body by making the latch an exit of the region
as well.
* tree-ssa-sccvn.c (process_bb): Add flag whether to skip
processing PHIs.
(do_rpo_vn): Deal with multiple edges into the entry block
that are not backedges inside the region by skipping PHIs
of the entry block.

* gcc.dg/torture/pr90402-1.c: New testcase.

From-SVN: r271125

5 years agore PR tree-optimization/90316 (large compile time increase in opt / alias stmt walkin...
Richard Biener [Mon, 13 May 2019 11:22:21 +0000 (11:22 +0000)]
re PR tree-optimization/90316 (large compile time increase in opt / alias stmt walking for Go example)

2019-05-13  Richard Biener  <rguenther@suse.de>

PR tree-optimization/90316
* tree-ssa-pre.c (insert_aux): Fold into ...
(insert): ... this function.  Use a RPO walk to reduce the
number of required iterations.

From-SVN: r271124

5 years agoDocument P0811R3 status in C++20 table
Edward Smith-Rowland [Mon, 13 May 2019 10:58:13 +0000 (10:58 +0000)]
Document P0811R3 status in C++20 table

2019-05-13  Edward Smith-Rowland  <3dw4rd@verizon.net>

* doc/xml/manual/status_cxx2020.xml: Document P0811R3 status.

From-SVN: r271122

5 years agoFix ChangeLog date
Jonathan Wakely [Mon, 13 May 2019 10:58:08 +0000 (11:58 +0100)]
Fix ChangeLog date

From-SVN: r271121

5 years agoRemove Profile Mode, deprecated since GCC 7.1
Jonathan Wakely [Mon, 13 May 2019 10:50:21 +0000 (11:50 +0100)]
Remove Profile Mode, deprecated since GCC 7.1

The Profile Mode extension is not used by anybody, nor maintained by
anybody. The containers do not support the full API specified in recent
standards, and so enabling Profile Mode is not source compatible with
much modern C++ code. The heuristics that would check the profile
information and make useful suggestions never materialized, so it isn't
useful.

It should be removed.

Remove Profile Mode, deprecated since 7.1.0
* doc/Makefile.am: Remove XML file for profile mode docs.
* doc/Makefile.in: Regenerate.
* doc/xml/authors.xml: Remove authors of profile mode docs.
* doc/xml/manual/appendix_contributing.xml: Remove mention of profile
mode.
* doc/xml/manual/debug.xml: Likewise.
* doc/xml/manual/evolution.xml: Document removal of profile mode.
* doc/xml/manual/profile_mode.xml: Remove profile mode docs.
* doc/xml/manual/spine.xml: Remove profile mode author credit.
* doc/xml/manual/test.xml: Remove docs for dg-require-profile-mode
directive.
* doc/xml/manual/using.xml: Remove docs for profile mode headers and
macro.
* doc/html/*: Regenerate.
* include/Makefile.am: Remove profile mode headers.
* include/Makefile.in: Regenerate.
* include/bits/c++config (std::__profile): Remove namespace.
[_GLIBCXX_PROFILE]: Remove checks for macro.
* include/profile/array: Remove.
* include/profile/base.h: Remove.
* include/profile/bitset: Remove.
* include/profile/deque: Remove.
* include/profile/forward_list: Remove.
* include/profile/impl/profiler.h: Remove.
* include/profile/impl/profiler_algos.h: Remove.
* include/profile/impl/profiler_container_size.h: Remove.
* include/profile/impl/profiler_hash_func.h: Remove.
* include/profile/impl/profiler_hashtable_size.h: Remove.
* include/profile/impl/profiler_list_to_slist.h: Remove.
* include/profile/impl/profiler_list_to_vector.h: Remove.
* include/profile/impl/profiler_map_to_unordered_map.h: Remove.
* include/profile/impl/profiler_node.h: Remove.
* include/profile/impl/profiler_state.h: Remove.
* include/profile/impl/profiler_trace.h: Remove.
* include/profile/impl/profiler_vector_size.h: Remove.
* include/profile/impl/profiler_vector_to_list.h: Remove.
* include/profile/iterator_tracker.h: Remove.
* include/profile/list: Remove.
* include/profile/map: Remove.
* include/profile/map.h: Remove.
* include/profile/multimap.h: Remove.
* include/profile/multiset.h: Remove.
* include/profile/ordered_base.h: Remove.
* include/profile/set: Remove.
* include/profile/set.h: Remove.
* include/profile/unordered_base.h: Remove.
* include/profile/unordered_map: Remove.
* include/profile/unordered_set: Remove.
* include/profile/vector: Remove.
* scripts/run_doxygen: Do not process profile mode headers.
* testsuite/23_containers/array/element_access/60497.cc: Don't use
profile mode type.
* testsuite/23_containers/array/specialized_algorithms/swap_cxx17.cc:
Remove dg-skip-if for profile mode.
* testsuite/23_containers/forward_list/capacity/1.cc: Remove
preprocessor check for profile mode.
* testsuite/23_containers/list/capacity/29134.cc: Likewise.
* testsuite/23_containers/map/modifiers/extract.cc: Remove dg-skip-if
for profile mode.
* testsuite/23_containers/map/modifiers/insert_or_assign/1.cc:
Likewise.
* testsuite/23_containers/map/modifiers/try_emplace/1.cc: Likewise.
* testsuite/23_containers/multimap/modifiers/extract.cc: Likewise.
* testsuite/23_containers/multiset/modifiers/extract.cc: Likewise.
* testsuite/23_containers/set/modifiers/extract.cc: Likewise.
* testsuite/23_containers/unordered_map/modifiers/extract.cc:
Likewise.
* testsuite/23_containers/unordered_multimap/modifiers/extract.cc:
Likewise.
* testsuite/23_containers/unordered_multiset/modifiers/extract.cc:
Likewise.
* testsuite/23_containers/unordered_set/modifiers/extract.cc:
Likewise.
* testsuite/23_containers/vector/bool/capacity/29134.cc: Remove
preprocessor check for profile mode.
* testsuite/23_containers/vector/bool/modifiers/insert/31370.cc:
Likewise.
* testsuite/23_containers/vector/modifiers/insert_vs_emplace.cc:
Remove dg-skip-if for profile mode.
* testsuite/25_algorithms/binary_search/partitioned.cc: Likewise.
* testsuite/25_algorithms/equal_range/partitioned.cc: Likewise.
* testsuite/25_algorithms/lexicographical_compare/71545.cc: Likewise.
* testsuite/25_algorithms/lower_bound/partitioned.cc: Likewise.
* testsuite/25_algorithms/upper_bound/partitioned.cc: Likewise.
* testsuite/Makefile.am: Remove profile_flags variable and
* testsuite/Makefile.am: Remove profile_flags variable and
check-profile target.
* testsuite/Makefile.in: Regenerate.
* testsuite/ext/profile/all.cc: Remove.
* testsuite/ext/profile/mutex_extensions_neg.cc: Remove.
* testsuite/ext/profile/profiler_algos.cc: Remove.
* testsuite/ext/profile/replace_new.cc: Remove.
* testsuite/ext/throw_allocator/deallocate_global.cc: Remove
preprocessor check for profile mode.
* testsuite/ext/throw_allocator/deallocate_local.cc: Likewise.
* testsuite/lib/libstdc++.exp (check_v3_target_profile_mode): Remove.
(check_v3_target_normal_mode): Do not check for profile mode macro.
* testsuite/libstdc++-prettyprinters/80276.cc: Remove dg-skip-if for
profile mode.
* testsuite/libstdc++-prettyprinters/compat.cc: Likewise.
* testsuite/libstdc++-prettyprinters/cxx11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/cxx17.cc: Likewise.
* testsuite/libstdc++-prettyprinters/debug.cc: Likewise.
* testsuite/libstdc++-prettyprinters/debug_cxx11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/libfundts.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple.cc: Likewise.
* testsuite/libstdc++-prettyprinters/simple11.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis.cc: Likewise.
* testsuite/libstdc++-prettyprinters/whatis2.cc: Likewise.

From-SVN: r271120

5 years agoRemove array_allocator extension, deprecated since 4.9.0
Jonathan Wakely [Mon, 13 May 2019 10:49:58 +0000 (11:49 +0100)]
Remove array_allocator extension, deprecated since 4.9.0

This type is not a conforming allocator, because it cannot be reliably
rebound to allocate for a different type. The result of the rebind
transformation still uses the same underlying std::tr1::array<T, 1>
array, which may not be correctly aligned or even have elements the
right size for the value_type of the rebound allocator.

It has been deprecated for several years and should now be removed.

* doc/xml/manual/allocator.xml: Remove documentation for
array_allocator.
* doc/xml/manual/evolution.xml: Document array_allocator removal.
* doc/xml/manual/using.xml: Remove header from documentation.
* include/Makefile.am: Remove <ext/array_allocator.h> header.
* include/Makefile.in: Regenerate.
* include/ext/array_allocator.h: Remove.
* include/precompiled/extc++.h: Do not include removed header.
* testsuite/ext/array_allocator/1.cc: Remove.
* testsuite/ext/array_allocator/2.cc: Remove.
* testsuite/ext/array_allocator/26875.cc: Remove.
* testsuite/ext/array_allocator/3.cc: Remove.
* testsuite/ext/array_allocator/check_deallocate_null.cc: Remove.
* testsuite/ext/array_allocator/check_delete.cc: Remove.
* testsuite/ext/array_allocator/check_new.cc: Remove.
* testsuite/ext/array_allocator/variadic_construct.cc: Remove.
* testsuite/ext/headers.cc: Do not include removed header.

From-SVN: r271119

5 years agoFix wrong usage of dump_printf_loc (PR tree-optimization/90416).
Martin Liska [Mon, 13 May 2019 10:26:09 +0000 (12:26 +0200)]
Fix wrong usage of dump_printf_loc (PR tree-optimization/90416).

2019-05-13  Martin Liska  <mliska@suse.cz>

PR tree-optimization/90416
* tree-vect-stmts.c (vect_check_load_store_mask): Concatenate
string instead of passing the second part as va_arg argument.

From-SVN: r271118

5 years agoDo not follow zero edges in cycle detection (PR gcov-profile/90380).
Martin Liska [Mon, 13 May 2019 07:05:23 +0000 (09:05 +0200)]
Do not follow zero edges in cycle detection (PR gcov-profile/90380).

2019-05-13  Martin Liska  <mliska@suse.cz>

PR gcov-profile/90380
* gcov.c (handle_cycle): Do not support zero cycle count,
it should not be possible.
(path_contains_zero_cycle_arc): New function.
(circuit): Ignore zero cycle arc counts.

From-SVN: r271117

5 years agoTest for not existence of a negative loop (PR gcov-profile/90380).
Martin Liska [Mon, 13 May 2019 07:04:58 +0000 (09:04 +0200)]
Test for not existence of a negative loop (PR gcov-profile/90380).

2019-05-13  Martin Liska  <mliska@suse.cz>

PR gcov-profile/90380
* gcov.c (enum loop_type): Remove the enum and
the operator.
(handle_cycle): Assert that we should not reach
a negative count.
(circuit): Use loop_found instead of a tri-state loop_type.
(get_cycles_count): Do not handle NEGATIVE_LOOP as it can't
happen.

From-SVN: r271116

5 years agoDaily bump.
GCC Administrator [Mon, 13 May 2019 00:16:24 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271115

5 years agodarwin, powerpc - set .machine in an asm file.
Iain Sandoe [Sun, 12 May 2019 19:26:16 +0000 (19:26 +0000)]
darwin, powerpc - set .machine in an asm file.

The asm file fails to build if we use a modern assembler
which checks that the machine is consistent with the
filetype.  Fixed by adjusting in a similar manner to
other assembler.

libgcc/

2019-05-12  Iain Sandoe  <iain@sandoe.co.uk>

* config/rs6000/darwin-vecsave.S: Set .machine appropriately.

From-SVN: r271111

5 years agox86 - fix pr82920
Iain Sandoe [Sun, 12 May 2019 19:07:49 +0000 (19:07 +0000)]
x86 - fix pr82920

The various thunks output codes have inconsisten output
mechanisms. The patch factors out some common code that
writes out the jumps and uses the regular output scheme
that accounts for __USER_LABEL_PREFIX__.

The testsuite changes are largely mechanical compensation
for the revised output (and the fact that Darwin doesn't
use non-PIC by default).

gcc/

2019-05-12  Iain Sandoe  <iain@sandoe.co.uk>

PR target/82920
* config/i386/i386.c (ix86_output_jmp_thunk_or_indirect): New.
(ix86_output_indirect_branch_via_reg): Use output mechanism
accounting for __USER_LABEL_PREFIX__.
(ix86_output_indirect_branch_via_push): Likewise.
(ix86_output_function_return): Likewise.
(ix86_output_indirect_function_return): Likewise.

gcc/testsuite/

2019-05-12  Iain Sandoe  <iain@sandoe.co.uk>
    Dominique d'Humieres  <dominiq@gcc.gnu.org>

PR target/82920
* gcc.target/i386/indirect-thunk-1.c: Adjust scan-asms for Darwin,
do not use -fno-pic on Darwin.
* gcc.target/i386/indirect-thunk-2.c: Likewise.
* gcc.target/i386/indirect-thunk-3.c: Likewise.
* gcc.target/i386/indirect-thunk-4.c: Likewise.
* gcc.target/i386/indirect-thunk-7.c: Likewise.
* gcc.target/i386/indirect-thunk-attr-1.c: Likewise.
* gcc.target/i386/indirect-thunk-attr-2.c: Likewise.
* gcc.target/i386/indirect-thunk-attr-3.c: Likewise.
* gcc.target/i386/indirect-thunk-attr-4.c: Likewise.
* gcc.target/i386/indirect-thunk-attr-5.c: Likewise.
* gcc.target/i386/indirect-thunk-attr-6.c: Likewise.
* gcc.target/i386/indirect-thunk-attr-7.c: Likewise.
* gcc.target/i386/indirect-thunk-attr-8.c: Likewise.
* gcc.target/i386/indirect-thunk-extern-1.c: Likewise.
* gcc.target/i386/indirect-thunk-extern-2.c: Likewise.
* gcc.target/i386/indirect-thunk-extern-3.c: Likewise.
* gcc.target/i386/indirect-thunk-extern-4.c: Likewise.
* gcc.target/i386/indirect-thunk-extern-7.c: Likewise.
* gcc.target/i386/indirect-thunk-inline-1.c: Likewise.
* gcc.target/i386/indirect-thunk-inline-2.c: Likewise.
* gcc.target/i386/indirect-thunk-inline-3.c: Likewise.
* gcc.target/i386/indirect-thunk-inline-4.c: Likewise.
* gcc.target/i386/indirect-thunk-inline-7.c: Likewise.
* gcc.target/i386/indirect-thunk-register-1.c: Likewise.
* gcc.target/i386/indirect-thunk-register-2.c: Likewise.
* gcc.target/i386/indirect-thunk-register-3.c: Likewise.
* gcc.target/i386/indirect-thunk-register-4.c: Likewise.
* gcc.target/i386/ret-thunk-1.c: Likewise.
* gcc.target/i386/ret-thunk-10.c: Likewise.
* gcc.target/i386/ret-thunk-11.c: Likewise.
* gcc.target/i386/ret-thunk-12.c: Likewise.
* gcc.target/i386/ret-thunk-13.c: Likewise.
* gcc.target/i386/ret-thunk-14.c: Likewise.
* gcc.target/i386/ret-thunk-15.c: Likewise.
* gcc.target/i386/ret-thunk-16.c: Likewise.
* gcc.target/i386/ret-thunk-2.c: Likewise.
* gcc.target/i386/ret-thunk-22.c: Likewise.
* gcc.target/i386/ret-thunk-23.c: Likewise.
* gcc.target/i386/ret-thunk-24.c: Likewise.
* gcc.target/i386/ret-thunk-3.c: Likewise.
* gcc.target/i386/ret-thunk-4.c: Likewise.
* gcc.target/i386/ret-thunk-5.c: Likewise.
* gcc.target/i386/ret-thunk-6.c: Likewise.
* gcc.target/i386/ret-thunk-7.c: Likewise.
* gcc.target/i386/ret-thunk-8.c: Likewise.
* gcc.target/i386/ret-thunk-9.c: Likewise.

Co-Authored-By: Dominique d'Humieres <dominiq@gcc.gnu.org>
From-SVN: r271110

5 years agoAccept code attributes as rtx codes in .md files
Richard Sandiford [Sun, 12 May 2019 11:28:01 +0000 (11:28 +0000)]
Accept code attributes as rtx codes in .md files

The recent AArch64 absolute difference patterns had to go through
some hoops to pair max/min rtx codes with the same signedness.
I also need to pair signed/unsigned codes with sign/zero extension
for some SVE ACLE patterns.

This patch therefore supports <...> as rtx codes, like we already
do for modes.

2019-05-12  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
* doc/md.texi: Document use of code attributes in rtx patterns.
* read-md.h (rtx_reader::rtx_alloc_for_name): New member function.
* read-rtl.c (find_code): Split out search loops into...
(maybe_find_code): ...this new function.
(check_code_iterator): Make the error message more informative.
(check_code_attribute): New function.
(rtx_reader::rtx_alloc_for_name): Likewise.
(rtx_reader::read_rtx_code): Use rtx_alloc_for_name.
* config/aarch64/predicates.md (aarch64_smin, aarch64_umin): Delete.
* config/aarch64/aarch64-simd.md (*aarch64_<su>abd<mode>_3): Use
<max_opp> directly as an rtx code instead of via a match_operator.
* config/aarch64/aarch64-sve.md (aarch64_<su>abd<mode>_3): Likewise.
(<su>abd<mode>_3): Update accordingly.

From-SVN: r271107

5 years agofortran: C++ support for generating C prototypes
Janne Blomqvist [Sun, 12 May 2019 08:26:18 +0000 (11:26 +0300)]
fortran: C++ support for generating C prototypes

When generating C prototypes for Fortran procedures with the
-fc-prototypes and -fc-prototypes-external options, print a snippet
defining macros for complex types, and add C++ support by suppressing
mangling.

fortran/ChangeLog:

2019-05-12  Janne Blomqvist  <jb@gcc.gnu.org>

* dump-parse-tree.c (get_c_type_name): Use macros for complex type
names.
* parse.c (gfc_parse_file): Define complex macros, add CPP support
when printing C prototypes.

From-SVN: r271106

5 years agoDaily bump.
GCC Administrator [Sun, 12 May 2019 00:16:31 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271105

5 years agodarwin, ppc - improve debug for mdebug-stack
Iain Sandoe [Sat, 11 May 2019 23:31:56 +0000 (23:31 +0000)]
darwin, ppc - improve debug for mdebug-stack

Darwin uses an out of line save when complete context
needs to be saved, including the vector regs.

This patch prints the status of that when -mdebug=stack
is given.

gcc/

2019-05-12  Iain Sandoe  <iain@sandoe.co.uk>

* config/rs6000/rs6000.c (debug_stack_info): When -mdebug=stack
is given, print the state of the EH "save world" computation for
Darwin.

From-SVN: r271101

5 years agofixincludes - fix PR90379
Iain Sandoe [Sat, 11 May 2019 20:19:31 +0000 (20:19 +0000)]
fixincludes - fix PR90379

One should not provide test_text for wrap style fixes
this was causing the test to fail.  No change to the
actual fix.

2019-05-11  Iain Sandoe  <iain@sandoe.co.uk>
PR target/90379
PR bootstrap/89864
* inclhack.def (darwin_ucred__Atomic): Do not supply test_text
for wrap fixes.
* fixincl.x: Regenerated.

From-SVN: r271098

5 years agotestsuite, darwin] Fix PR81058.
Iain Sandoe [Sat, 11 May 2019 15:05:58 +0000 (15:05 +0000)]
testsuite, darwin] Fix PR81058.

The tests fail because Darwin indirects common accesses which causes different
codegen and the mismatch in output. Placing the vars in regular .data section
fixes that.

gcc/testsuite/

2019-05-11  Iain Sandoe  <iain@sandoe.co.uk>

PR testsuite/81058
* gcc.target/i386/avx512bw-vpmovswb-1.c: Use regular data section
for variables on Darwin, rather than common.
* gcc.target/i386/avx512bw-vpmovuswb-1.c: Likewise.
* gcc.target/i386/avx512bw-vpmovwb-1.c: Likewise.

From-SVN: r271097

5 years agostl_bvector.h (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&))...
François Dumont [Sat, 11 May 2019 13:29:05 +0000 (13:29 +0000)]
stl_bvector.h (operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)): Make hidden friend.

2019-05-11  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_bvector.h
(operator==(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Make hidden friend.
(operator<(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator!=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator>(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator<=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator>=(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(operator-(const _Bit_iterator_base&, const _Bit_iterator_base&)):
Likewise.
(_Bit_iterator::operator+(difference_type)): Likewise and allow NRVO
copy elision.
(_Bit_iterator::operator-(difference_type)): Likewise.
(operator+(ptrdiff_t, const _Bit_iterator&)): Make hidden friend.
(_Bit_const_iterator::operator+(difference_type)): Likewise and allow
NRVO copy elision.
(_Bit_const_iterator::operator-(difference_type)): Likewise.
(operator+(ptrdiff_t, const _Bit_const_iterator&)): Make hidden friend.

From-SVN: r271096

5 years agore PR c++/59813 (tail-call elimination didn't fire for left-shift of char to cout)
Jakub Jelinek [Sat, 11 May 2019 09:33:22 +0000 (11:33 +0200)]
re PR c++/59813 (tail-call elimination didn't fire for left-shift of char to cout)

PR c++/59813
* config/aarch64/aarch64.c (aarch64_expand_epilogue): Don't add
EH_RETURN_STACKADJ_RTX to sp in sibcall epilogues.

From-SVN: r271093

5 years agoi386.md (floatdi<X87MODEF:mode>2_i387_with_xmm): Use pinsrd for TARGET_SSE4_1.
Uros Bizjak [Sat, 11 May 2019 08:20:21 +0000 (10:20 +0200)]
i386.md (floatdi<X87MODEF:mode>2_i387_with_xmm): Use pinsrd for TARGET_SSE4_1.

* config/i386/i386.md (floatdi<X87MODEF:mode>2_i387_with_xmm):
Use pinsrd for TARGET_SSE4_1.
* config/i386/sse.md (movdi_to_sse): Ditto.

From-SVN: r271092

5 years agotypeck.c (cp_build_function_call_vec): When mark_used fails unconditionally return...
Paolo Carlini [Sat, 11 May 2019 07:50:22 +0000 (07:50 +0000)]
typeck.c (cp_build_function_call_vec): When mark_used fails unconditionally return error_mark_node.

/cp
2019-05-11  Paolo Carlini  <paolo.carlini@oracle.com>

* typeck.c (cp_build_function_call_vec): When mark_used fails
unconditionally return error_mark_node.

/testsuite
2019-05-11  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/cpp2a/multiple-deleted-destroying-delete-error-1.C: New.
* g++.dg/cpp2a/multiple-deleted-destroying-delete-error-2.C: Likewise.

From-SVN: r271091

5 years agoruntime: set up g early
Ian Lance Taylor [Sat, 11 May 2019 01:12:37 +0000 (01:12 +0000)]
runtime: set up g early

    runtime.throw needs a g to work properly. Set up g early, to
    ensure that if something goes wrong in the runtime startup (e.g.
    runtime.check fails), the program terminates in a reasonable way.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176657

From-SVN: r271088

5 years agoDaily bump.
GCC Administrator [Sat, 11 May 2019 00:16:18 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271087

5 years agoPR libstdc++/81266 fix std::thread::native_handle_type test
Jonathan Wakely [Fri, 10 May 2019 21:41:23 +0000 (22:41 +0100)]
PR libstdc++/81266 fix std::thread::native_handle_type test

The test uses remove_pointer because in most cases native_handle_type is
a pointer to the actual type that the C++ class contains. However, for
std::thread, native_handle_type is the same type as the type contained
in std::thread, and so remove_pointer is not needed. On targets where
pthread_t is a pointer type remove_pointer<native_handle_type> is not a
no-op, instead it transforms pthread_t and causes the test to fail.

The fix is to not apply remove_pointer when testing std::thread.

PR libstdc++/81266
* testsuite/util/thread/all.h: Do not use remove_pointer for
std::thread::native_handle_type.

From-SVN: r271080

5 years agoPR libstdc++/90397 fix std::variant friend declarations
Jonathan Wakely [Fri, 10 May 2019 21:41:19 +0000 (22:41 +0100)]
PR libstdc++/90397 fix std::variant friend declarations

Clang diagnoses the inconsistent noexcept-specifier on the friend
declaration of __get. Add it, and also on __get_storage.

PR libstdc++/90397
* include/std/variant (_Variant_storage<false, Types...>::_M_storage())
(_Variant_storage<true, Types...>::_M_reset()))
(_Variant_storage<true, Types...>::_M_storage())): Add noexcept.
(__get_storage): Likewise.
(variant): Add noexcept to friend declarations for __get and
__get_storage.

From-SVN: r271079

5 years agoPR libstdc++/90388 fix std::hash<unique_ptr<T,D>> bugs
Jonathan Wakely [Fri, 10 May 2019 21:41:16 +0000 (22:41 +0100)]
PR libstdc++/90388 fix std::hash<unique_ptr<T,D>> bugs

A disabled specialization should not be callable, so move the function
call operator into a new base class which correctly implements the
disabled hash semantics. For the versioned namespace configuration do
not derive from __poison_hash in the enabled case, as the empty base
class serves no purpose but potentially increases the object size. For
the default configuration that base class must be kept, to preserve
layout.

An enabled specialization should not be unconditionally noexcept,
because the underlying hash object might throw.

PR libstdc++/90388
* include/bits/unique_ptr.h (default_delete, default_delete<T[]>):
Use _Require for constraints.
(operator>(nullptr_t, const unique_ptr<T,D>&)): Implement exactly as
per the standard.
(__uniq_ptr_hash): New base class with conditionally-disabled call
operator.
(hash<unique_ptr<T,D>>): Derive from __uniq_ptr_hash.
* testsuite/20_util/default_delete/48631_neg.cc: Adjust dg-error line.
* testsuite/20_util/unique_ptr/hash/90388.cc: New test.

From-SVN: r271078

5 years agoImprove API docs for <memory> and <new>
Jonathan Wakely [Fri, 10 May 2019 21:41:11 +0000 (22:41 +0100)]
Improve API docs for <memory> and <new>

* include/bits/shared_ptr.h: Improve docs.
* include/bits/shared_ptr_base.h: Likewise.
* include/bits/stl_uninitialized.h: Likewise.
* include/bits/unique_ptr.h: Likewise.
* libsupc++/new: Likewise.

From-SVN: r271077

5 years agore PR fortran/61968 (ICE (assembly failure) due to wrongly generating a vtable for...
Thomas Koenig [Fri, 10 May 2019 20:14:22 +0000 (20:14 +0000)]
re PR fortran/61968 (ICE (assembly failure) due to wrongly generating a vtable for TYPE(*) / BT_ASSUMED_TYPE)

2019-05-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/61968
    * interface.c (compare_actual_formal): Do not create a vtab if
    the actual argument is assumed type.

2019-05-10  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/61968
    * gfortran.dg/assumed_type_10.f90: New test case.
    * gfortran.dg/assumed_type_11.f90: New test case.

From-SVN: r271076

5 years agoFix typo in gcc/fortran/ChangeLog
Janne Blomqvist [Fri, 10 May 2019 20:09:43 +0000 (23:09 +0300)]
Fix typo in gcc/fortran/ChangeLog

From-SVN: r271075

5 years agocompiler: permit inlining receive expressions
Ian Lance Taylor [Fri, 10 May 2019 19:41:55 +0000 (19:41 +0000)]
compiler: permit inlining receive expressions

    This does not permit any new inlinable functions in the standard library.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176637

From-SVN: r271074

5 years agodarwin, testsuite - provide an asm shim for AVX12F tests.
Iain Sandoe [Fri, 10 May 2019 19:14:21 +0000 (19:14 +0000)]
darwin, testsuite - provide an asm shim for AVX12F tests.

Darwin will build these tests and run them if/when it's
available on the relevant hardware.

2019-05-10  Iain Sandoe  <iain@sandoe.co.uk>

* gcc.target/x86_64/abi/avx512f/abi-avx512f.exp: Darwin is
now tested.
* gcc.target/x86_64/abi/avx512f/asm-support-darwin.s: New.

From-SVN: r271073

5 years agodecl.c (grokvardecl): Use an accurate location in error message about main as a globa...
Paolo Carlini [Fri, 10 May 2019 18:00:52 +0000 (18:00 +0000)]
decl.c (grokvardecl): Use an accurate location in error message about main as a global variable.

/cp
2019-05-10  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (grokvardecl): Use an accurate location in error message
about main as a global variable.

/testsuite
2019-05-10  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/main1.C: New.

From-SVN: r271070

5 years agocall.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.
Paolo Carlini [Fri, 10 May 2019 17:57:27 +0000 (17:57 +0000)]
call.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.

2019-05-10  Paolo Carlini  <paolo.carlini@oracle.com>

* call.c (build_call_a): Use FUNC_OR_METHOD_TYPE_P.
* cp-gimplify.c (cp_fold): Likewise.
* cp-objcp-common.c (cp_type_dwarf_attribute): Likewise.
* cp-tree.h (TYPE_OBJ_P, TYPE_PTROBV_P): Likewise.
* cvt.c (perform_qualification_conversions): Likewise.
* decl.c (grokdeclarator): Likewise.
* decl2.c (build_memfn_type): Likewise.
* mangle.c (canonicalize_for_substitution, write_type): Likewise.
* parser.c (cp_parser_omp_declare_reduction): Likewise.
* pt.c (check_explicit_specialization, uses_deducible_template_parms,
check_cv_quals_for_unify, dependent_type_p_r): Likewise.
* rtti.c (ptr_initializer): Likewise.
* semantics.c (finish_asm_stmt, finish_offsetof,
cp_check_omp_declare_reduction): Likewise.
* tree.c (cp_build_qualified_type_real,
cp_build_type_attribute_variant, cxx_type_hash_eq,
cxx_copy_lang_qualifiers, cp_free_lang_data): Likewise.
* typeck.c (structural_comptypes, convert_arguments,
cp_build_addr_expr_1, unary_complex_lvalue, cp_build_c_cast,
cp_build_modify_expr, comp_ptr_ttypes_real, type_memfn_rqual):
Likewise.

From-SVN: r271069

5 years agoPR c++/78010 - bogus -Wsuggest-override warning on final function.
Marek Polacek [Fri, 10 May 2019 14:53:30 +0000 (14:53 +0000)]
PR c++/78010 - bogus -Wsuggest-override warning on final function.

* class.c (check_for_override): Don't warn for final functions.

* g++.dg/warn/Wsuggest-override-2.C: New test.

From-SVN: r271065

5 years agocompiler: permit inlining variable declaration statements
Ian Lance Taylor [Fri, 10 May 2019 13:44:36 +0000 (13:44 +0000)]
compiler: permit inlining variable declaration statements

    This adds all of two inlinable functions to the standard library:
    crypto/subtle.ConstantTimeLessOrEq, regexp.(*Regexp).Copy.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176378

From-SVN: r271063

5 years agotree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.
Richard Biener [Fri, 10 May 2019 12:01:04 +0000 (12:01 +0000)]
tree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.

2019-05-10  Richard Biener  <rguenther@suse.de>

* tree-ssa-sccvn.c (visit_reference_op_call): Initialize value-id.
(do_rpo_vn): Initialize next_value_id.

From-SVN: r271061

5 years agoFix a plural in a param description.
Martin Liska [Fri, 10 May 2019 09:22:54 +0000 (11:22 +0200)]
Fix a plural in a param description.

2019-05-10  Martin Liska  <mliska@suse.cz>

* params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
Fix plural form.

From-SVN: r271060

5 years agore PR tree-optimization/90385 (ICE: tree check: expected ssa_name, have real_cst...
Jakub Jelinek [Fri, 10 May 2019 08:20:38 +0000 (10:20 +0200)]
re PR tree-optimization/90385 (ICE: tree check: expected ssa_name, have real_cst in transform_to_exit_first_loop_alt, at tree-parloops.c:1772)

PR tree-optimization/90385
* tree-parloops.c (try_create_reduction_list): Punt on non-SSA_NAME
arguments of the exit phis.

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

From-SVN: r271059

5 years agore PR c++/90383 (GCC generates invalid constexpr copy/move assignment operators for...
Jakub Jelinek [Fri, 10 May 2019 08:19:44 +0000 (10:19 +0200)]
re PR c++/90383 (GCC generates invalid constexpr copy/move assignment operators for types with trailing padding. (Again))

PR c++/90383
* tree-inline.h (struct copy_body_data): Add do_not_fold member.
* tree-inline.c (remap_gimple_op_r): Avoid folding expressions if
id->do_not_fold.
(copy_tree_body_r): Likewise.
(copy_fn): Set id.do_not_fold to true.

* g++.dg/cpp1y/constexpr-90383-1.C: New test.
* g++.dg/cpp1y/constexpr-90383-2.C: New test.

From-SVN: r271058

5 years agore PR fortran/90093 (Extended C interop: optional argument incorrectly identified...
Paul Thomas [Fri, 10 May 2019 07:59:42 +0000 (07:59 +0000)]
re PR fortran/90093 (Extended C interop: optional argument incorrectly identified as PRESENT)

2019-05-10  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/90093
* trans-decl.c (convert_CFI_desc): Test that the dummy is
present before doing any of the conversions.

PR fortran/90352
* decl.c (gfc_verify_c_interop_param): Restore the error for
charlen > 1 actual arguments passed to bind(C) procs.
Clean up trailing white space.

PR fortran/90355
* trans-array.c (gfc_trans_create_temp_array): Set the 'span'
field to the element length for all types.
(gfc_conv_expr_descriptor): The force_no_tmp flag is used to
prevent temporary creation, especially for substrings.
* trans-decl.c (gfc_trans_deferred_vars): Rather than assert
that the backend decl for the string length is non-null, use it
as a condition before calling gfc_trans_vla_type_sizes.
* trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): 'force_no_tmp'
is set before calling gfc_conv_expr_descriptor.
* trans.c (get_array_span): Move the code for extracting 'span'
from gfc_build_array_ref to this function. This is specific to
descriptors that are component and indirect references.
* trans.h : Add the force_no_tmp flag bitfield to gfc_se.

2019-05-10  Paul Thomas  <pault@gcc.gnu.org>

PR fortran/90093
* gfortran.dg/ISO_Fortran_binding_12.f90: New test.
* gfortran.dg/ISO_Fortran_binding_12.c: Supplementary code.

PR fortran/90352
* gfortran.dg/iso_c_binding_char_1.f90: New test.

PR fortran/90355
* gfortran.dg/ISO_Fortran_binding_4.f90: Add 'substr' to test
the direct passing of substrings as descriptors to bind(C).
* gfortran.dg/assign_10.f90: Increase the tree_dump count of
'atmp' to account for the setting of the 'span' field.
* gfortran.dg/transpose_optimization_2.f90: Ditto.

From-SVN: r271057

5 years agore PR tree-optimization/88709 (Improve store-merging)
Jakub Jelinek [Fri, 10 May 2019 07:53:23 +0000 (09:53 +0200)]
re PR tree-optimization/88709 (Improve store-merging)

PR tree-optimization/88709
PR tree-optimization/90271
* gcc.dg/store_merging_29.c: Allow 4 stores to replace 6 stores on
arm*-*-*.

From-SVN: r271056

5 years agore PR pch/90326 (Using any precompiled header breaks definition of FLT_MAX)
Jakub Jelinek [Fri, 10 May 2019 07:39:46 +0000 (09:39 +0200)]
re PR pch/90326 (Using any precompiled header breaks definition of FLT_MAX)

PR pch/90326
cp/
* config-lang.in (gtfiles): Remove c-family/c-lex.c, add
c-family/c-cppbuiltin.c.
objc/
* config-lang.in (gtfiles): Add c-family/c-format.c.
objcp/
* config-lang.in (gtfiles): Don't add c-family/c-cppbuiltin.c.
testsuite/
* g++.dg/pch/pr90326.C: New test.
* g++.dg/pch/pr90326.Hs: New file.

From-SVN: r271055

5 years agoReapply r269790 which was missed during rebase.
Martin Liska [Fri, 10 May 2019 07:22:31 +0000 (09:22 +0200)]
Reapply r269790 which was missed during rebase.

2019-05-10  Martin Liska  <mliska@suse.cz>

* config/i386/i386-expand.c (ix86_expand_floorceildf_32):
Reapply changes from r269790.

From-SVN: r271054

5 years agoAdd params for jump-table expansion params (PR middle-end/90340).
Martin Liska [Fri, 10 May 2019 06:32:31 +0000 (08:32 +0200)]
Add params for jump-table expansion params (PR middle-end/90340).

2019-05-10  Martin Liska  <mliska@suse.cz>

PR middle-end/90340
* doc/invoke.texi: New params.
* params.def (PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SIZE): New.
(PARAM_JUMP_TABLE_MAX_GROWTH_RATIO_FOR_SPEED): Likewise.
* tree-switch-conversion.c (jump_table_cluster::can_be_handled):
Use it.
* tree-switch-conversion.h (struct jump_table_cluster):
Likewise.
2019-05-10  Martin Liska  <mliska@suse.cz>

PR middle-end/90340
* gcc.dg/tree-ssa/pr90340-2.c: New test.
* gcc.dg/tree-ssa/pr90340.c: New test.

From-SVN: r271053

5 years agoFix location where lto-dump is installed.
Martin Liska [Fri, 10 May 2019 06:31:32 +0000 (08:31 +0200)]
Fix location where lto-dump is installed.

2019-05-10  Martin Liska  <mliska@suse.cz>

* Make-lang.in: Use program_transform_name for lto-dump.
* config-lang.in: Do not mark lto-dump compiler as we don't
want to have it installed at
lib/gcc/x86_64-pc-linux-gnu/10.0.0/lto-dump.

From-SVN: r271052

5 years agoDaily bump.
GCC Administrator [Fri, 10 May 2019 00:16:15 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271051

5 years agocombine: Don't generate IF_THEN_ELSE
Segher Boessenkool [Fri, 10 May 2019 00:08:41 +0000 (02:08 +0200)]
combine: Don't generate IF_THEN_ELSE

On all targets I managed to test (21) this results in better code.  Only
alpha ends up with slightly bigger code.

* combine.c (combine_simplify_rtx): Don't make IF_THEN_ELSE RTL.

From-SVN: r271047

5 years ago* de.po, fr.po: Update.
Joseph Myers [Thu, 9 May 2019 21:41:07 +0000 (22:41 +0100)]
* de.po, fr.po: Update.

From-SVN: r271045

5 years agocompiler: avoid copy for string([]byte) conversion used in map keys
Cherry Zhang [Thu, 9 May 2019 21:24:56 +0000 (21:24 +0000)]
compiler: avoid copy for string([]byte) conversion used in map keys

    If a string([]byte) conversion is used immediately as a key for a
    map read, we don't need to copy the backing store of the byte
    slice, as mapaccess does not keep a reference to it.

    The gc compiler does more than this: it also avoids the copy if
    the map key is a composite literal that contains the conversion
    as a field, like, T{ ... { ..., string(b), ... }, ... }. For now,
    we just optimize the simple case, which is probably most common.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176197

* go.dg/mapstring.go: New test.

From-SVN: r271044

5 years agoloop.texi: Remove reference to FOR_EACH_LOOP_BREAK.
Bill Schmidt [Thu, 9 May 2019 19:54:39 +0000 (19:54 +0000)]
loop.texi: Remove reference to FOR_EACH_LOOP_BREAK.

2019-05-09  Bill Schmidt  <wschmidt@linux.ibm.com>

* doc/loop.texi: Remove reference to FOR_EACH_LOOP_BREAK.

From-SVN: r271042

5 years agosel-sched: allow negative insn priority (PR 88879)
Alexander Monakov [Thu, 9 May 2019 18:13:28 +0000 (21:13 +0300)]
sel-sched: allow negative insn priority (PR 88879)

PR rtl-optimization/88879
* sel-sched.c (sel_target_adjust_priority): Remove assert.

From-SVN: r271039

5 years ago[arm] PR target/90405 New test.
Richard Earnshaw [Thu, 9 May 2019 16:35:56 +0000 (16:35 +0000)]
[arm] PR target/90405 New test.

This time really add the test.

gcc/testsuite:
        PR target/90405
        * gcc.target/arm/pr90405.c: New test.

From-SVN: r271037

5 years ago[arm] PR target/90405 fix regression for thumb1 with -mtpcs-leaf-frame
Richard Earnshaw [Thu, 9 May 2019 16:00:23 +0000 (16:00 +0000)]
[arm] PR target/90405 fix regression for thumb1 with -mtpcs-leaf-frame

-mtpcs-leaf-frame causes an APCS-style backtrace frame to be created
on the stack.  This should probably be deprecated, but it did reveal
an issue with the patch I committed previously to improve the code
generation when pushing high registers, in that
thumb_find_work_register had a different idea as to which registers
were available as scratch registers.

The new code actually does a better job of finding a viable work
register and doesn't rely so much on assumptions about the ABI, so it
seems better to adapt thumb_find_work_register to the new approach.
This way we can eliminate some rather crufty code.

gcc:
PR target/90405
* config/arm/arm.c (callee_saved_reg_p): Move before
thumb_find_work_register.
(thumb1_prologue_unused_call_clobbered_lo_regs): Move before
thumb_find_work_register.  Only call df_get_live_out once.
(thumb1_epilogue_unused_call_clobbered_lo_regs): Likewise.
(thumb_find_work_register): Use
thumb1_prologue_unused_call_clobbered_lo_regs instead of ad hoc
algorithms to locate a spare call clobbered reg.

gcc/testsuite:
PR target/90405
* gcc.target/arm/pr90405.c: New test.

From-SVN: r271036

5 years agoSupport {MIN,MAX}_EXPR in GIMPLE FE.
Martin Liska [Thu, 9 May 2019 13:03:45 +0000 (15:03 +0200)]
Support {MIN,MAX}_EXPR in GIMPLE FE.

2019-05-09  Martin Liska  <mliska@suse.cz>

* gimple-pretty-print.c (dump_binary_rhs): Dump MIN_EXPR
and MAX_EXPR in GIMPLE FE format.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gimple-parser.c (c_parser_gimple_statement): Support __MIN and
__MAX.
(c_parser_gimple_unary_expression): Parse also binary expression
__MIN and __MAX.
(c_parser_gimple_parentized_binary_expression): New function.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gcc.dg/gimplefe-39.c: New test.

From-SVN: r271035

5 years agoSupport profile (BB counts and edge probabilities) in GIMPLE FE.
Martin Liska [Thu, 9 May 2019 13:03:28 +0000 (15:03 +0200)]
Support profile (BB counts and edge probabilities) in GIMPLE FE.

2019-05-09  Martin Liska  <mliska@suse.cz>

* tree-cfg.c (dump_function_to_file): Dump entry BB count.
* gimple-pretty-print.c (dump_gimple_bb_header):
Dump BB count.
(pp_cfg_jump): Dump edge probability.
* profile-count.c (profile_quality_as_string): Simplify
with a static array.
(parse_profile_quality): New function.
(profile_count::dump): Simplify with a static array.
(profile_count::from_gcov_type): Add new argument.
* profile-count.h (parse_profile_quality): Likewise.
* predict.h (set_hot_bb_threshold): New.
* params.def (PARAM_GIMPLE_FE_COMPUTED_HOT_BB_THRESHOLD):
New param.
* predict.c (get_hot_bb_threshold): Set from the new param.
(set_hot_bb_threshold): New.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gimple-parser.c (struct gimple_parser): Add probability.
for gimple_parser_edge.
(gimple_parser::push_edge): Add new argument probability.
(c_parser_gimple_parse_bb_spec): Parse also probability
if present.
(c_parser_parse_gimple_body): Set edge probability.
(c_parser_gimple_compound_statement): Consume token
before calling c_parser_gimple_goto_stmt.
Parse BB counts.
(c_parser_gimple_statement): Pass new argument.
(c_parser_gimple_goto_stmt): Likewise.
(c_parser_gimple_if_stmt): Likewise.
(c_parser_gimple_or_rtl_pass_list): Parse hot_bb_threshold.
* c-parser.c (c_parser_declaration_or_fndef): Pass
hot_bb_threshold argument.
* c-tree.h (struct c_declspecs): Add hot_bb_threshold
field.
(c_parser_gimple_parse_bb_spec_edge_probability): New.
2019-05-09  Martin Liska  <mliska@suse.cz>

* gcc.dg/gimplefe-37.c: New test.
* gcc.dg/gimplefe-33.c: Likewise.

From-SVN: r271034

5 years ago2019-05-09 Paolo Carlini <paolo.carlini@oracle.com>
Paolo Carlini [Thu, 9 May 2019 10:26:46 +0000 (10:26 +0000)]
2019-05-09  Paolo Carlini  <paolo.carlini@oracle.com>

      * Fix last ChangeLog entry.

From-SVN: r271033

5 years agore PR preprocessor/90382 (ICE in linemap_macro_map_loc_to_exp_point, at libcpp/line...
Paolo Carlini [Thu, 9 May 2019 10:18:23 +0000 (10:18 +0000)]
re PR preprocessor/90382 (ICE in linemap_macro_map_loc_to_exp_point, at libcpp/line-map.c:1061)

/cp
2019-05-09  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/90382
Revert:
2018-04-26  Paolo Carlini  <paolo.carlini@oracle.com>

* decl.c (grokdeclarator): Fix value assigned to typespec_loc, use
min_location.

/testsuite
2019-05-09  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/90382
2018-04-26  Paolo Carlini  <paolo.carlini@oracle.com>

* g++.dg/diagnostic/trailing1.C: New.

From-SVN: r271032

5 years agore PR tree-optimization/90395 (ICE: verify_flow_info failed (error: BB 2 cannot throw...
Richard Biener [Thu, 9 May 2019 10:09:30 +0000 (10:09 +0000)]
re PR tree-optimization/90395 (ICE: verify_flow_info failed (error: BB 2 cannot throw but has an EH edge))

2019-05-09  Richard Biener  <rguenther@suse.de>

PR tree-optimization/90395
* tree-ssa-forwprop.c (pass_forwprop::execute): Do not
rewrite vector stores that throw internally.

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

From-SVN: r271031

5 years agoClean up MPX-related stuff: CIF_CHKP
Thomas Schwinge [Thu, 9 May 2019 09:52:10 +0000 (11:52 +0200)]
Clean up MPX-related stuff: CIF_CHKP

..., which was forgotten in recent r268844.

gcc/
* cif-code.def (CHKP): Remove.

From-SVN: r271029

5 years ago[PR89221] Continue to default to '--disable-frame-pointer' for x86 GNU systems
Thomas Schwinge [Thu, 9 May 2019 09:51:59 +0000 (11:51 +0200)]
[PR89221] Continue to default to '--disable-frame-pointer' for x86 GNU systems

The recent trunk r270914 for PR89221 "--enable-frame-pointer does not work as
intended" fixed a scripting defect in the x86 '--enable-frame-pointer'
handling.

This has the side effect that, for example, for '--target=i686-gnu' this is now
enabled by default: 'USE_IX86_FRAME_POINTER=1' is added to 'tm_defines'.  Given
that it's highly unlikely that anyone would now suddenly want
'--enable-frame-pointer' as the default for any kind of GNU system, I'm
changing the default back for GNU systems, to match that of a 'target_os' of
'linux* | darwin[8912]*'.

gcc/
PR target/89221
* configure.ac (--enable-frame-pointer): Disable by default for
GNU systems.
* configure: Regenerate.

From-SVN: r271028

5 years agostl_deque.h (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)): Make...
François Dumont [Thu, 9 May 2019 05:28:42 +0000 (05:28 +0000)]
stl_deque.h (operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)): Make hidden friend.

2019-05-09  François Dumont  <fdumont@gcc.gnu.org>

* include/bits/stl_deque.h
(operator==(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Make hidden friend.
(operator!=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator<(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator<=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator>(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(operator>=(const _Deque_iterator<>&, const _Deque_iterator<>&)):
Likewise.
(_Deque_iterator<>::operator+(difference_type)): Likewise and allow NRVO
copy elision.
(_Deque_iterator<>::operator-(difference_type)): Likewise.

From-SVN: r271027

5 years agoDaily bump.
GCC Administrator [Thu, 9 May 2019 00:16:28 +0000 (00:16 +0000)]
Daily bump.

From-SVN: r271026

5 years ago[RS6000] PR89271, gcc.target/powerpc/vsx-simode2.c
Alan Modra [Wed, 8 May 2019 23:07:26 +0000 (08:37 +0930)]
[RS6000] PR89271, gcc.target/powerpc/vsx-simode2.c

This patch makes a number of corrections to rs6000_register_move_cost,
adds a new register union class, GEN_OR_VSX_REGS, and adjusts insn
alternative costs to suit.

The patch initially just corrected register move cost when direct
moves are available, but that resulted in regressions.  Inspection of
those regressions showed ALL_REGS being used as the register allocno
class, which isn't ideal.  gcc/doc/tm.texi says: "You should define a
class for the union of two classes whenever some instruction allows
both classes".  Thus, define GEN_OR_VSX_REGS for the register
allocator.  (IRA wants to use the union of two register classes when
the costs of the classes are below memory cost, which happens more
often with the low direct move cost.)

As per https://gcc.gnu.org/bugzilla/show_bug.cgi?id=89271#c11 we ought
to be returning the minimal cost for union classes.  That can be done
by rs6000_register_move_cost testing for vsx first, where the number
of regs for a given mode might be smaller than the same mode in gprs,
and changing the LINK_OR_CTR_REGS case to exclude SPEC_OR_GEN_REGS and
NON_FLOAT_REGS.

I removed the VECTOR_MEM_VSX_P test since that leads to silly results
for scalar mode moves between altivec and float when TARGET_VSX.  eg.
rs6000_register_move_cost:, ret=2, mode=DF, from=FLOAT_REGS, to=FLOAT_REGS
rs6000_register_move_cost:, ret=16, mode=DF, from=FLOAT_REGS, to=ALTIVEC_REGS
rs6000_register_move_cost:, ret=2, mode=DF, from=FLOAT_REGS, to=VSX_REGS

The patch also fixes wrong results for moves within and between any of
the non-gpr, non-vsx special reg classes.  The comment about "moving
between two similar registers is just one instruction" is false.  We
can't move lr to ctr directly, for example.  I believe the intent of
the "reg_classes_intersect_p (to, from)" was to cover moves within
float or altivec, so I moved that test inside the code handling vsx,
and made sure the intersection wasn't anything besides vsx by masking
off everything else.  Masking isn't strictly necessary at the moment,
but would be if we create a GEN_OR_ALTIVEC_REGS class some time in the
future.

TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS is needed for rs6000 in order
to fix the 20% cactus_adm spec regression when using GEN_OR_VSX_REGS
as an allocno class.  It is similar to the aarch64 version but without
any selection by regno mode if the best class is a union class.

PR target/89271
* config/rs6000/rs6000.h (enum reg_class, REG_CLASS_NAMES),
(REG_CLASS_CONTENTS): Add GEN_OR_VSX_REGS class.
* config/rs6000/rs6000.c (rs6000_register_move_cost): Correct
cost for general <-> vsx when direct moves are available.
Cost union classes at minimal cost for any reg in the class.
Correct calculation for moves between vsx, float, and altivec.
Don't return a low cost for moves between special regs.  Don't
use hard coded register numbers.
(TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS): Define.
(rs6000_ira_change_pseudo_allocno_class): New function.
* config/rs6000/rs6000.md (movsi_internal1, mov<mode>_internal),
(movdi_internal32, movdi_internal64): Remove '*' from vsx register
alternatives.
(movsi_internal1): Don't disparage vector alternatives.
(mov<mode>_internal): Likewise, excepting alternative that
will be split.
* config/rs6000/vsx.md (vsx_splat_<mode>_reg): Don't disparage
we <- b alternative.

From-SVN: r271022

5 years agocompiler: avoid copy for string([]byte) conversion used in string comparison
Cherry Zhang [Wed, 8 May 2019 23:06:52 +0000 (23:06 +0000)]
compiler: avoid copy for string([]byte) conversion used in string comparison

    If a string([]byte) conversion is used immediately in a string
    comparison, we don't need to copy the backing store of the byte
    slice, as the string comparison doesn't hold any reference to
    it. Instead, just create a string header from the byte slice and
    pass it for comparison.

    A new type of expression, String_value_expression, is introduced,
    for constructing string headers.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170894

* go.dg/cmpstring.go: New test.

From-SVN: r271021

5 years agolibgo: add Debugging section to README
Ian Lance Taylor [Wed, 8 May 2019 22:07:40 +0000 (22:07 +0000)]
libgo: add Debugging section to README

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/176001

From-SVN: r271019

5 years agore PR fortran/90351 (-fc-prototypes does not dump prototypes for external procedures)
Thomas Koenig [Wed, 8 May 2019 21:55:13 +0000 (21:55 +0000)]
re PR fortran/90351 (-fc-prototypes does not dump prototypes for external procedures)

2019-05-08  Thomas Koenig  <tkoenig@gcc.gnu.org>

    PR fortran/90351
    PR fortran/90329
    * gfortran.dg/dump-parse-tree.c: Include version.h.
    (gfc_dump_external_c_prototypes): New function.
    (get_c_type_name): Select "char" as a name for a simple char.
    Adjust to handling external functions. Also handle complex.
    (write_decl): Add argument bind_c. Adjust for dumping of external
    procedures.
    (write_proc): Likewise.
    (write_interop_decl): Add bind_c argument to call of write_proc.
    * gfortran.h: Add prototype for gfc_dump_external_c_prototypes.
    * lang.opt: Add -fc-prototypes-external flag.
    * parse.c (gfc_parse_file): Move dumping of BIND(C) prototypes.
    Call gfc_dump_external_c_prototypes if option is set.
    * invoke.texi: Document -fc-prototypes-external.

From-SVN: r271018

5 years agocompiler: generate memmove for non-pointer slice copy
Ian Lance Taylor [Wed, 8 May 2019 20:08:32 +0000 (20:08 +0000)]
compiler: generate memmove for non-pointer slice copy

    The builtin copy function is lowered to runtime functions
    slicecopy, stringslicecopy, or typedslicecopy. The first two are
    basically thin wrappers of memmove. Instead of making a runtime
    call, we can just use __builtin_memmove. This gives the compiler
    backend opportunities for further optimizations.

    Move the lowering of builtin copy function to flatten phase for
    the ease of rewriting.

    Also do this optimization for the copy part of append(s1, s2...).

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170005

From-SVN: r271017

5 years agoruntime: use builtin memmove directly
Cherry Zhang [Wed, 8 May 2019 17:40:45 +0000 (17:40 +0000)]
runtime: use builtin memmove directly

    We can use the intrinsic memmove directly, without going through
    C.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/170004

* go-gcc.cc (Gcc_backend::Gcc_backend): Define memmove builtin.

From-SVN: r271016