Commit Graph

177167 Commits

Author SHA1 Message Date
Jakub Jelinek 892b51cb73 ix86: Improve __builtin_c[lt]z followed by extension [PR95535]
In January I've added patterns to optimize SImode -> DImode sign or zero
extension of __builtin_popcount, this patch does the same for
__builtin_c[lt]z.  Like most other instructions, the [tl]zcntl instructions
clear the upper 32 bits of the destination register and as the instructions
only result in values 0 to 32 inclusive, both sign and zero extensions
behave the same.

2020-06-05  Jakub Jelinek  <jakub@redhat.com>

	PR target/95535
	* config/i386/i386.md (*ctzsi2_zext, *clzsi2_lzcnt_zext): New
	define_insn_and_split patterns.
	(*ctzsi2_zext_falsedep, *clzsi2_lzcnt_zext_falsedep): New
	define_insn patterns.

	* gcc.target/i386/pr95535-1.c: New test.
	* gcc.target/i386/pr95535-2.c: New test.
2020-06-05 10:44:23 +02:00
Jonathan Wakely 6ea6c49781 Add new/delete to struct occurence
This adds an example how to use new/delete operators to pool
allocated objects.

2020-06-04  Jonathan Wakely  <jwakely@redhat.com>

	* alloc-pool.h (object_allocator::remove_raw): New.
	* tree-ssa-math-opts.c (struct occurrence): Use NSMDI.
	(occurrence::occurrence): Add.
	(occurrence::~occurrence): Likewise.
	(occurrence::new): Likewise.
	(occurrence::delete): Likewise.
	(occ_new): Remove.
	(insert_bb): Use new occurence (...) instead of occ_new.
	(register_division_in): Likewise.
	(free_bb): Use delete occ instead of manually removing
	from the pool.
2020-06-05 09:16:41 +02:00
Richard Biener 80d6f89e78 middle-end/95493 - bogus MEM_ATTRS for variable array access
The following patch avoids keeping the inherited MEM_ATTRS when
set_mem_attributes_minus_bitpos is called with a variable ARRAY_REF.
The inherited ones may not reflect the correct offset and neither
does the updated alias-set match the inherited MEM_EXPR.  This all
ends up confusing path-based alias-analysis, causing wrong-code.

The fix is to stop not adopting a MEM_EXPR for certain kinds of
expressions and instead handle everything we can.  There's still
the constant kind trees case which I'm too lazy to look into right
now.  I did refrain from adding SSA_NAME there and instead avoided
calling set_mem_attributes_minus_bitpos when debug expression
expansion ended up expanding a SSA definition RHS which should
already have taken care of setting the appropriate MEM_ATTRS.

2020-06-04  Richard Biener  <rguenther@suse.de>

	PR middle-end/95493
	* cfgexpand.c (expand_debug_expr): Avoid calling
	set_mem_attributes_minus_bitpos when we were expanding
	an SSA name.
	* emit-rtl.c (set_mem_attributes_minus_bitpos): Remove
	ARRAY_REF special-casing, add CONSTRUCTOR to the set of
	special-cases we do not want MEM_EXPRs for.  Assert
	we end up with reasonable MEM_EXPRs.

	* g++.dg/torture/pr95493.C: New testcase.
2020-06-05 08:35:44 +02:00
Cui,Lili 6c6931a353 Fix bitmask conflict between PTA_AVX512VP2INTERSECT and PTA_WAITPKG in gcc/config/i386/i386.h
2020-06-05  Lili Cui  <lili.cui@intel.com>

gcc/ChangeLog:
	PR target/95525
	* config/i386/i386.h (PTA_WAITPKG): Change bitmask value.
2020-06-05 11:44:10 +08:00
GCC Administrator 3add342502 Daily bump. 2020-06-05 00:16:30 +00:00
Jonathan Wakely f2242ec0d3 libstdc++: Remove workarounds for constrained nested class templates
With PR c++/92078 and PR c++/92103 both fixed, nested class templates
can now be constrained. That means a number of namespace-scope helpers
can be moved to the class scope, so they're only visible where they're
needed.

	* include/bits/iterator_concepts.h (__detail::__ptr, __detail::__ref)
	(__detail::__cat, __detail::__diff): Move to class scope in the
	relevant __iterator_traits specializations.
	(__iterator_traits<>): Use nested class templates instead of ones from
	namespace __detail.
	* include/bits/stl_iterator.h (__detail::__common_iter_ptr): Move to
	class scope in iterator_traits<common_iterator<I, S>>.
	(iterator_traits<common_iterator<I, S>>): Use nested class template
	instead of __detail::__common_iter_ptr.
2020-06-04 23:20:49 +01:00
Martin Sebor b825a22890 Implement a solution for PR middle-end/10138 and PR middle-end/95136.
PR middle-end/10138 - warn for uninitialized arrays passed as const arguments
PR middle-end/95136 - missing -Wuninitialized on an array access with a variable offset

gcc/c-family/ChangeLog:

	PR middle-end/10138
	PR middle-end/95136
	* c-attribs.c (append_access_attrs): Handle attr_access::none.
	(handle_access_attribute): Same.

gcc/ChangeLog:

	PR middle-end/10138
	PR middle-end/95136
	* attribs.c (init_attr_rdwr_indices): Move function here.
	* attribs.h (rdwr_access_hash, rdwr_map): Define.
	(attr_access): Add 'none'.
	(init_attr_rdwr_indices): Declared function.
	* builtins.c (warn_for_access)): New function.
	(check_access): Call it.
	* builtins.h (checK-access): Add an optional argument.
	* calls.c (rdwr_access_hash, rdwr_map): Move to attribs.h.
	(init_attr_rdwr_indices): Declare extern.
	(append_attrname): Handle attr_access::none.
	(maybe_warn_rdwr_sizes): Same.
	(initialize_argument_information): Update comments.
	* doc/extend.texi (attribute access): Document 'none'.
	* tree-ssa-uninit.c (struct wlimits): New.
	(maybe_warn_operand): New function.
	(maybe_warn_pass_by_reference): Same.
	(warn_uninitialized_vars): Refactor code into maybe_warn_operand.
	Also call for function calls.
	(pass_late_warn_uninitialized::execute): Adjust comments.
	(execute_early_warn_uninitialized): Same.

