Commit Graph

177447 Commits

Author SHA1 Message Date
Martin Liska
8b6731e674
Add missing store in emission of asan_stack_free.
gcc/ChangeLog:

2020-05-19  Martin Liska  <mliska@suse.cz>

	PR sanitizer/94910
	* asan.c (asan_emit_stack_protection): Emit
	also **SavedFlagPtr(FakeStack, class_id) = 0 in order to release
	a stack frame.
2020-06-10 13:19:08 +02:00
Tamar Christina
df81764ba1 AArch64: Adjust costing of by element MUL to be the same as SAME3 MUL.
The cost model is currently treating multiplication by element as being more
expensive than 3 same multiplication.  This means that if the value is on the
SIMD side we add an unneeded DUP.  If the value is on the genreg side we use the
more expensive DUP instead of fmov.

This patch corrects the costs such that the two multiplies are costed the same
which allows us to generate

        fmul    v3.4s, v3.4s, v0.s[0]

instead of

        dup     v0.4s, v0.s[0]
        fmul    v3.4s, v3.4s, v0.4s

gcc/ChangeLog:

	* config/aarch64/aarch64.c (aarch64_rtx_mult_cost): Adjust costs for mul.

gcc/testsuite/ChangeLog:

	* gcc.target/aarch64/asimd-mull-elem.c: New test.
2020-06-10 11:55:46 +01:00
Richard Biener
b05d5563f4 Introduce STMT_VINFO_VEC_STMTS
This gets rid of the linked list of STMT_VINFO_VECT_STMT and
STMT_VINFO_RELATED_STMT in preparation for vectorized stmts no
longer needing a stmt_vec_info (just for this chaining).  This
has ripple-down effects in all places we gather vectorized
defs.  For this new interfaces are introduced and used
throughout vectorization, simplifying code in a lot of places
and merging it with the SLP way of gathering vectorized
operands.  There is vect_get_vec_defs as the new recommended
unified interface and vect_get_vec_defs_for_operand as one
for non-SLP operation.  I've resorted to keep the structure
of the code the same where using vect_get_vec_defs would have
been too disruptive for this already large patch.

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

	* tree-vect-data-refs.c (vect_vfa_access_size): Adjust.
	(vect_record_grouped_load_vectors): Likewise.
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Likewise.
	(vectorize_fold_left_reduction): Likewise.
	(vect_transform_reduction): Likewise.
	(vect_transform_cycle_phi): Likewise.
	(vectorizable_lc_phi): Likewise.
	(vectorizable_induction): Likewise.
	(vectorizable_live_operation): Likewise.
	(vect_transform_loop): Likewise.
	* tree-vect-slp.c (vect_get_slp_defs): New function, split out
	from overload.
	* tree-vect-stmts.c (vect_get_vec_def_for_operand_1): Remove.
	(vect_get_vec_def_for_operand): Likewise.
	(vect_get_vec_def_for_stmt_copy): Likewise.
	(vect_get_vec_defs_for_stmt_copy): Likewise.
	(vect_get_vec_defs_for_operand): New function.
	(vect_get_vec_defs): Likewise.
	(vect_build_gather_load_calls): Adjust.
	(vect_get_gather_scatter_ops): Likewise.
	(vectorizable_bswap): Likewise.
	(vectorizable_call): Likewise.
	(vectorizable_simd_clone_call): Likewise.
	(vect_get_loop_based_defs): Remove.
	(vect_create_vectorized_demotion_stmts): Adjust.
	(vectorizable_conversion): Likewise.
	(vectorizable_assignment): Likewise.
	(vectorizable_shift): Likewise.
	(vectorizable_operation): Likewise.
	(vectorizable_scan_store): Likewise.
	(vectorizable_store): Likewise.
	(vectorizable_load): Likewise.
	(vectorizable_condition): Likewise.
	(vectorizable_comparison): Likewise.
	(vect_transform_stmt): Adjust and remove no longer applicable
	sanity checks.
	* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
	STMT_VINFO_VEC_STMTS.
	(vec_info::free_stmt_vec_info): Relase it.
	* tree-vectorizer.h (_stmt_vec_info::vectorized_stmt): Remove.
	(_stmt_vec_info::vec_stmts): Add.
	(STMT_VINFO_VEC_STMT): Remove.
	(STMT_VINFO_VEC_STMTS): New.
	(vect_get_vec_def_for_operand_1): Remove.
	(vect_get_vec_def_for_operand): Likewise.
	(vect_get_vec_defs_for_stmt_copy): Likewise.
	(vect_get_vec_def_for_stmt_copy): Likewise.
	(vect_get_vec_defs): New overloads.
	(vect_get_vec_defs_for_operand): New.
	(vect_get_slp_defs): Declare.
