Commit Graph

177301 Commits

Author SHA1 Message Date
Eric Botcazou 895cf059f0 [Ada] Fix incorrect insertion of post-call actions in if-expression
2020-06-10  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_ch6.adb (Insert_Post_Call_Actions): Deal with the context
	of an if-expression and with a call written in prefixed notation.
2020-06-10 09:34:55 -04:00
Gary Dismukes c392a00149 [Ada] Minor reformatting and some typo fixes
2020-06-10  Gary Dismukes  <dismukes@adacore.com>

gcc/ada/

	* einfo.ads: Minor reformatting of a comment.
	* exp_aggr.adb: Minor reformatting and a grammar correction.
	* exp_attr.adb: Minor reformatting and a typo fix in some
	comments.
	* sem_ch12.adb: Fix three typos in comments.
2020-06-10 09:34:55 -04:00
Richard Biener f25161bdcc Make {SLP_TREE,STMT_VINFO}_VEC_STMTS a vector of gimple *
This makes {SLP_TREE,STMT_VINFO}_VEC_STMTS a vector of gimple * and
not allocate a stmt_vec_info for vectorizer generated stmts since
this is now possible after removing the only use which was chaining
of vector stmts via STMT_VINFO_RELATED_STMT.

This also removes all stmt_vec_info allocations done for vector
stmts, the remaining ones are for stmts in the scalar IL and for
patterns which are not part of the IL.  Thus after this the stmt
UIDs inside a basic-block are suitable for dominance checking
if you ignore (or lazy-fill) UIDs of zero of the vector stmts
inserted during transform.  This property is ensured by a new
flag set when pattern analysis is complete.

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

	* tree-vectorizer.h (_slp_tree::vec_stmts): Make it a vector
	of gimple * stmts.
	(_stmt_vec_info::vec_stmts): Likewise.
	(vec_info::stmt_vec_info_ro): New flag.
	(vect_finish_replace_stmt): Adjust declaration.
	(vect_finish_stmt_generation): Likewise.
	(vectorizable_induction): Likewise.
	(vect_transform_reduction): Likewise.
	(vectorizable_lc_phi): Likewise.
	* tree-vect-data-refs.c (vect_create_data_ref_ptr): Do not
	allocate stmt infos for increments.
	(vect_record_grouped_load_vectors): Adjust.
	* 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-patterns.c (vect_pattern_recog): Set stmt_vec_info_ro.
	* tree-vect-slp.c (vect_get_slp_vect_def): Adjust.
	(vect_get_slp_defs): Likewise.
	(vect_transform_slp_perm_load): Likewise.
	(vect_schedule_slp_instance): Likewise.
	(vectorize_slp_instance_root_stmt): Likewise.
	* tree-vect-stmts.c (vect_get_vec_defs_for_operand): Likewise.
	(vect_finish_stmt_generation_1): Do not allocate a stmt info.
	(vect_finish_replace_stmt): Do not return anything.
	(vect_finish_stmt_generation): Likewise.
	(vect_build_gather_load_calls): Adjust.
	(vectorizable_bswap): Likewise.
	(vectorizable_call): Likewise.
	(vectorizable_simd_clone_call): Likewise.
	(vect_create_vectorized_demotion_stmts): Likewise.
	(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): Likewise.
	* tree-vectorizer.c (vec_info::vec_info): Initialize
	stmt_vec_info_ro.
	(vec_info::replace_stmt): Copy over stmt UID rather than
	unsetting/setting a stmt info allocating a new UID.
	(vec_info::set_vinfo_for_stmt): Assert !stmt_vec_info_ro.
2020-06-10 15:13:06 +02:00
Aldy Hernandez 1396fa5b91 Merge evrp uses of substitute_and_fold_engine into the engine itself.
This patch merges the evrp uses of the substitute and fold engine into
the engine itself, at least the parts that can be re-used by other
engine uses.  It also adds a context parameter to get_value() for
further use.

gcc/
	* gimple-loop-versioning.cc (loop_versioning::name_prop::get_value):
	Add stmt parameter.
	* gimple-ssa-evrp.c (class evrp_folder): New.
	(class evrp_dom_walker): Remove.
	(execute_early_vrp): Use evrp_folder instead of evrp_dom_walker.
	* tree-ssa-ccp.c (ccp_folder::get_value): Add stmt parameter.
	* tree-ssa-copy.c (copy_folder::get_value): Same.
	* tree-ssa-propagate.c (substitute_and_fold_engine::replace_uses_in):
	Pass stmt to get_value.
	(substitute_and_fold_engine::replace_phi_args_in): Same.
	(substitute_and_fold_dom_walker::after_dom_children): Call
	post_fold_bb.
	(substitute_and_fold_dom_walker::foreach_new_stmt_in_bb): New.
	(substitute_and_fold_dom_walker::propagate_into_phi_args): New.
	(substitute_and_fold_dom_walker::before_dom_children): Adjust to
	call virtual functions for folding, pre_folding, and post folding.
	Call get_value with PHI.  Tweak dump.
	* tree-ssa-propagate.h (class substitute_and_fold_engine):
	New argument to get_value.
	New virtual function pre_fold_bb.
	New virtual function post_fold_bb.
	New virtual function pre_fold_stmt.
	New virtual function post_new_stmt.
	New function propagate_into_phi_args.
	* tree-vrp.c (vrp_folder::get_value): Add stmt argument.
	* vr-values.c (vr_values::extract_range_from_stmt): Adjust dump
	output.
	(vr_values::fold_cond): New.
	(vr_values::simplify_cond_using_ranges_1): Call fold_cond.
	* vr-values.h (class vr_values): Add
	simplify_cond_using_ranges_when_edge_is_known.
gcc/testsuite/
	* gcc.dg/tree-ssa/ssa-dse-30.c: Adjust test for folding of
	memmove happening later.
2020-06-10 15:09:37 +02:00
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