gcc/testsuite/ChangeLog:

	PR middle-end/10138
	PR middle-end/95136
	* c-c++-common/Wsizeof-pointer-memaccess1.c: Prune out valid
	Wuninitialized.
	* c-c++-common/uninit-pr51010.c: Adjust expected warning format.
	* c-c++-common/goacc/uninit-dim-clause.c: Same.
	* c-c++-common/goacc/uninit-firstprivate-clause.c: Same.
	* c-c++-common/goacc/uninit-if-clause.c: Same.
	* c-c++-common/gomp/pr70550-1.c: Same.
	* c-c++-common/gomp/pr70550-2.c: Adjust.
	* g++.dg/20090107-1.C: Same.
	* g++.dg/20090121-1.C: Same.
	* g++.dg/ext/attr-access.C: Avoid -Wuninitialized.
	* gcc.dg/tree-ssa/forwprop-6.c: Prune out -Wuninitialized.
	* gcc.dg/Warray-bounds-52.c: Prune out valid -Wuninitialized.
	* gcc.dg/Warray-bounds-53.c: Same.
	* gcc.dg/Warray-bounds-54.c: Same.
	* gcc.dg/Wstringop-overflow-33.c: New test.
	* gcc.dg/attr-access-none.c: New test.
	* gcc.dg/attr-access-read-only.c: Adjust.
	* gcc.dg/attr-access-read-write.c: Same.
	* gcc.dg/attr-access-write-only.c: Same.
	* gcc.dg/pr71581.c: Adjust text of expected warning.
	* gcc.dg/uninit-15.c: Same.
	* gcc.dg/uninit-32.c: New test.
	* gcc.dg/uninit-33.c: New test.
	* gcc.dg/uninit-34.c: New test.
	* gcc.dg/uninit-36.c: New test.
	* gcc.dg/uninit-B-O0.c: Adjust text of expected warning.
	* gcc.dg/uninit-I-O0.c: Same.
	* gcc.dg/uninit-pr19430-O0.c: Same.
	* gcc.dg/uninit-pr19430.c: Same.
	* gcc.dg/uninit-pr95136.c: New test.
	* gfortran.dg/assignment_4.f90: Expect -Wuninitialized.
	* gfortran.dg/goacc/uninit-dim-clause.f95: Adjust text of expected
	warning.
	* gfortran.dg/goacc/uninit-firstprivate-clause.f95
	* gfortran.dg/goacc/uninit-if-clause.f95
	* gfortran.dg/pr66545_2.f90
2020-06-04 16:08:32 -06:00
Iain Buclaw 2cbc99d18d d: Merge upstream dmd 48d704f08
Updates the Array interface in dmd/root/array.h to use a DArray<TYPE>
internally.  Splits out BitArray into a separate header.

Reviewed-on: https://github.com/dlang/dmd/pull/11219

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 48d704f08.
	* d-attribs.cc (build_attributes): Use new field name.
	* d-builtins.cc (build_frontend_type): Likewise.
	(maybe_set_builtin_1): Likewise.
	(d_maybe_set_builtin): Likewise.
	* d-codegen.cc (build_interface_binfo): Likewise.
	(identity_compare_p): Likewise.
	(lower_struct_comparison): Likewise.
	(build_struct_comparison): Likewise.
	(d_build_call): Likewise.
	(build_frame_type): Likewise.
	(build_closure): Likewise.
	* d-compiler.cc (Compiler::paintAsType): Likewise.
	(Compiler::loadModule): Likewise.
	* d-incpath.cc (add_globalpaths): Likewise.
	(add_filepaths): Likewise.
	(add_import_paths): Likewise.
	* d-lang.cc (deps_write): Likewise.
	(d_parse_file): Likewise.
	* decl.cc (gcc_attribute_p): Likewise.
	(base_vtable_offset): Likewise.
	(get_vtable_decl): Likewise.
	(build_class_instance): Likewise.
	* expr.cc (class ExprVisitor): Likewise.
	* modules.cc (layout_moduleinfo_fields): Likewise.
	(layout_moduleinfo): Likewise.
	(build_module_tree): Likewise.
	* toir.cc (class IRVisitor): Likewise.
	* typeinfo.cc (class TypeInfoVisitor): Likewise.
	(layout_classinfo_interfaces): Likewise.
	* types.cc (layout_aggregate_members): Likewise.
	(layout_aggregate_type): Likewise.
2020-06-04 23:27:12 +02:00
François Dumont 4e05c918d2 libstdc++: Specialize copy/copy_n for istreambuf_iterator and deque iterators
Add __copy_n_a overloads for std::deque iterators to replace with C memmove
when possible. Expose std::copy_n implementation details in pre-C++11 modes
and use it for std::copy overloads.

libstdc++-v3/ChangeLog

	* include/bits/stl_algo.h (__copy_n_a): Move to ...
	* include/bits/stl_algobase.h (__copy_n_a): ...here. Add __strict
	parameter.
	(__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
	Declare.
	(__niter_base(const _Safe_iterator<_Ite, _Seq,
	random_access_iterator_tag>&)): Declare.
	(__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
	_Deque_iterator<>)): Declare.
	* include/bits/deque.tcc
	(__copy_move_a2(istreambuf_iterator<>, istreambuf_iterator<>,
	_Deque_iterator<>)): New.
	(__copy_n_a(istreambuf_iterator<>, _Size, _Deque_iterator<>, bool)):
	New.
	* include/bits/streambuf_iterator.h
	(__copy_n_a(istreambuf_iterator<>, _Size, _CharT*, bool)): Adapt.
	* include/debug/safe_iterator.tcc (__niter_base): New.
	* testsuite/25_algorithms/copy/streambuf_iterators/char/4.cc
	(test03): New.
	* testsuite/25_algorithms/copy/streambuf_iterators/char/debug/deque_neg.cc:
	New test.
	* testsuite/25_algorithms/copy_n/debug/istreambuf_ite_deque_neg.cc:
	New test.
	* testsuite/25_algorithms/copy_n/istreambuf_iterator/2.cc: New test.
	* testsuite/25_algorithms/copy_n/istreambuf_iterator/deque.cc:
	New test.