2020-06-10 12:05:36 +02:00
Qian Chao
6d9ef0621f
tmmark: verify_ssa failed [PR95569]
This patch fixes a latent bug exposed by eb72dc663e.
See the discussion on the bug for details.

Bootstrapped and regtested on aarch64-linux-gnu. No new fails introduced.

2020-06-10  Qian Chao  <qianchao9@huawei.com>

gcc/ChangeLog:

	PR tree-optimization/95569
	* trans-mem.c (expand_assign_tm): Ensure that rtmp is marked TREE_ADDRESSABLE.

gcc/testsuite/ChangeLog:

	PR tree-optimization/95569
	* gcc.dg/tm/pr95569.c: New test.
2020-06-10 11:05:06 +02:00
Martin Liska
dc6d15eaa2
Add gcc_assert that &global_options are not dirty modified.
gcc/ChangeLog:

2020-03-20  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/92860
	* optc-save-gen.awk: Generate new function cl_optimization_compare.
	* opth-gen.awk: Generate declaration of the function.

gcc/c-family/ChangeLog:

2020-03-20  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/92860
	* c-attribs.c (handle_optimize_attribute):
	Save global options and compare it after parsing of function
	attribute.
	* c-pragma.c (opt_stack::saved_global_options): New field.
	(handle_pragma_push_options): Save global_options.
	(handle_pragma_pop_options): Compare them after pop.
2020-06-10 10:04:14 +02:00
Martin Liska
771e60dd07
gcc-changelog: add more Review by prefixes.
contrib/ChangeLog:

	* gcc-changelog/git_commit.py: Add more supported prefixes.
	* gcc-changelog/test_email.py: Fix one flake8 error.
	* gcc-changelog/test_patches.txt: Add tested for newly
	supported prefixes.
2020-06-10 09:58:07 +02:00
Jonathan Wakely
1ea9a0b74e
gcc-changelog: Improve git_commit.py diagnostics
This changes some error messages to be more self-consistent and to fix
some grammar.

contrib/ChangeLog:

	* gcc-changelog/git_commit.py (GitCommit.parse_changelog):
	Improve error strings.
	* gcc-changelog/test_email.py: Update expected errors.
2020-06-10 09:36:34 +02:00
GCC Administrator
b952c2cfcd Daily bump. 2020-06-10 00:16:47 +00:00
Jonathan Wakely
733167f9d5 libstdc++: Define converting assignment operator for std::move_iterator
As clarified by LWG 3265, std::move_iterator is supposed to have an
assignment operator that converts from a different specialization of
std::move_iterator, which performs an assignment. That has always been
missing from libstdc++, so assigning a different type actually performs
a converting construction, then an assignment. This is non-conforming
for the (fairly contrived) case where the converting assignment is
well-formed but the converting construction is not.

	* include/bits/stl_iterator.h (move_iterator::operator=): Define.
	* testsuite/24_iterators/move_iterator/dr3265.cc: New test.
2020-06-09 22:16:24 +01:00
Jonathan Wakely
d364705791 libstdc++: Define std::bad_optional_access constructor as defaulted
The standard requires that std::bad_optional_access' default
constructor has a non-throwing exception specification.

	* include/std/optional (bad_optional_access): Define default
	constructor and destructor as defaulted.
	* testsuite/20_util/optional/bad_access.cc: New test.
2020-06-09 22:14:43 +01:00
Michael Meissner
d7274dbf82 PowerPC: Add future hwcap2 bits
This patch adds support for the two new HWCAP2 fields used by the
__builtin_cpu_supports function.  It adds support in the target_clones
attribute for -mcpu=future.

The two new __builtin_cpu_supports tests are:
	__builtin_cpu_supports ("isa_3_1")
	__builtin_cpu_supports ("mma")

The bits used are the bits that the Linux kernel engineers will be using for
these new features.

