Commit Graph

177301 Commits

Author SHA1 Message Date
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
Arnaud Charlet 354cce532c [Ada] Avoid redefining IS_DIR_SEPARATOR macro
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* adaint.c: Avoid redefining IS_DIR_SEPARATOR macro.
2020-06-04 05:11:09 -04:00
Arnaud Charlet c21938bee0 [Ada] Wrong walk order in Walk_Library_Items
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* sem.adb (Walk_Library_Items): Defer processing of main spec
	after all other specs and before processing bodies.
2020-06-04 05:11:08 -04:00
Arnaud Charlet 1e01dddb44 [Ada] Import Adafinal as convention Ada
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* bindgen.adb (Gen_Adafinal): Adafinal is convention Ada, not C.
2020-06-04 05:11:07 -04:00
Ed Schonberg 0b27ccce08 [Ada] Incorrect source line range on subprogram body with contract
2020-06-04  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sinput.adb (Sloc_Range): Ignore node in the tree if it appears
	in a unit different from that of the node whose Sloc range we
	are computing. This is necessary when computing the source range
	of a subprogram body whose declaration includes a pre- or
	postcondition, because declaration and body may appear in
	different units, and the expanded code for the body includes
	copies of the contract code.
2020-06-04 05:11:06 -04:00
Alexandre Oliva 593627b456 [Ada] Revamp dump and aux output names
2020-06-04  Alexandre Oliva  <oliva@adacore.com>

gcc/ada/

	* switch.adb (Is_Internal_GCC_Switch): Recognize dumpdir and
	dumpbase-ext.  Mark auxbase and auxbase-strip for removal.
2020-06-04 05:11:06 -04:00
Eric Botcazou d2f87b22d1 [Ada] Set convention and inlined flag on default null procedure
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_attr.adb (Resolve_Attribute) <Access>: Do not generate
	the secondary message about a missing pragma if the convention
	of the prefix is Intrinsic.
	* sem_ch12.adb (Instantiate_Formal_Subprogram): Only set the
	Convention and the Is_Inlined flag on a null procedure.
2020-06-04 05:11:05 -04:00
Justin Squirek a0c94bd34a [Ada] Missing accessibility check on access discriminant in extended return
2020-06-04  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_ch6.adb (Check_Return_Obj_Accessibility): Change to
	Check_Return_Construct_Accessibility to better reflect its
	purpose.  Add loop to properly obtain the object declaration
	from an expanded extended return statement and add calls to get
	the original node for associated values. Also, avoid checks when
	the return statement being examined comes from an internally
	generated function.
2020-06-04 05:11:04 -04:00
Dmitriy Anisimkov 7c02e403d1 [Ada] Fix Is_Absolute_Path on Windows
2020-06-04  Dmitriy Anisimkov  <anisimko@adacore.com>

gcc/ada/

	* adaint.c (__gnat_is_absolute_path): Check for directory
	separator after drive and colon.
	(IS_DIR_SEPARATOR): Define new inline substitution.
2020-06-04 05:11:03 -04:00
Eric Botcazou 51bc44b84a [Ada] Update the documentation in checks.ads about range checks
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* checks.ads: Update documentation about range checks and fix
	minor other things.
2020-06-04 05:11:02 -04:00
Eric Botcazou d46b330ddc [Ada] Small tweak to special handling of private index types
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_ch3.adb (Array_Type_Declaration): Apply special handling
	of private index types to generic packages and restrict it to
	index types defined in the current scope.
2020-06-04 05:11:02 -04:00
Arnaud Charlet 528576de0b [Ada] New procedure Register_Global_Unhandled_Action
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/a-exextr.adb (Global_Unhandled_Action): New global
	variable.
	(Notify_Exception): Take into account Global_Unhandled_Action
	and fix latent race condition.
	(Exception_Action): Mark Favor_Top_Level so that variables can
	be atomic.
	(Global_Action): Mark atomic to remove the need for a lock.
	* libgnat/g-excact.ads, libgnat/g-excact.adb
	(Register_Global_Unhandled_Action): New procedure.
	(Register_Global_Action): Remove lock.
	* libgnat/s-stalib.ads (Raise_Action): Mark Favor_Top_Level to
	be compatible with Exception_Action.
	* sem_warn.adb (Warn_On_Unreferenced_Entity): Fix logic wrt
	Volatile entities and entities with an address clause: the code
	did not match the comment/intent.
2020-06-04 05:11:01 -04:00
Arnaud Charlet 32cc672033 [Ada] Update URL and bug report instructions
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* comperr.adb (Compiler_Abort): Update URL and bug report
	instructions.
2020-06-04 05:11:00 -04:00
Steve Baird b5682bf40c [Ada] Avoid buffer overflow in Long_Long_Float_Text_IO
2020-06-04  Steve Baird  <baird@adacore.com>

gcc/ada/

	* libgnat/s-imgrea.ads: Declare a named number
	Max_Real_Image_Length with value 5200.  Provide a comment
	explaining why this value was chosen.
	* libgnat/s-imgrea.adb (Set_Image_Real): Increase the upper
	bound of the local String variable Digs to
	Max_Real_Image_Length.
	* libgnat/a-tiflau.adb (Put): Increase the upper bound of the
	local String variable Buf to Max_Real_Image_Length.
	(Puts): Increase the upper bound of the local String variable
	Buf to Max_Real_Image_Length.
2020-06-04 05:10:59 -04:00
Arnaud Charlet b68c1670b7 [Ada] Remove System.Parameters.Single_Lock
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnarl/a-dynpri.adb, libgnarl/a-taside.adb,
	libgnarl/a-taster.adb, libgnarl/s-interr.adb,
	libgnarl/s-interr__sigaction.adb, libgnarl/s-taasde.adb,
	libgnarl/s-taenca.adb, libgnarl/s-taenca.ads,
	libgnarl/s-taprop.ads, libgnarl/s-taprop__hpux-dce.adb,
	libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb,
	libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb,
	libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb,
	libgnarl/s-tarest.adb, libgnarl/s-tasini.adb,
	libgnarl/s-tasque.adb, libgnarl/s-tasque.ads,
	libgnarl/s-tasren.adb, libgnarl/s-tasren.ads,
	libgnarl/s-tassta.adb, libgnarl/s-tasuti.adb,
	libgnarl/s-tasuti.ads, libgnarl/s-tpoben.adb,
	libgnarl/s-tpobop.adb, libgnarl/s-tpopmo.adb,
	libgnarl/s-tposen.adb, libgnat/s-parame.ads,
	libgnat/s-parame__ae653.ads, libgnat/s-parame__hpux.ads,
	libgnat/s-parame__vxworks.ads: Remove references to Single_Lock
	and Global_Lock.
2020-06-04 05:10:58 -04:00
Arnaud Charlet bbe376e136 [Ada] Continuation of "Get rid of more references to Universal_Integer"
2020-06-04  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/s-atopar.adb, libgnat/s-atopex.adb: Use Object_Size
	instead of Size, otherwise many derived types will be rejected
	(e.g. a type with a 14 bits 'Size and a 16 bits 'Object_Size).
2020-06-04 05:10:58 -04:00
Eric Botcazou 8b3bf48a31 [Ada] Add another ad-hoc case to the Has_Private_View mechanism
2020-06-04  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_ch12.adb (Copy_Generic_Node): Add special handling for a
	conversion between access types.
2020-06-04 05:10:57 -04:00