2020-06-04 22:27:47 +02:00
Iain Buclaw 8e788ac671 d: Merge upstream dmd 47ed0330f
Updates the copyright years of the front-end sources.

Reviewed-on: https://github.com/dlang/dmd/pull/11221

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 47ed0330f.
2020-06-04 22:05:49 +02:00
Jason Merrill 7ece3bd808 c++: Fix complex constexpr virtual cases [PR93310].
The code in constexpr for looking up the actual type of the object and then
getting the virtual function from there broke for both of these tests: for
16, it assumed incorrectly that the DECL_VINDEX would apply to the most
derived type's vtable; for 17, it failed to consider that during
construction the base subobject is treated as being of the base type.

Fixed by just doing constant evaluation of the expression that looks up the
function in the vtable.  This means that a virtual call will involve loading
the vptr, so we will reject some calls through non-constexpr variables that
we previously accepted, but this seems appropriate to me.  None of our
testcases were affected.

gcc/cp/ChangeLog:

	PR c++/93310
	* constexpr.c (cxx_eval_constant_expression) [OBJ_TYPE_REF]:
	Evaluate OBJ_TYPE_REF_EXPR.

gcc/testsuite/ChangeLog:

	PR c++/93310
	* g++.dg/cpp2a/constexpr-virtual16.C: New test.
	* g++.dg/cpp2a/constexpr-virtual17.C: New test.
	* g++.dg/cpp2a/constexpr-new12.C: Adjust diagnostic.
2020-06-04 15:11:42 -04:00
Jason Merrill 0ddb93ce77 c++: Fix FE devirt with diamond inheritance [PR95158]
This started breaking in GCC 8 because of the fix for PR15272; after that
change, we (correctly) remember the lookup from template parsing time that
found Base::foo through the non-dependent MiddleB base, and so we overlook
the overrider in MiddleA.  But given that, the devirtualization condition
from the fix for PR59031 is insufficient; we know that d has to be a
Derived, and we found Base::foo in Base, but forcing a non-virtual call
gets the wrong function.

Fixed by removing the PR59031 code that the PR67184 patch moved to
build_over_call, and instead looking up the overrider in BINFO_VIRTUALS.

gcc/cp/ChangeLog:

	PR c++/95158
	* class.c (lookup_vfn_in_binfo): New.
	* call.c (build_over_call): Use it.
	* cp-tree.h (resolves_to_fixed_type_p): Add default argument.
	(lookup_vfn_in_binfo): Declare.

gcc/testsuite/ChangeLog:

	PR c++/95158
	* g++.dg/template/virtual5.C: New test.
2020-06-04 15:11:42 -04:00
Harald Anlauf 8c727bdf4a PR fortran/95500 - Segfault compiling extra interface on intrinsic
Converting an expression so that it can be passed by reference could
result in a NULL pointer dereference.

2020-06-04  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Harald Anlauf  <anlauf@gmx.de>

gcc/fortran/
	PR fortran/95500
	* trans-expr.c (gfc_conv_expr_reference): Do not dereference NULL
	pointer.

gcc/testsuite/
	PR fortran/95500
	* gfortran.dg/pr95500.f90: New test.
2020-06-04 21:01:26 +02:00
Iain Sandoe 4f2d05ef01 coroutines: Fix missed ramp function return copy elision [PR95346].
Confusingly, "get_return_object ()" can do two things:
- Firstly it can provide the return object for the ramp function (as
  the name suggests).
- Secondly if the type of the ramp function is different from that
  of the get_return_object call, this is used as a single parameter
  to a CTOR for the ramp's return type.

In the first case we can rely on finish_return_stmt () to do the
necessary processing for copy elision.
In the second case, we should have passed a prvalue to the CTOR as
per the standard comment, but I had omitted the rvalue () call.  Fixed
thus.

gcc/cp/ChangeLog:

	PR c++/95346
	* coroutines.cc (morph_fn_to_coro): Ensure that the get-
	return-object is constructed correctly; When it is not the
	final return value, pass it to the CTOR of the return type
	as an rvalue, per the standard comment.

gcc/testsuite/ChangeLog:

	PR c++/95346
	* g++.dg/coroutines/pr95346.C: New test.
2020-06-04 19:26:18 +01:00
Vladimir N. Makarov e7ef9a40cd Add test for PR95464.c.
2020-06-04  Vladimir Makarov  <vmakarov@redhat.com>

	PR middle-end/95464
	* gcc.target/i386/pr95464.c: New.
2020-06-04 13:32:24 -04:00
Thomas Schwinge 2c838a3e4e [OpenACC 'exit data'] Evaluate 'copyfrom' individually for 'GOMP_MAP_STRUCT' entries
Currently, we don't at all evaluate 'copyfrom' for 'GOMP_MAP_STRUCT' entries.
Fix this by copying/adapting the corresponding non-'GOMP_MAP_STRUCT' code.

	libgomp/
	* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
	Evaluate 'copyfrom' individually for each entry.
	* testsuite/libgomp.oacc-c-c++-common/struct-1.c: Update.
2020-06-04 19:29:27 +02:00
Thomas Schwinge a02f1adbfe [OpenACC 'exit data'] Evaluate 'finalize' individually for 'GOMP_MAP_STRUCT' entries
Currently, we don't at all evaluate 'finalize' for 'GOMP_MAP_STRUCT' entries.
Fix this by copying/adapting the corresponding non-'GOMP_MAP_STRUCT' code.

	libgomp/
	* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
	Evaluate 'finalize' individually for each entry.
	* testsuite/libgomp.oacc-c-c++-common/struct-1.c: New file.
	* testsuite/libgomp.oacc-c-c++-common/struct-refcount-1.c: Remove
	file.