gcc/
2020-06-09  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
	'future' PowerPC platform.
	(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
	(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
	* config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
	MMA HWCAP2 bits.
	* config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
	(rs6000_clone_map): Add 'future' system target_clones support.

testsuite/
2020-06-09  Michael Meissner  <meissner@linux.ibm.com>

	* gcc.target/powerpc/clone3.c: New test for using 'future' with
	the target_clones attribute.
2020-06-09 15:35:43 -05:00
Michael Meissner
2753f2f8b4 PowerPC: Add future hwcap2 bits
This patch adds support for the two new HWCAP2 fields used by the
__builtin_cpu_supports function.  It adds support in the target_clones
attribute for -mcpu=future.

The two new __builtin_cpu_supports tests are:
	__builtin_cpu_supports ("isa_3_1")
	__builtin_cpu_supports ("mma")

The bits used are the bits that the Linux kernel engineers will be using for
these new features.

testsuite/
2020-06-05  Michael Meissner  <meissner@linux.ibm.com>

	* gcc.target/powerpc/clone3.c: New test for using 'future' with
	the target_clones attribute.
2020-06-09 15:32:52 -05:00
Michael Meissner
7ba33e898f PowerPC: Add future hwcap2 bits
This patch adds support for the two new HWCAP2 fields used by the
__builtin_cpu_supports function.  It adds support in the target_clones
attribute for -mcpu=future.

The two new __builtin_cpu_supports tests are:
	__builtin_cpu_supports ("isa_3_1")
	__builtin_cpu_supports ("mma")

The bits used are the bits that the Linux kernel engineers will be using for
these new features.

gcc/
2020-06-05  Michael Meissner  <meissner@linux.ibm.com>

	* config/rs6000/ppc-auxv.h (PPC_PLATFORM_FUTURE): Allocate
	'future' PowerPC platform.
	(PPC_FEATURE2_ARCH_3_1): New HWCAP2 bit for ISA 3.1.
	(PPC_FEATURE2_MMA): New HWCAP2 bit for MMA.
	* config/rs6000/rs6000-call.c (cpu_supports_info): Add ISA 3.1 and
	MMA HWCAP2 bits.
	* config/rs6000/rs6000.c (CLONE_ISA_3_1): New clone support.
	(rs6000_clone_map): Add 'future' system target_clones support.
2020-06-09 15:32:02 -05:00
Michael Meissner
243e5bbfef PowerPC: Add pcrel/prefixed target supports.
2020-06-09  Michael Meissner  <meissner@linux.ibm.com>

	* lib/target-supports.exp (check_effective_target_powerpc_pcrel):
	New.
	(check_effective_target_powerpc_prefixed_addr): New.
2020-06-09 15:17:12 -05:00
Michael Kuhn
776256757b When specifying a non-system prefix with --with-zstd, the build fails because the header and library cannot be found (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=95005).
The attached patch fixes the problem and is what we use in Spack to
make GCC build with zstd support.

gcc/
	* Makefile.in (ZSTD_INC): Define.
	(ZSTD_LIB): Include ZSTD_LDFLAGS.
	(CFLAGS-lto-compress.o): Add ZSTD_INC.
	* configure.ac (ZSTD_CPPFLAGS, ZSTD_LDFLAGS): New variables for
	AC_SUBST.
	* configure: Rebuilt.
2020-06-09 14:07:46 -06:00
Martin Liska
84fa38d20a
asan: fix wrong options for a test-case.
gcc/testsuite/ChangeLog:

	* c-c++-common/asan/inline-kernel.c: Add missing
	-fno-sanitize-address option.
2020-06-09 22:05:17 +02:00
Iain Sandoe
006f28aefe coroutines: Ensure distinct DTOR trees [PR95137].
Part of the PR notes that there are UBSAN fails for the coroutines
test suite.  These are primarily related to the use of the same DTOR
tree in the two edges from the await block.  Fixed by building a new
tree for each.

gcc/cp/ChangeLog:

	PR c++/95137
	* coroutines.cc (expand_one_await_expression): Build separate
	DTOR trees for the awaitable object on the destroy and resume
	paths.
2020-06-09 20:52:34 +01:00
Jonathan Wakely
62963c60fc gcc-changelog: Use non-zero exit status on error
Also add comment explaining what the script does.

contrib/ChangeLog:

	* gcc-changelog/git_email.py: Set exit status on error.
2020-06-09 20:40:44 +01:00
Jason Merrill
77103685ff tree-inline: Fix VLA handling [PR95552]
The problem in this testcase comes from cloning the constructor into
complete and base variants.  When we clone the body the first time,
walk_tree_1 calls copy_tree_body_r on the type of the artificial TYPE_DECL
we made for the VLA type without calling it on the decl itself, so we
overwrite the type of the TYPE_DECL without copying the decl first.

This has been broken since we started inserting a TYPE_DECL for anonymous
VLAs in r7-457.

This patch fixes walk_tree_1 to call the function on the TYPE_DECL, as we do
for other decls of a DECL_EXPR.

gcc/ChangeLog:

	PR c++/95552
	* tree.c (walk_tree_1): Call func on the TYPE_DECL of a DECL_EXPR.

gcc/testsuite/ChangeLog:

	PR c++/95552
	* g++.dg/ext/vla23.C: New test.
2020-06-09 15:31:51 -04:00
Marco Elver
ab2789ec50
tsan: Add optional support for distinguishing volatiles
Add support to optionally emit different instrumentation for accesses to
volatile variables. While the default TSAN runtime likely will never
require this feature, other runtimes for different environments that
have subtly different memory models or assumptions may require
distinguishing volatiles.

One such environment are OS kernels, where volatile is still used in
various places, and often declare volatile to be appropriate even in
multi-threaded contexts. One such example is the Linux kernel, which
implements various synchronization primitives using volatile
(READ_ONCE(), WRITE_ONCE()).

Here the Kernel Concurrency Sanitizer (KCSAN), is a runtime that uses
TSAN instrumentation but otherwise implements a very different approach
to race detection from TSAN:

	https://github.com/google/ktsan/wiki/KCSAN

Due to recent changes in requirements by the Linux kernel, KCSAN
requires that the compiler supports tsan-distinguish-volatile (among
several new requirements):

	https://lore.kernel.org/lkml/20200521142047.169334-7-elver@google.com/

gcc/
	* params.opt: Define --param=tsan-distinguish-volatile=[0,1].
	* sanitizer.def (BUILT_IN_TSAN_VOLATILE_READ1): Define new
	builtin for volatile instrumentation of reads/writes.
	(BUILT_IN_TSAN_VOLATILE_READ2): Likewise.
	(BUILT_IN_TSAN_VOLATILE_READ4): Likewise.
	(BUILT_IN_TSAN_VOLATILE_READ8): Likewise.
	(BUILT_IN_TSAN_VOLATILE_READ16): Likewise.
	(BUILT_IN_TSAN_VOLATILE_WRITE1): Likewise.
	(BUILT_IN_TSAN_VOLATILE_WRITE2): Likewise.
	(BUILT_IN_TSAN_VOLATILE_WRITE4): Likewise.
	(BUILT_IN_TSAN_VOLATILE_WRITE8): Likewise.
	(BUILT_IN_TSAN_VOLATILE_WRITE16): Likewise.
	* tsan.c (get_memory_access_decl): Argument if access is
	volatile. If param tsan-distinguish-volatile is non-zero, and
	access if volatile, return volatile instrumentation decl.
	(instrument_expr): Check if access is volatile.

gcc/testsuite/
	* c-c++-common/tsan/volatile.c: New test.
2020-06-09 21:22:24 +02:00
Michael Meissner
6e52b2297e PowerPC: PowerPC tests: Add prefixed/pcrel tests.
testsuite/
2020-06-09  Michael Meissner  <meissner@linux.ibm.com>

	* lib/target-supports.exp (check_effective_target_powerpc_pcrel):
	New.
	(check_effective_target_powerpc_prefixed_addr): New.
2020-06-09 14:48:24 -04:00
Richard Biener
ec34277611 Remove dead code
This removes dead code left over from the reduction vectorization
refactoring last year.

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

	* tree-vect-loop.c (vectorizable_induction): Remove dead code.
2020-06-09 19:50:27 +02:00
Iain Buclaw
9886612009 d: Merge upstream dmd 13d67c575.
Reviewed-on: https://github.com/dlang/dmd/pull/11224

gcc/d/ChangeLog:

	* dmd/MERGE: Merge upstream dmd 13d67c575.
	* d-builtins.cc (build_frontend_type): Update call to
	TypeVector::create.
	* d-frontend.cc (Global::_init): Move setting of errorLimit to ...
	* d-lang.cc (d_init_options): ... here.  Update for new field
	location of errorLimit.
	(d_post_options): Likewise.
	* d-port.cc (Port::readwordLE): Update signature.
	(Port::readwordBE): Likewise.
	(Port::readlongLE): Likewise.
	(Port::readlongBE): Likewise.
	* decl.cc (get_symbol_decl): Update for new field types.
2020-06-09 19:00:35 +02:00
Jason Merrill
ef41587df9 c++: Tweak predeclare_vla.
We only need to predeclare a VLA type if it's wrapped in a pointer type;
otherwise gimplify_type_sizes will handle it.

gcc/cp/ChangeLog:

	PR c++/95552
	* cp-gimplify.c (predeclare_vla): Only predeclare a VLA if it's
	wrapped in a pointer type.
2020-06-09 12:05:50 -04:00
Tobias Burnus
bf4ab2689b openmp: ensure variables in offload table are streamed out (PRs 94848 + 95551)
gcc/ChangeLog:

	* omp-offload.c (add_decls_addresses_to_decl_constructor,
	omp_finish_file): With in_lto_p, stream out all offload-table
	items even if the symtab_node does not exist.
2020-06-09 16:31:22 +02:00
Richard Biener
ac22e651ef Remove dead code
This removes dead code that was left over from the reduction
vectorization refactoring last year.

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

	* tree-vect-stmts.c (vect_transform_stmt): Remove dead code.
2020-06-09 16:02:09 +02:00
Patrick Palka
e12516e140 Fix some ChangeLog entries 2020-06-09 09:57:25 -04:00
Martin Liska
f6ee4c4fe7
gcov-dump: fix --help spacing
Pushed to master.

gcc/ChangeLog:

	* gcov-dump.c (print_usage): Fix spacing for --raw option
	in --help.
2020-06-09 14:39:26 +02:00
Martin Liska
4089df8ef4
sanitizer: do not inline no-sanitize into sanitizer fn
gcc/ChangeLog:

	* cif-code.def (ATTRIBUTE_MISMATCH): Rename to...
	(SANITIZE_ATTRIBUTE_MISMATCH): ...this.
	* ipa-inline.c (sanitize_attrs_match_for_inline_p):
	Handle all sanitizer options.
	(can_inline_edge_p): Use renamed CIF_* enum value.

gcc/testsuite/ChangeLog:

	* c-c++-common/asan/inline.c: New test.
	* c-c++-common/asan/inline-kernel.c: New test.
	* c-c++-common/tsan/inline.c: New test.
	* c-c++-common/ubsan/inline.c: New test.
2020-06-09 14:35:43 +02:00
Joe Ramsay
bb3ab62a8b AArch64+SVE: Add support for unpacked unary ops and BIC
MD patterns extended for unary ops ABS, CLS, CLZ, CNT, NEG and NOT
to support unpacked vectors. Also extended patterns for BIC to
support unpacked vectors where input elements are of the same width.

gcc/ChangeLog:

2020-06-09  Joe Ramsay  <joe.ramsay@arm.com>

	* config/aarch64/aarch64-sve.md (<optab><mode>2): Add support for
	unpacked vectors.
	(@aarch64_pred_<optab><mode>): Add support for unpacked vectors.
	(@aarch64_bic<mode>): Enable unpacked BIC.
	(*bic<mode>3): Enable unpacked BIC.

gcc/testsuite/ChangeLog:

2020-06-09  Joe Ramsay  <joe.ramsay@arm.com>

	* gcc.target/aarch64/sve/logical_unpacked_abs.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_bic_1.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_bic_2.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_bic_3.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_bic_4.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_neg.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_not.c: New test.
2020-06-09 12:23:56 +01:00
Martin Liska
452283bd06
gcov: improve --coverage small example
Pushed to master.

gcc/ChangeLog:

	PR gcov-profile/95365
	* doc/gcov.texi: Compile and link one example in 2 steps.
2020-06-09 13:16:09 +02:00
Martin Liska
862b9b225f
libgcov: fix TOPN type casting
The patch fixes tree-prof.exp tests on solaris11 and i686-linux-gnu,
problem was that sizeof of a pointer is different from sizeof gcov_type.

I'm going to install it if there are no objections.
Thanks,
Martin

libgcc/ChangeLog:

	PR gcov-profile/95494
	* libgcov-driver.c (write_top_counters): Cast first to
	intptr_t as sizeof(*) != sizeof(gcov_type).
	* libgcov.h (gcov_counter_set_if_null): Remove.
	(gcov_topn_add_value): Cast first to intptr_t and update
	linked list directly.
2020-06-09 13:07:41 +02:00
Javier Miranda
009668e31f [Ada] Missing check on private overriding of dispatching primitive
2020-06-09  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* sem_ch6.adb (New_Overloaded_Entity): Add missing call to check
	subtype conformance of overriding dispatching primitive.
	* sem_eval.adb (Subtypes_Statically_Match): Handle derivations
	of private subtypes.
	* libgnat/g-exptty.adb, libgnat/g-exptty.ads
	(Set_Up_Communications): Fix the profile since null-exclusion is
	missing in the access type formals.
	* sem_disp.ads (Check_Operation_From_Private_View): Adding
	documentation.
2020-06-09 04:09:07 -04:00
Eric Botcazou
a2048d055b [Ada] Small enhancement in XEinfo utility
2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* einfo.ads (XEINFO section): Update format description.
	(Is_Subprogram_Or_Entry): Move pragma to regular section.
	(Is_Subprogram_Or_Generic_Subprogram): Likewise.
	* xeinfo.adb (Get_B4): Rename to...
	(Get_B0): ...this.
	(Translate_Expr): New procedure extracted from...
	(XEinfo): ...here.  Try to apply Get_B0 first and then
	call Translate_Expr to translate supported constructs.
2020-06-09 04:09:07 -04:00
Eric Botcazou
fd66407104 [Ada] Implement AI12-0028: Import of variadic C functions
2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch6.adb (Freeze_Subprogram): Deal with convention C_Family.
	* freeze.adb (Freeze_Profile): Likewise.  Add missing guard.
	* sem_mech.adb (Set_Mechanisms): Likewise.
	* lib-xref.adb (Output_Import_Export_Info): Ditto for C_Variadic.
	* repinfo.adb (List_Subprogram_Info): Likewise.
	* sem_prag.adb (Set_Convention_From_Pragma): Move main checks for
	Stdcall to...
	(Process_Convention): ...here.  Add checks for C_Variadic.
	* snames.ads-tmpl: Add Name_C_Variadic_0 .. Name_C_Variadic_16.
	Use consistent format for subtype declarations.
	(Convention_Id): Add Convention_C_Variadic_0 .. C_Variadic_16
	and move Convention_CPP up.
	(Convention_C_Family): New subtype of Convention_Id.
	(Convention_C_Variadic): Likewise.
	(Foreign_Convention): Use explicit upper bound.
	Add pragma Inline for Is_Configuration_Pragma_Name,
	Is_Function_Attribute_Name, Is_Internal_Attribute_Name
	and Is_Procedure_Attribute_Name.
	* snames.adb-tmpl (Get_Convention_Id): Deal with Name_Variadic_n.
	(Get_Convention_Name): Deal with Convention_Variadic_n.
	* types.h (Convention_Id): New typedef.
	* xsnamest.adb (Name2): New variable.
	(Is_Conv): New pattern.
	(Get_Subt1): Likewise.
	(Get_Subt2): Likewise.
	Output subtypes of Convention_Id into the C header file.
2020-06-09 04:09:06 -04:00
Arnaud Charlet
2d6f6e08e6 [Ada] Code clean ups and comments updates
2020-06-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* exp_ch3.adb, exp_ch4.adb, exp_ch6.adb, exp_ch9.adb,
	exp_disp.adb, exp_util.adb: Add comments related to errors that
	should be moved to semantic analysis. Also replace "?" with "??"
	in warning messages.
2020-06-09 04:09:06 -04:00
Arnaud Charlet
3e6711046a [Ada] Improve handling of null unbounded strings
2020-06-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/a-strunb__shared.ads, libgnat/a-strunb__shared.adb
	(Reference, Unreference): No-op for Empty_Shared_String.
	Remove unneeded calls to Reference.
2020-06-09 04:09:06 -04:00
Arnaud Charlet
1a7748ad4c [Ada] Remove kludge for AI05-0087
2020-06-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* exp_ch5.adb (Expand_N_Assignment): Remove kludge for
	AI05-0087.
	* sem_ch12.adb (Validate_Derived_Type_Instance): Implement
	AI05-0087 retroactively since it's a binding interpretation.
2020-06-09 04:09:06 -04:00
Eric Botcazou
148c86d1ab [Ada] Small cleanup in Einfo unit
2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* einfo.ads (Has_Foreign_Convention): Fix description.
	(Component_Alignment): Move around.
	(Has_DIC): Likewise.
	(Has_Interrupt_Handler): Likewise.
	(Has_Invariants): Likewise.
	(Is_Atomic_Or_VFA): Likewise.
	(Next_Index): Likewise.
	(Scope_Depth): Likewise.
	(Init_Component_Size): Likewise.
	(Init_Component_Location): Likewise.
	(Init_Size): Likewise.
	(Inline Pragmas for functions): Add Corresponding_Function,
	Corresponding_Procedure, Entry_Max_Queue_Lengths_Array,
	Finalize_Storage_Only, Has_DIC, Has_Invariants,
	Initialization_Statements, Is_Anonymous_Access_Type,
	Next_Stored_Discriminant, Address_Clause, Alignment_Clause,
	Float_Rep, Has_Foreign_Convention, Has_Non_Limited_View,
	Is_Constant_Object, Is_Discriminal, Is_Finalizer, Is_Null_State,
	Is_Prival, Is_Protected_Component, Is_Protected_Record_Type,
	Is_Subprogram_Or_Entry, Is_Task_Record_Type, Size_Clause,
	Stream_Size_Clause, Type_High_Bound, Type_Low_Bound, Known_*,
	Unknown_*.
	(Inline Pragmas for procedures): Add Set_Corresponding_Function,
	Set_Corresponding_Procedure, Set_Finalize_Storage_Only,
	Set_Float_Rep, Set_Initialization_Statements,
	Init_Normalized_First_Bit, Init_Normalized_Position,
	Init_Normalized_Position_Max.
	* einfo.adb (Was_Hidden): Move around.
	(Is_Packed_Array): Likewise.
	(Model_Emin_Value): Likewise.
	(Model_Epsilon_Value): Likewise.
	(Model_Mantissa_Value): Likewise.
	(Model_Small_Value): Likewise.
2020-06-09 04:09:05 -04:00
Ed Schonberg
4e510a0a2b [Ada] Ada2020 AI12-0282: Shared variable control aspects in generics
2020-06-09  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Require
	exact match between formal and actual for aspects Atomic and
	Volatile only for formal derived types.
2020-06-09 04:09:05 -04:00
Arnaud Charlet
c4609e75ef [Ada] Improve handling of aggregates in Side_Effect_Free
2020-06-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* exp_util.adb (Side_Effect_Free): Improve handling of
	N_Aggregate.
2020-06-09 04:09:05 -04:00
Ghjuvan Lacambre
10212bd8f0 [Ada] Fix wrong type being used for range check generation
2020-06-09  Ghjuvan Lacambre  <lacambre@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Qualified_Expression): Use Subtype_Mark
	type.
2020-06-09 04:09:04 -04:00
Arnaud Charlet
c42006e91e [Ada] Expand more others aggregates statically
2020-06-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* exp_aggr.adb (Max_Aggregate_Size): New function to factorize
	code.
	(Convert_To_Positional, Aggr_Size_OK): Use Max_Aggregate_Size.
2020-06-09 04:09:04 -04:00
Arnaud Charlet
4228c32ab0 [Ada] Code refactoring on calls to Set_Debug_Info_Needed
2020-06-09  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* sem_util.ads, sem_util.adb (Set_Debug_Info_Defining_Id): New.
	* exp_ch3.adb, exp_ch8.adb: Call Set_Debug_Info_Defining_Id when
	relevant.
2020-06-09 04:09:04 -04:00
Justin Squirek
7d4d54aa7c [Ada] Missing documentation for Returns_By_Ref
2020-06-09  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* einfo.ads (Returns_By_Ref): Modify documentation to reflect
	that Returns_By_Ref can be applied to E_Subprogram_Type
	entities.
2020-06-09 04:09:04 -04:00
Justin Squirek
d4fd46371a [Ada] Spurious overlap error on zero-sized arrays with -gnateV
2020-06-09  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* exp_attr.adb (Expand_N_Attribute_Reference): Modify expansion
	of 'Overlaps_Storage to take into account zero sized arrays.
2020-06-09 04:09:03 -04:00
Bob Duff
7bf5f4d985 [Ada] Write_Invocation_Graph_Vertex: include lib item name
2020-06-09  Bob Duff  <duff@adacore.com>

gcc/ada/

	* bindo-graphs.adb, bindo-graphs.ads: For each invocation graph,
	record the corresponding library graph.
	* bindo-writers.adb (Write_Invocation_Graph_Vertex): Print the
	lib item name. Remove library graph parameters.
	* bindo-augmentors.adb, bindo-augmentors.ads,
	bindo-builders.adb, bindo-diagnostics.adb,
	bindo-diagnostics.ads, bindo-elaborators.adb: Remove library
	graph parameters.
2020-06-09 04:09:03 -04:00
Eric Botcazou
b97813ab96 [Ada] Propagate DIC, Invariant and Predicate attributes to views
2020-06-09  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* checks.adb (Apply_Predicate_Check): Extend trick used for
	aggregates to qualified aggregates and object declarations
	* einfo.ads (Has_Own_DIC): Mention the underlying full view.
	(Has_Own_Invariants): Likewise.
	(Has_Predicates): Likewise.
	* exp_util.adb (Build_DIC_Procedure_Declaration): Do not deal
	with base types explicitly but with underlying full views.
	(Build_Invariant_Procedure_Declaration): Likewise.
	* sem_ch13.adb (Build_Predicate_Functions): Do not deal with
	the full view manually but call Propagate_Predicate_Attributes
	to propagate attributes to views.
	(Build_Predicate_Function_Declaration): Likewise.
	* sem_ch3.adb (Build_Assertion_Bodies_For_Type): Build bodies
	for private full views with an underlying full view.
	(Build_Derived_Private_Type): Small comment tweak.
	(Complete_Private_Subtype): Call Propagate_Predicate_Attributes.
	(Process_Full_View): Do not deal with base types explicitly for
	DIC and Invariant attributes.  Deal with underlying full views
	for them.  Call Propagate_Predicate_Attributes and deal with
	underlying full views for them.
	* sem_ch7.adb (Preserve_Full_Attributes): Do not cross propagate
	DIC and Invariant attributes between full type and its base type.
	Propagate Predicate attributes from the full to the private view.
	* sem_ch9.adb (Analyze_Protected_Type_Declaration): Likewise.
	(Analyze_Task_Type_Declaration): Likewise.
	* sem_util.ads (Get_Views): Remove Full_Base parameter and add
	UFull_Typ parameter.
	(Propagate_Predicate_Attributes): New procedure.
	* sem_util.adb (Get_Views): Remove Full_Base parameter and add
	UFull_Typ parameter.  Retrieve the Corresponding_Record_Type
	from the underlying full view, if any.
	(Propagate_DIC_Attributes): Remove useless tests.
	(Propagate_Invariant_Attributes): Likewise.
	(Propagate_Predicate_Attributes): New procedure.
2020-06-09 04:09:03 -04:00
Justin Squirek
bf2480e2fb [Ada] Crash on exit statement within predicated loop
2020-06-09  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* exp_ch5.adb (Expand_Predicated_Loop): Perserve the original
	loop identifier within the expansion.
2020-06-09 04:09:02 -04:00
Bob Duff
059a704a41 [Ada] gnatbind: Correct assertions in Add_Edge_Kind_Check
2020-06-09  Bob Duff  <duff@adacore.com>

gcc/ada/

	* bindo-graphs.ads (Library_Graph_Edge_Kind): Reorder enumerals
	to reflect the order of adding edges. Clarify comments.
	* bindo-graphs.adb (Add_Edge_Kind_Check): Correct the
	assertions.  Reorder the "when"s to match the order of adding
	edges, and therefore the order of enumerals in type
	Library_Graph_Edge_Kind.  Change names to "Old_" and "New_" to
	clarify what's what.  Combine Invocation_Edge into the "<="
	test.  Fix the "raise Program_Error" message, which was
	backwards.
2020-06-09 04:09:02 -04:00