2020-06-04 19:29:08 +02:00
Thomas Schwinge db7179ec74 Fix 'sizeof' usage in 'libgomp.oacc-c-c++-common/deep-copy-{7,8}.c'
libgomp/
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c: Fix 'sizeof'
	usage.
	* testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c: Likewise.
2020-06-04 18:56:37 +02:00
Thomas Schwinge 06ec61726d [OpenACC] Repair/restore 'is_tgt_unmapped' checking
libgomp/
	* oacc-mem.c (goacc_exit_datum): Repair 'is_tgt_unmapped'
	checking.
	(acc_unmap_data, goacc_exit_data_internal): Restore
	'is_tgt_unmapped' checking.
	* testsuite/libgomp.oacc-c-c++-common/struct-refcount-1.c: New
	file.
	* testsuite/libgomp.oacc-fortran/deep-copy-6.f90: Adjust.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-2.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-3-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-4-1.f90: Likewise.

Co-Authored-By: Julian Brown <julian@codesourcery.com>
2020-06-04 18:56:37 +02:00
Thomas Schwinge 2112d3242f [OpenACC] Don't open-code 'gomp_remove_var' in 'acc_unmap_data'
libgomp/
	* oacc-mem.c (acc_unmap_data): Don't open-code 'gomp_remove_var'.

Co-Authored-By: Julian Brown <julian@codesourcery.com>
2020-06-04 18:56:37 +02:00
Thomas Schwinge 4662f7fe78 [OpenACC] Remove 'tgt' reference counting from 'acc_unmap_data' [PR92854]
libgomp/
	PR libgomp/92854
	* oacc-mem.c (acc_unmap_data): Remove 'tgt' reference counting.
2020-06-04 18:56:37 +02:00
Thomas Schwinge af8fd1a99d Extend 'libgomp.oacc-c-c++-common/pr92854-1.c' some more [PR92854]
libgomp/
	PR libgomp/92854
	* testsuite/libgomp.oacc-c-c++-common/pr92854-1.c: Extend some
	more.
2020-06-04 18:56:37 +02:00
Thomas Schwinge f233418ccf [OpenACC] Use 'tgt' returned from 'gomp_map_vars'
libgomp/
	* oacc-mem.c (goacc_enter_datum): Use 'tgt' returned from
	'gomp_map_vars'.
	 (acc_map_data): Clean up accordingly.

Co-Authored-By: Julian Brown <julian@codesourcery.com>
2020-06-04 18:56:37 +02:00
Thomas Schwinge 8d7794c0a2 [OpenACC] XFAIL behavior of over-eager 'finalize' clause
libgomp/
	* testsuite/libgomp.oacc-fortran/deep-copy-6.f90: XFAIL behavior
	of over-eager 'finalize' clause.
	* testsuite/libgomp.oacc-fortran/deep-copy-6-no_finalize.F90: New
	file.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-2.F90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-2.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-3-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-3-2.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-4-1.f90: Likewise.
	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-4-2.f90: Likewise.
2020-06-04 18:56:37 +02:00
Thomas Schwinge 2e24d457d8 [OpenACC] Missing unlocking on error paths in attach/detach code, part II
libgomp/
	* oacc-mem.c (goacc_exit_data_internal): Unlock on error path.
2020-06-04 18:56:37 +02:00
Julian Brown dc9541545d [OpenACC] Missing unlocking on error paths in attach/detach code
libgomp/
	* oacc-mem.c (acc_attach_async): Add missing gomp_mutex_unlock on
	error path.
	(goacc_detach_internal): Likewise.

Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
2020-06-04 18:56:36 +02:00
Thomas Schwinge 1e378edd8f 'libgomp.oacc-fortran/{error_,}stop-{1,2,3}.f': initialize before the checkpoint
If, for example, GCC is configured such that 'libgomp-plugin-nvptx.so.1'
dynamically links against 'libcuda.so.1', but testing is run on a system where
there is no 'libcuda.so.1', this produces output such as:

    PASS: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable  -O0  (test for excess errors)
    PASS: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable  -O0  execution test
    FAIL: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable  -O0  output pattern test, is  CheCKpOInT

    libgomp: while loading libgomp-plugin-nvptx.so.1: libcuda.so.1: cannot open shared object file: No such file or directory
    ERROR STOP

    Error termination. Backtrace: [...]
    , should match CheCKpOInT(
    |
    |^M)+ERROR STOP (
    |
    |^M)+Error termination.*

..., where after 'CheCKpOInT' we got 'libgomp: while loading [...]' injected
before the expected 'ERROR STOP'.

	libgomp/
	* testsuite/libgomp.oacc-fortran/error_stop-1.f: Initialize before
	the checkpoint.
	* testsuite/libgomp.oacc-fortran/error_stop-2.f: Likewise.
	* testsuite/libgomp.oacc-fortran/error_stop-3.f: Likewise.
	* testsuite/libgomp.oacc-fortran/stop-1.f: Likewise.
	* testsuite/libgomp.oacc-fortran/stop-2.f: Likewise.
	* testsuite/libgomp.oacc-fortran/stop-3.f: Likewise.
2020-06-04 18:56:36 +02:00
Iain Buclaw 2803d2f27c d: Split up d-frontend.cc into multiple parts.
gcc/d/ChangeLog:

	* Make-lang.in (D_OBJS): Add d-compiler.o, d-ctfloat.o, d-port.o.
	* d-frontend.cc (Port::memicmp): Move to d-port.cc.
	(Port::strupr): Likewise.
	(Port::isFloat32LiteralOutOfRange): Likewise.
	(Port::isFloat64LiteralOutOfRange): Likewise.
	(Port::readwordLE): Likewise.
	(Port::readwordBE): Likewise.
	(Port::readlongLE): Likewise.
	(Port::readlongBE): Likewise.
	(Port::valcpy): Likewise.
	(CTFloat::fabs): Move to d-ctfloat.cc.
	(CTFloat::ldexp): Likewise.
	(CTFloat::isIdentical): Likewise.
	(CTFloat::isNaN): Likewise.
	(CTFloat::isSNaN): Likewise.
	(CTFloat::isInfinity): Likewise.
	(CTFloat::parse): Likewise.
	(CTFloat::sprint): Likewise.
	(CTFloat::hash): Likewise.
	(Compiler::genCmain): Move to d-compiler.cc.
	(Compiler::paintAsType): Likewise.
	(Compiler::loadModule): Likewise.
	* d-compiler.cc: New file.
	* d-ctfloat.cc: New file.
	* d-port.cc: New file.
2020-06-04 18:19:59 +02:00
Vladimir N. Makarov 5261cf8ce8 Add processing STRICT_LOW_PART for matched reloads.
2020-06-04  Vladimir Makarov  <vmakarov@redhat.com>

	PR middle-end/95464
	* lra.c (lra_emit_move): Add processing STRICT_LOW_PART.
	* lra-constraints.c (match_reload): Use STRICT_LOW_PART in output
	reload if the original insn has it too.
2020-06-04 12:04:48 -04:00
Richard Biener ab56390384 aarch64: PR target/95526: Fix gimplification of varargs
This patch fixes a latent bug exposed by
eb72dc663e in the aarch64 backend that was
causing wrong codegen and several testsuite failures. See the discussion
on the bug for details.

Bootstrapped and regtested on aarch64-linux-gnu. Cleaned up several
failing tests and no new fails introduced.

2020-06-04  Richard Biener  <rguenther@suse.de>

gcc/:

	* config/aarch64/aarch64.c (aarch64_gimplify_va_arg_expr):
	Ensure that tmp_ha is marked TREE_ADDRESSABLE.
2020-06-04 16:33:36 +01:00
Martin Jambor 1980ffec48 ipa-sra: Do not remove statements necessary because of non-call EH (PR 95113)
PR 95113 revealed that when reasoning about which parameters are dead,
IPA-SRA does not perform the same check related to non-call exceptions
as tree DCE.  It most certainly should and so this patch moves the
condition used in tree-ssa-dce.c into a separate predicate (in
tree-eh.c) and uses it from both places.

gcc/ChangeLog:

2020-05-27  Martin Jambor  <mjambor@suse.cz>

	PR ipa/95113
	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move non-call
	exceptions check to...
	* tree-eh.c (stmt_unremovable_because_of_non_call_eh_p): ...this
	new function.
	* tree-eh.h (stmt_unremovable_because_of_non_call_eh_p): Declare it.
	* ipa-sra.c (isra_track_scalar_value_uses): Use it.  New parameter
	fun.

gcc/testsuite/ChangeLog:

2020-05-27  Martin Jambor  <mjambor@suse.cz>

	PR ipa/95113
	* gcc.dg/ipa/pr95113.c: New test.
2020-06-04 17:03:27 +02:00
Srinath Parvathaneni 9a810e57c4 [ARM]: Correct the grouping of operands in MVE vector scatter store intrinsics (PR94735).
The operands in RTL patterns of MVE vector scatter store intrinsics are wrongly grouped,
because of which few vector loads and stores instructions are wrongly getting optimized
out with -O2.

A new predicate "mve_scatter_memory" is defined in this patch, this predicate returns TRUE on
matching: (mem(reg)) for MVE scatter store intrinsics.
This patch fixes the issue by adding define_expand pattern with "mve_scatter_memory" predicate
and calls the corresponding define_insn by passing register_operand as first argument.
This register_operand is extracted from the operand with "mve_scatter_memory" predicate in
define_expand pattern.

gcc/ChangeLog:

2020-06-01  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

	PR target/94735
	* config/arm/predicates.md (mve_scatter_memory): Define to
	match (mem (reg)) for scatter store memory.
	* config/arm/mve.md (mve_vstrbq_scatter_offset_<supf><mode>): Modify
	define_insn to define_expand.
	(mve_vstrbq_scatter_offset_p_<supf><mode>): Likewise.
	(mve_vstrhq_scatter_offset_<supf><mode>): Likewise.
	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>): Likewise.
	(mve_vstrhq_scatter_shifted_offset_<supf><mode>): Likewise.
	(mve_vstrdq_scatter_offset_p_<supf>v2di): Likewise.
	(mve_vstrdq_scatter_offset_<supf>v2di): Likewise.
	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di): Likewise.
	(mve_vstrdq_scatter_shifted_offset_<supf>v2di): Likewise.
	(mve_vstrhq_scatter_offset_fv8hf): Likewise.
	(mve_vstrhq_scatter_offset_p_fv8hf): Likewise.
	(mve_vstrhq_scatter_shifted_offset_fv8hf): Likewise.
	(mve_vstrhq_scatter_shifted_offset_p_fv8hf): Likewise.
	(mve_vstrwq_scatter_offset_fv4sf): Likewise.
	(mve_vstrwq_scatter_offset_p_fv4sf): Likewise.
	(mve_vstrwq_scatter_offset_p_<supf>v4si): Likewise.
	(mve_vstrwq_scatter_offset_<supf>v4si): Likewise.
	(mve_vstrwq_scatter_shifted_offset_fv4sf): Likewise.
	(mve_vstrwq_scatter_shifted_offset_p_fv4sf): Likewise.
	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si): Likewise.
	(mve_vstrwq_scatter_shifted_offset_<supf>v4si): Likewise.
	(mve_vstrbq_scatter_offset_<supf><mode>_insn): Define insn for scatter
	stores.
	(mve_vstrbq_scatter_offset_p_<supf><mode>_insn): Likewise.
	(mve_vstrhq_scatter_offset_<supf><mode>_insn): Likewise.
	(mve_vstrhq_scatter_shifted_offset_p_<supf><mode>_insn): Likewise.
	(mve_vstrhq_scatter_shifted_offset_<supf><mode>_insn): Likewise.
	(mve_vstrdq_scatter_offset_p_<supf>v2di_insn): Likewise.
	(mve_vstrdq_scatter_offset_<supf>v2di_insn): Likewise.
	(mve_vstrdq_scatter_shifted_offset_p_<supf>v2di_insn): Likewise.
	(mve_vstrdq_scatter_shifted_offset_<supf>v2di_insn): Likewise.
	(mve_vstrhq_scatter_offset_fv8hf_insn): Likewise.
	(mve_vstrhq_scatter_offset_p_fv8hf_insn): Likewise.
	(mve_vstrhq_scatter_shifted_offset_fv8hf_insn): Likewise.
	(mve_vstrhq_scatter_shifted_offset_p_fv8hf_insn): Likewise.
	(mve_vstrwq_scatter_offset_fv4sf_insn): Likewise.
	(mve_vstrwq_scatter_offset_p_fv4sf_insn): Likewise.
	(mve_vstrwq_scatter_offset_p_<supf>v4si_insn): Likewise.
	(mve_vstrwq_scatter_offset_<supf>v4si_insn): Likewise.
	(mve_vstrwq_scatter_shifted_offset_fv4sf_insn): Likewise.
	(mve_vstrwq_scatter_shifted_offset_p_fv4sf_insn): Likewise.
	(mve_vstrwq_scatter_shifted_offset_p_<supf>v4si_insn): Likewise.
	(mve_vstrwq_scatter_shifted_offset_<supf>v4si_insn): Likewise.

gcc/testsuite/ChangeLog:

2020-06-01  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

	PR target/94735
	* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_base.c: New test.
	* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_base_p.c: Likewise.
	* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_offset.c: Likewise.
	* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_offset_p.c: Likewise.
	* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset.c:
	Likewise.
	* gcc.target/arm/mve/intrinsics/mve_vstore_scatter_shifted_offset_p.c:
	Likewise.
2020-06-04 15:55:31 +01:00
Srinath Parvathaneni d34f510e2b [PATCH][GCC] arm: Fix the MVE ACLE vbicq intrinsics.
Following MVE intrinsic testcases are failing in GCC testsuite.

Directory: gcc.target/arm/mve/intrinsics/
Testcases: vbicq_f16.c, vbicq_f32.c, vbicq_s16.c, vbicq_s32.c, vbicq_s8.c
,vbicq_u16.c, vbicq_u32.c and vbicq_u8.c.

This patch fixes the vbicq intrinsics by modifying the intrinsic parameters
and polymorphic variants in "arm_mve.h" header file.

Thanks,
Srinath.

gcc/ChangeLog:

2020-05-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

	* config/arm/arm_mve.h (__arm_vbicq_n_u16): Correct the intrinsic
	arguments.
	(__arm_vbicq_n_s16): Likewise.
	(__arm_vbicq_n_u32): Likewise.
	(__arm_vbicq_n_s32): Likewise.
	(__arm_vbicq): Modify polymorphic variant.

gcc/testsuite/ChangeLog:

2020-05-20  Srinath Parvathaneni  <srinath.parvathaneni@arm.com>

	* gcc.target/arm/mve/intrinsics/vbicq_f16.c: Modify.
	* gcc.target/arm/mve/intrinsics/vbicq_f32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_n_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_n_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_n_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_n_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_s16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_s32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_s8.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_u16.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_u32.c: Likewise.
	* gcc.target/arm/mve/intrinsics/vbicq_u8.c: Likewise.
2020-06-04 15:40:19 +01:00
Richard Biener b15369e253 add vect_get_slp_vect_def
This adds vect_get_slp_vect_def to get at a SLP nodes vectorized def,
abstracting away the details.  It also fixes one stray failure to
use SLP_TREE_REPRESENTATIVE.

2020-05-04  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h (vect_get_slp_vect_def): Declare.
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
	* tree-vect-stmts.c (vect_transform_stmt): Likewise.
	(vect_is_simple_use): Use SLP_TREE_REPRESENTATIVE.
	* tree-vect-slp.c (vect_get_slp_vect_defs): Fold into single
	use ...
	(vect_get_slp_defs): ... here.
	(vect_get_slp_vect_def): New function.
2020-06-04 16:01:55 +02:00
Richard Biener a0dae768c6 Add explicit SLP_TREE_LANES
This adds an explicit number of scalar lanes to the SLP node
avoiding to dispatch between stmts/ops and eventually not require
those vectors at all.

2020-05-27  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h (_slp_tree::lanes): New.
	(SLP_TREE_LANES): Likewise.
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Use it.
	(vectorizable_reduction): Likewise.
	(vect_transform_cycle_phi): Likewise.
	(vectorizable_induction): Likewise.
	(vectorizable_live_operation): Likewise.
	* tree-vect-slp.c (_slp_tree::_slp_tree): Initialize lanes.
	(vect_create_new_slp_node): Likewise.
	(slp_copy_subtree): Copy it.
	(vect_optimize_slp): Use it.
	(vect_slp_analyze_node_operations_1): Likewise.
	(vect_slp_convert_to_external): Likewise.
	(vect_bb_vectorization_profitable_p): Likewise.
	* tree-vect-stmts.c (vectorizable_load): Likewise.
	(get_vectype_for_scalar_type): Likewise.
2020-06-04 15:57:45 +02:00
Jonathan Wakely e1008cd1d8 libstdc++: Make std::copy_n work with negative and non-integral sizes
Since it was added in C++11, std::copy_n and std::ranges::copy_n should
do nothing given a negative size, but for random access iterators we add
the size to the iterator, possibly resulting in undefined behaviour.

Also, C++20 clarified that std::copy_n requires the Size type to be
convertible to an integral type. We previously assumed that it could be
directly used in arithmetic expressions, without conversion to an
integral type.

This also fixes a bug in the random_access_iterator_wrapper helper adds
some convenience aliases for using the iterator wrappers.

libstdc++-v3/ChangeLog:

	* include/bits/ranges_algobase.h (__copy_n_fn): Only call
	ranges::copy for positive values.
	* include/bits/stl_algo.h (copy_n): Convert Size argument to an
	integral type and only call __copy_n for positive values.
	* testsuite/util/testsuite_iterators.h
	(random_access_iterator_wrapper::operator+=): Fix range check for
	negative values.
	(output_container, input_container, forward_container)
	(bidirectional_container, random_access_container): New alias
	templates.
	* testsuite/25_algorithms/copy_n/5.cc: New test.
2020-06-04 14:21:34 +01:00
Richard Biener a3a70bf669 Simplify SLP code wrt SLP_TREE_DEF_TYPE
The following removes the ugly pushing of SLP_TREE_DEF_TYPE to
stmt_infos and instead makes sure to handle invariants fully
in vect_is_simple_use plus adjusting a few places I refrained
from touching when enforcing vector types for them.

It also simplifies building SLP nodes with all external operands
from scalars by not doing that in the parent but instead not
building those from the start.  That also gets rid of
vect_update_all_shared_vectypes.

2020-06-04  Richard Biener  <rguenther@suse.de>

	* tree-vect-slp.c (vect_update_all_shared_vectypes): Remove.
	(vect_build_slp_tree_2): Simplify building all external op
	nodes from scalars.
	(vect_slp_analyze_node_operations): Remove push/pop of
	STMT_VINFO_DEF_TYPE.
	(vect_schedule_slp_instance): Likewise.
	* tree-vect-stmts.c (ect_check_store_rhs): Pass in the
	stmt_info, use the vect_is_simple_use overload combining
	SLP and stmt_info analysis.
	(vect_is_simple_cond): Likewise.
	(vectorizable_store): Adjust.
	(vectorizable_condition): Likewise.
	(vect_is_simple_use): Fully handle invariant SLP nodes
	here.  Amend stmt_info operand extraction with COND_EXPR
	and masked stores.
	* tree-vect-loop.c (vectorizable_reduction): Deal with
	COND_EXPR representation ugliness.
2020-06-04 14:38:09 +02:00
liuhongt 43088bb4da Fix zero-masking for vcvtps2ph when dest operand is memory.
When dest is memory, zero-masking is not valid, only merging-masking is available,

2020-06-24  Hongtao Liu  <hongtao.liu@inte.com>

gcc/ChangeLog:
	PR target/95254
	* config/i386/sse.md (*vcvtps2ph_store<merge_mask_name>):
	Refine from *vcvtps2ph_store<mask_name>.
	(vcvtps2ph256<mask_name>): Refine constraint from vm to v.
	(<mask_codefor>avx512f_vcvtps2ph512<mask_name>): Ditto.
	(*vcvtps2ph256<merge_mask_name>): New define_insn.
	(*avx512f_vcvtps2ph512<merge_mask_name>): Ditto.
	* config/i386/subst.md (merge_mask): New define_subst.
	(merge_mask_name): New define_subst_attr.
	(merge_mask_operand3): Ditto.

gcc/testsuite/ChangeLog:
	* gcc.target/i386/avx512f-vcvtps2ph-pr95254.c: New test.
	* gcc.target/i386/avx512vl-vcvtps2ph-pr95254.c: Ditto.
2020-06-04 20:04:40 +08:00
Arnaud Charlet 53ec04cbdd [Ada] AI12-0184: Long Long C Data types
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/i-c.ads (long_long, unsigned_long_long): New
	definitions.
2020-06-04 05:11:20 -04:00
Arnaud Charlet 301e2a16c4 [Ada] New package Ada.Task_Initialization
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* Makefile.rtl: add a-tasini object
	* impunit.adb (Non_Imp_File_Names_95): Add s-tasini.
	* libgnarl/a-tasini.ads, libgnarl/a-tasini.adb: New files.
	* libgnarl/s-taskin.ads (Global_Initialization_Handler): New.
	* libgnarl/s-tassta.adb (Task_Wrapper): Call
	Global_Initialization_Handler if non null.
2020-06-04 05:11:19 -04:00
Ed Schonberg 9531ffdaaf [Ada] Ada_2020: contracts for formal subprograms
2020-06-04  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch12.adb (Build_Suprogram_Body_Wrapper,
	Build_Subprogram_Decl_Wrapper): New suprograms, to create the
	wrappers needed to implement contracts on formsl subprograms at
	the point of instantiation.
	(Build_Subprogram_Wrappers): New subprogram within
	Analyze_Associations, calls the above when the formal subprogram
	has contracts, and expansion is enabled.
	(Instantiate_Formal_Subprogram): If the actual is not an entity,
	such as a function attribute, or a synchronized operation,
	create a function with an internal name and call it within the
	wrapper.
	(Analyze_Generic_Formal_Part): Analyze contracts at the end of
	the list of formal declarations.
	* sem_prag.adb (Analyze_Pre_Post_Condtion): In Ada_2020 the
	aspect and corresponding pragma can appear on a formal
	subprogram declaration.
	(Find_Related_Declaration_Or_Body): Ditto.
2020-06-04 05:11:18 -04:00
Eric Botcazou 25a76d621a [Ada] Add missing conversion in call to Finalize primitive
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch7.adb (Make_Final_Call): Set the type of the object, if
	it is unanalyzed, before calling Convert_View on it.
2020-06-04 05:11:17 -04:00
Arnaud Charlet 3ab26de1c0 [Ada] Get rid of Disable_FE_Inline_Always
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* adabkend.adb, back_end.ads, opt.ads, sem_ch6.adb: Get rid of
	Disable_FE_Inline_Always.
2020-06-04 05:11:17 -04:00
Eric Botcazou 198064c06a [Ada] Fix a couple of oversights in previous change
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch7.adb (Make_Final_Call): Add missing guard.
	* sem_ch3.adb (Copy_And_Build): Adjust recursive call for
	private types.
	(Build_Derived_Private_Type): Deal with underlying full views.
2020-06-04 05:11:16 -04:00
Bob Duff 110d0820bf [Ada] Put_Image attribute
2020-06-04  Bob Duff  <duff@adacore.com>

gcc/ada/

	* libgnat/a-stobbu.adb, libgnat/a-stobbu.ads,
	libgnat/a-stobfi.adb, libgnat/a-stobfi.ads,
	libgnat/a-stoubu.adb, libgnat/a-stoubu.ads,
	libgnat/a-stoufi.adb, libgnat/a-stoufi.ads,
	libgnat/a-stoufo.adb, libgnat/a-stoufo.ads,
	libgnat/a-stouut.adb, libgnat/a-stouut.ads,
	libgnat/a-stteou.ads, libgnat/s-putaim.adb,
	libgnat/s-putaim.ads, libgnat/s-putima.adb, libgnat/s-putima.ads
	(Ada.Strings.Text_Output and children, System.Put_Images): New
	runtime support for Put_Image.
	* gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add
	exp_put_image.o.
	* exp_put_image.adb, exp_put_image.ads: New compiler package
	that generates calls to runtime routines that implement
	Put_Image.
	* Makefile.rtl: Add object files for Ada.Strings.Text_Output and
	children and System.Put_Images.
	* aspects.adb: Simplify initialization of Canonical_Aspect.
	* aspects.ads: Improve documentation. Add Aspect_Put_Image.
	* exp_attr.adb: Add support for Put_Image, by calling routines
	in Exp_Put_Image.
	* sem_util.adb (Is_Predefined_Dispatching_Operation): Return
	True for new TSS_Put_Image operation.
	* exp_ch3.adb: For tagged types, build a dispatching
	TSS_Put_Image operation by calling routines in Exp_Put_Image.
	* exp_disp.adb, exp_disp.ads: Make TSS_Put_Image be number 10,
	adjusting other operations' numbers after 10. We choose 10
	because that's the last number shared by all runtimes.
	* exp_strm.adb: Use named notation as appropriate.
	* exp_cg.adb, exp_tss.ads: Add TSS_Put_Image.
	* libgnat/a-tags.ads: Modify Max_Predef_Prims for the new
	TSS_Put_Image.
	* impunit.adb: Add new runtime packages.
	* rtsfind.adb, rtsfind.ads: Add support for
	Ada.Strings.Text_Output, Ada.Strings.Text_Output.Utils, and
	System.Put_Images.
	* sem_attr.adb: Error checking for Put_Image calls.
	* sem_ch12.adb (Valid_Default_Attribute): Support for passing
	Put_Image as a generic formal parameter.
	* sem_ch13.adb: Analysis of Put_Image aspect. Turn it into a
	Put_Image attribute definition clause.
	* sem_ch8.adb (Analyze_Subprogram_Renaming): Support for
	renaming of the Put_Image attribute.
	* snames.adb-tmpl: Fix comments.
	* snames.ads-tmpl (Name_Put_Image): New Name_Id.
	(Attribute_Put_Image): New Attribute_Id.
	* tbuild.adb, tbuild.ads (Make_Increment): New utility.
2020-06-04 05:11:15 -04:00
Eric Botcazou a3fbeceef4 [Ada] Alignment clause ignored on completion derived from private type
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_attr.adb (xpand_N_Attribute_Reference) <Input>: Call
	Find_Inherited_TSS to look up the Stream_Read TSS.
	<Output>: Likewise for the Stream_Write TSS.
	* exp_ch7.adb (Make_Final_Call): Call Underlying_Type on
	private types to account for underlying full views.
	* exp_strm.ads  (Build_Record_Or_Elementary_Input_Function):
	Remove Use_Underlying parameter.
	* exp_strm.adb (Build_Record_Or_Elementary_Input_Function):
	Likewise and adjust accordingly.
	* exp_tss.adb (Find_Inherited_TSS): Deal with full views.
	Call Find_Inherited_TSS recursively on the parent type if
	the base type is a derived type.
	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Take
	into account underlying full views for derived types.
	* sem_ch3.adb (Copy_And_Build): Look up the underlying full
	view only for a completion.  Be prepared for private types.
	(Build_Derived_Private_Type): Build an underlying full view
	for a completion in the general case too.
2020-06-04 05:11:14 -04:00
Arnaud Charlet e5e53c73a0 [Ada] Remove OpenACC support
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* back_end.adb, opt.ads, par-prag.adb, sem_ch5.adb,
	sem_prag.adb, sinfo.adb, sinfo.ads, snames.ads-tmpl,
	doc/gnat_rm/implementation_defined_pragmas.rst: Remove
	experimental support for OpenACC.
	* gcc-interface/misc.c, gcc-interface/trans.c,
	gcc-interface/lang.opt: Ditto.
	* gnat_rm.texi: Regenerate.

gcc/testsuite/

	* gnat.dg/openacc1.adb: Remove testcase.
2020-06-04 05:11:13 -04:00
Eric Botcazou a6b37ab0ac [Ada] Remove obsolete reference to gigi in comment
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* checks.adb (Generate_Discriminant_Check): Remove obsolete
	comment.
2020-06-04 05:11:11 -04:00
Gary Dismukes 4f31d6dbb8 [Ada] Implement AI12-0275 (Make subtype_mark optional in object renamings)
2020-06-04  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* par-ch3.adb (P_Identifier_Declarations): Add parsing of object
	renamings that have neither a subtype_mark nor an
	access_definition. Issue an error if the version is earlier than
	Ada_2020, and suggest using -gnatX.
	* sem_ch8.adb (Analyze_Object_Renaming): Handle
	object_renaming_declarations that don't have an explicit
	subtype. Errors are issued when the name is inappropriate or
	ambiguous, and otherwise the Etype of the renaming entity is set
	from the Etype of the renamed object.
	* sem_util.adb (Has_Null_Exclusion): Allow for the case of no
	subtype given in an N_Object_Renaming_Declaration.
	* sprint.adb (Sprint_Node_Actual): Handle printing of
	N_Object_Renaming_Declarations that are specified without an
	explicit subtype.
2020-06-04 05:11:10 -04:00
Eric Botcazou 96cd894061 [Ada] Fix glitch for N_Delta_Aggregate/N_Case_Expression/N_Quantified_Expression
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sinfo.ads (N_Delta_Aggregate): Document Etype field.
	(N_Case_Expression): Likewise.
	(Is_Syntactic_Field) <N_Quantified_Expression>: Adjust.
	<N_Case_Expression>: Likewise.
2020-06-04 05:11:09 -04:00