Commit Graph

178014 Commits

Author SHA1 Message Date
Andrea Corallo
0d7e5fa655 aarch64: Add 64 bit setter getter fpsr fpcr
gcc/ChangeLog

	* config/aarch64/aarch64-builtins.c (aarch64_builtins): Add enums
	for 64bits fpsr/fpcr getter setters builtin variants.
	(aarch64_init_fpsr_fpcr_builtins): New function.
	(aarch64_general_init_builtins): Modify to make use of the later.
	(aarch64_expand_fpsr_fpcr_setter): New function.
	(aarch64_general_expand_builtin): Modify to make use of the later.
	* config/aarch64/aarch64.md (@aarch64_set_<fpscr_name><GPI:mode>)
	(@aarch64_get_<fpscr_name><GPI:mode>): New patterns replacing and
	generalizing 'get_fpcr', 'set_fpsr'.
	* config/aarch64/iterators.md (GET_FPSCR, SET_FPSCR): New int
	iterators.
	(fpscr_name): New int attribute.
	* doc/extend.texi (__builtin_aarch64_get_fpcr64)
	(__builtin_aarch64_set_fpcr64, __builtin_aarch64_get_fpsr64)
	(__builtin_aarch64_set_fpsr64): Add into AArch64 Built-in
	Functions.

gcc/testsuite/ChangeLog

	* gcc.target/aarch64/get_fpcr64_1.c: New test.
	* gcc.target/aarch64/set_fpcr64_1.c: New test.
	* gcc.target/aarch64/get_fpsr64_1.c: New test.
	* gcc.target/aarch64/set_fpsr64_1.c: New test.
2020-07-01 17:31:07 +02:00
Mark Eggleston
685d8dafb4 Fortran : False positive for optional arguments PR95446
Check that there is non-optional argument of the same rank in the
list of actual arguments.  If there is the warning is not required.

2020-07-01  Steven G. Kargl  <kargl@gcc.gnu.org>

gcc/fortran/

	PR fortran/95446
	* resolve.c (resolve_elemental_actual): Add code to check for
	non-optional argument of the same rank.  Revise warning message
	to refer to the Fortran 2018 standard.

2020-07-01  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/95446
	* gfortran.dg/elemental_optional_args_6.f90: Remove check
	for warnings that were erroneously output.
	* gfortran.dg/pr95446.f90: New test.
2020-07-01 15:39:16 +01:00
Martin Sebor
8461191b82 Adjust text of expected warnings changed in PR c++/86568.
libstdc++-v3/ChangeLog:

	* testsuite/21_strings/basic_string_view/cons/char/nonnull.cc: Adjust
	text of expected warning.
	* testsuite/21_strings/basic_string_view/cons/wchar_t/nonnull.cc: Same.
	* testsuite/21_strings/basic_string_view/operations/compare/char/nonnull.cc: Same.
	* testsuite/21_strings/basic_string_view/operations/find/char/nonnull.cc: Same.
	* testsuite/21_strings/basic_string_view/operations/rfind/char/nonnull.cc: Same.
2020-07-01 08:33:29 -06:00
Christophe Lyon
aa8b5ca0b5 arm: Fix handler-align.c testcase [PR target/94743]
This testcase triggers the new warning, so compile it with
-mgeneral-regs-only.

2020-07-01  Christophe Lyon  <christophe.lyon@linaro.org>

	PR target/94743

	gcc/testsuite/
	* gcc.target/arm/handler-align.c: Add -mgeneral-regs-only.
2020-07-01 12:28:07 +00:00
Martin Liska
8439b0818e
gcov: avoid trailing space.
gcc/ChangeLog:

	* gcov.c (print_usage): Avoid trailing space for -j option.
2020-07-01 13:51:37 +02:00
Richard Biener
7b3adfa7bb tree-optimization/95839 - teach SLP vectorization about vector inputs
This teaches SLP analysis about vector typed externals that are
fed into the SLP operations via lane extracting BIT_FIELD_REFs.
It shows that there's currently no good representation for
vector code on the SLP side so I went a half way and represent
such vector externals uses always using a SLP permutation node
with a single external SLP child which has a non-standard
representation of no scalar defs but only a vector def.  That
works best for shielding the rest of the vectorizer from it.

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

	PR tree-optimization/95839
	* tree-vect-slp.c (vect_slp_tree_uniform_p): Pre-existing
	vectors are not uniform.
	(vect_build_slp_tree_1): Handle BIT_FIELD_REFs of
	vector registers.
	(vect_build_slp_tree_2): For groups of lane extracts
	from a vector register generate a permute node
	with a special child representing the pre-existing vector.
	(vect_prologue_cost_for_slp): Pre-existing vectors cost nothing.
	(vect_slp_analyze_node_operations): Use SLP_TREE_LANES.
	(vectorizable_slp_permutation): Do not generate or cost identity
	permutes.
	(vect_schedule_slp_instance): Handle pre-existing vector
	that are function arguments.

	* gcc.dg/vect/bb-slp-pr95839-2.c: New testcase.
2020-07-01 13:32:27 +02:00
Richard Biener
deda4625f1 move ILS include to system.h
This moves ISL system header includes to system.h.

	* system.h (INCLUDE_ISL): New guarded include.
	* graphite-dependences.c: Use it.
	* graphite-isl-ast-to-gimple.c: Likewise.
	* graphite-optimize-isl.c: Likewise.
	* graphite-poly.c: Likewise.
	* graphite-scop-detection.c: Likewise.
	* graphite-sese-to-poly.c: Likewise.
	* graphite.c: Likewise.
	* graphite.h: Drop the includes here.
2020-07-01 13:24:16 +02:00
Martin Liska
4222fd8e94
gcov: shorted one option help message
gcc/ChangeLog:

	* gcov.c (print_usage): Shorted option description for -j
	option.
2020-07-01 13:02:24 +02:00
Martin Liska
c4076255e6
gcov: rename 2 options.
gcc/ChangeLog:

	* doc/gcov.texi: Rename 2 options.
	* gcov.c (print_usage): Rename -i,--json-format to
	-j,--json-format and -j,--human-readable to -H,--human-readable.
	(process_args): Fix up parsing.  Document obsolete options and
	how are they changed.

gcc/testsuite/ChangeLog:

	* g++.dg/gcov/loop.C: Use -H option instead of -j option.
2020-07-01 13:00:04 +02:00
Mark Eggleston
624e60f080 Fortran : Bogus error with additional blanks in type(*) PR95829
Checking for "* ) " instead of "*)" clears the bogus error.

2020-07-01  Steven G. Kargl  <kargl@gcc.gnu.org>

gcc/fortran/

	PR fortran/95829
	* decl.c (gfc_match_decl_type_spec): Compare with "* ) " instead
	of "*)".

2020-07-01  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/95829
	* gfortran.dg/pr95829.f90: New test.
2020-07-01 10:14:06 +01:00
Christophe Lyon
2f3fd53220 arm: Fix typos in testcases [PR target/94743]
In my commit r11-1732, I updated the warning message to include
quotes, but I forgot to update the testcases.

2020-01-07  Christophe Lyon  <christophe.lyon@linaro.org>

	PR target/94743

	gcc/testsuite/
	* gcc.target/arm/pr94743-1-hard.c: Add missing quotes in expected
	warning.
	* gcc.target/arm/pr94743-1-softfp.c: Likewise.
2020-07-01 06:54:37 +00:00
Jeff Law
a580aca1b6 Fix bootstrap failure on PA
gcc/
	* config/pa/pa.c (pa_emit_move_sequence): Drop register keyword.
	(pa_output_ascii): Likewise.
2020-06-30 23:03:33 -06:00
Kito Cheng
83c25f27c4 RISC-V: Preserve arch version info during normalizing arch string
- Arch version should preserved if user explicitly specified the version.
  e.g.
    After normalize, -march=rv32if3d should be -march=rv32i_f3p0d
    instead of-march=rv32ifd.

gcc/ChangeLog:

	* common/config/riscv/riscv-common.c (riscv_subset_t): New field
	added.
	(riscv_subset_list::parsing_subset_version): Add parameter for
	indicate explicitly version, and handle explicitly version.
	(riscv_subset_list::handle_implied_ext): Ditto.
	(riscv_subset_list::add): Ditto.
	(riscv_subset_t::riscv_subset_t): Init new field.
	(riscv_subset_list::to_string): Always output version info if version
	explicitly specified.
	(riscv_subset_list::parsing_subset_version): Handle explicitly
	arch version.
	(riscv_subset_list::parse_std_ext): Ditto.
	(riscv_subset_list::parse_multiletter_ext): Ditto.

gcc/testsuite/ChangeLog:

	* gcc.target/riscv/attribute-13.c: New.
2020-07-01 11:30:02 +08:00
David Edelsohn
a2cc9b454d testsuite: enable gcc.target/powerpc direct move tests.
Remove unnecessary requirements for direct-move-* tests.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/direct-move-double1.c: Remove lp64 requirement.
	* gcc.target/powerpc/direct-move-double2.c: Same.
	* gcc.target/powerpc/direct-move-float1.c: Same.
	* gcc.target/powerpc/direct-move-float2.c: Same.
	* gcc.target/powerpc/direct-move-float3.c: Same.
	* gcc.target/powerpc/direct-move-vint1.c: Same.
	* gcc.target/powerpc/direct-move-vint2.c: Same.
	* gcc.target/powerpc/direct-move-long1.c: Remove linux requirement..
	* gcc.target/powerpc/direct-move-long2.c: Same.
2020-06-30 22:08:55 -04:00
David Edelsohn
bc561b0ed2 testsuite: Remove dg-skip SPE.
Remove testsuite directives to skip SPE and SPE specific tests.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/20030218-1.c: Delete.
	* gcc.target/powerpc/20030505.c: Delete.
	* gcc.target/powerpc/20081204-1.c: Delete.
	* gcc.target/powerpc/bcd-1.c: Remove dg-skip-if SPE.
	* gcc.target/powerpc/bcd-2.c: Same.
	* gcc.target/powerpc/bcd-3.c: Same.
	* gcc.target/powerpc/direct-move-double1.c: Same.
	* gcc.target/powerpc/direct-move-double2.c: Same.
	* gcc.target/powerpc/direct-move-float1.c: Same.
	* gcc.target/powerpc/direct-move-float2.c: Same.
	* gcc.target/powerpc/direct-move-float3.c: Same.
	* gcc.target/powerpc/direct-move-long1.c: Same.
	* gcc.target/powerpc/direct-move-long2.c: Same.
	* gcc.target/powerpc/direct-move-vint1.c: Same.
	* gcc.target/powerpc/direct-move-vint2.c: Same.
	* gcc.target/powerpc/extend-divide-1.c: Same.
	* gcc.target/powerpc/extend-divide-2.c: Same.
	* gcc.target/powerpc/pack01.c: Same.
	* gcc.target/powerpc/pack02.c: Same.
	* gcc.target/powerpc/pack03.c: Same.
	* gcc.target/powerpc/pr52457.c: Same.
	* gcc.target/powerpc/pr88845.c: Same.
	* gcc.target/powerpc/quad-atomic.c: Same.
	* gcc.target/powerpc/recip-6.c: Same.
	* gcc.target/powerpc/recip-7.c: Same.
2020-06-30 21:56:38 -04:00
David Edelsohn
34c8c2139f testsuite: p8vector-int128 require int128 not lp64.
Change testsuite requirements from lp64 to int128 support.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/p8vector-int128-1.c: Require int128 not lp64.
	* gcc.target/powerpc/p8vector-int128-2.c: Same.
2020-06-30 20:38:32 -04:00
David Edelsohn
f58cc0132d testsuite: Remove restrictions on VSX tests.
Some of the testcases in gcc.target/powerpc have unnecessarily strict
requirements and run correctly on more powerpc targets.  This patch
removes the restrictions and adds appropriate HW requirements.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/pr90763.c: Adjust requirements.
	* gcc.target/powerpc/vsx-vector-1.c: Same.
	* gcc.target/powerpc/vsx-vector-2.c: Same.
	* gcc.target/powerpc/vsx-vector-3.c: Same.
	* gcc.target/powerpc/vsx-vector-4.c: Same.
	* gcc.target/powerpc/vsx-vector-5.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p7.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p8.c: Same.
	* gcc.target/powerpc/vsx-vector-6.p9.c: Same.
	* gcc.target/powerpc/vsx-vector-abss.c: Same.
	* gcc.target/powerpc/vsx-vectorize-1.c: Same.
	* gcc.target/powerpc/vsx-vectorize-2.c: Same.
	* gcc.target/powerpc/vsx-vectorize-3.c: Same.
	* gcc.target/powerpc/vsx-vectorize-4.c: Same.
	* gcc.target/powerpc/vsx-vectorize-5.c: Same.
	* gcc.target/powerpc/vsx-vectorize-6.c: Same.
	* gcc.target/powerpc/vsx-vectorize-7.c: Same.
	* gcc.target/powerpc/vsx-vectorize-8.c: Same.
2020-06-30 20:27:48 -04:00
David Edelsohn
1aa696678e testsuite: remove SPE tests.
SPE support was removed from the "rs6000" port.  This patch removes some
left-over SPE-specific testcases from the gcc.target/powerpc directory.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/ppc-spe.c: Delete.
	* gcc.target/powerpc/ppc-spe64-1.c: Delete.
	* gcc.target/powerpc/pr60102.c: Delete.
	* gcc.target/powerpc/pr60158.c: Delete.
	* gcc.target/powerpc/pr60735.c: Delete.
	* gcc.target/powerpc/pr78458.c: Delete.
	* gcc.target/powerpc/pr80343.c: Delete.
	* gcc.target/powerpc/spe-evmerge.c: Delete.
	* gcc.target/powerpc/spe-small-data-1.c: Delete.
	* gcc.target/powerpc/spe-small-data-2.c: Delete.
	* gcc.target/powerpc/spe-unwind-1.c: Delete.
	* gcc.target/powerpc/spe-vector-memcpy.c: Delete.
	* gcc.target/powerpc/spe-vector-memset.c: Delete.
	* gcc.target/powerpc/spe1.c: Delete.
2020-06-30 20:19:23 -04:00
GCC Administrator
46fbb6c682 Daily bump. 2020-07-01 00:16:26 +00:00
David Edelsohn
c415fbb097 testsuite: change gcc.target/powerpc builtins lp64 to int128 requirement.
Some of the builtins* tests check for lp64 as a proxy for int128 support.
This patch changes the requirements to int128.  It also removes
some redundant requirements from revb.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/builtins-2-p9-runnable.c: lp64 to int128.
	* gcc.target/powerpc/builtins-6-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-6-runnable.c: Same.
	* gcc.target/powerpc/builtins-revb-runnable.c: Same.
2020-06-30 18:39:09 -04:00
Harald Anlauf
267f84c603 PR fortran/88379 - ICE with allocatable coarray, class and associate
Catch NULL pointer dereference for ASSOCIATE on allocatable coarray variable.

gcc/fortran/
	PR fortran/88379
	* resolve.c (resolve_assoc_var): Avoid NULL pointer dereference.
2020-06-30 23:36:56 +02:00
Richard Sandiford
31427b974e aarch64: Treat GNU and Advanced SIMD vectors as distinct [PR92789, PR95726]
PR95726 is about template look-up for things like:

    foo<float vecf __attribute__((vector_size(16)))>
    foo<float32x4_t>

The immediate cause of the problem is that the hash function usually
returns different hashes for these types, yet the equality function
thinks they are equal.  This then raises the question of how the types
are supposed to be treated.

I think the answer is that the GNU vector type should be treated as
distinct from float32x4_t, not least because the two types mangle
differently.  However, each type should implicitly convert to the other.

This would mean that, as far as the PR is concerned, the hashing
function is right to (sometimes) treat the types differently and
the equality function is wrong to treat them as the same.

The most obvious way to enforce the type difference is to use a
target-specific type attribute.  That on its own is enough to fix
the PR.  The difficulty is deciding whether the knock-on effects
are acceptable.

One obvious effect is that GCC then rejects:

    typedef float vecf __attribute__((vector_size(16)));
    vecf x;
    float32x4_t &z = x;

on the basis that the types are no longer reference-compatible.
I think that's again the correct behaviour, and consistent with
current Clang.

A trickier question is whether:

    vecf x;
    float32x4_t y;
    … c ? x : y …

should be valid, and if so, what its type should be [PR92789].
As explained in the comment in the testcase, GCC and Clang both
accepted this, but GCC chose the “then” type while Clang chose
the “else” type.  This can lead to different mangling for (probably
artificial) corner cases, as seen for “sel1” and “sel2” in the
testcase.

Adding the attribute makes GCC reject the conditional expression
as ambiguous.  I think that too is the correct behaviour, for the
reasons described in the testcase.  However, it does seem to have
the potential to break existing code.

It looks like aarch64_comp_type_attributes is missing cases for
the SVE attributes, but I'll handle that in a separate patch.

2020-06-30  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR target/92789
	PR target/95726
	* config/aarch64/aarch64.c (aarch64_attribute_table): Add
	"Advanced SIMD type".
	(aarch64_comp_type_attributes): Check that the "Advanced SIMD type"
	attributes are equal.
	* config/aarch64/aarch64-builtins.c: Include stringpool.h and
	attribs.h.
	(aarch64_mangle_builtin_vector_type): Use the mangling recorded
	in the "Advanced SIMD type" attribute.
	(aarch64_init_simd_builtin_types): Add an "Advanced SIMD type"
	attribute to each Advanced SIMD type, using the mangled type
	as the attribute's single argument.

gcc/testsuite/
	PR target/92789
	PR target/95726
	* g++.target/aarch64/pr95726.C: New test.
2020-06-30 21:40:30 +01:00
David Edelsohn
67ef8cfc1c rs6000: Fix gcc.target/powerpc testsuite target requirements.
gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.target/powerpc/builtins-1-p9-runnable.c: Fix target requirements.
	* gcc.target/powerpc/builtins-1.c: Same.
	* gcc.target/powerpc/builtins-2-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-2.c: Same.
	* gcc.target/powerpc/builtins-3-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-3-p9.c: Same.
	* gcc.target/powerpc/builtins-3-runnable-p8.c: Same.
	* gcc.target/powerpc/builtins-3.c: Same.
	* gcc.target/powerpc/builtins-4-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-4.c: Same.
	* gcc.target/powerpc/builtins-5-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-5.c: Same.
	* gcc.target/powerpc/builtins-6-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-6-runnable.c: Same.
	* gcc.target/powerpc/builtins-7-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-7-runnable.c: Same.
	* gcc.target/powerpc/builtins-8-p9-runnable.c: Same.
	* gcc.target/powerpc/builtins-8-runnable.c: Same.
	* gcc.target/powerpc/cpu-builtin-1.c: Same.
	* gcc.target/powerpc/float128-fma1.c: Same.
	* gcc.target/powerpc/float128-hw.c: Same.
	* gcc.target/powerpc/float128-hw10.c: Same.
	* gcc.target/powerpc/float128-hw11.c: Same.
	* gcc.target/powerpc/float128-hw2.c: Same.
	* gcc.target/powerpc/float128-hw3.c: Same.
	* gcc.target/powerpc/float128-hw4.c: Same.
	* gcc.target/powerpc/float128-hw5.c: Same.
	* gcc.target/powerpc/float128-hw6.c: Same.
	* gcc.target/powerpc/float128-hw7.c: Same.
	* gcc.target/powerpc/float128-hw8.c: Same.
	* gcc.target/powerpc/float128-hw9.c: Same.
	* gcc.target/powerpc/float128-minmax.c: Same.
	* gcc.target/powerpc/float128-odd.c: Same.
	* gcc.target/powerpc/float128-sqrt1.c: Same.
2020-06-30 14:52:01 -04:00
Nathan Sidwell
cc3ae9f5c4 c++: Tweak function cloning names
On the modules branch I need to expose an intermediate step of the
function cloning, but before that it'd be nice to rationalize the
names somewhat, now that we also use that API for copying the equality
operator.  Jason's recent patch caused me some pain by altering the
same code.  I can only blame myself for not pushing some bits sooner.
Anyway, this patch makes the newly renamed copy_fndecl_with_name
static, and adds a wrapper copy_operator_fn, that takes an operator
code.  The cdtor cloning functions are renamed to explicitly note they
expect cdtors.  A followup patch will move some of the logic from
copy_fndecl_with_name to build_cdtor_clones.

gcc/cp/
	* cp-tree.h (copy_fndecl_with_name): Rename to ...
	(copy_operatorn_fn): ... this.  Change arg type.
	(clone_function_decl): Rename to ...
	(clone_cdtor): ... this.
	* class.c (copy_fndecl_with_name): Make static.
	(copy_operator_fn): New wrapper.
	(build_clones): Rename to ...
	(build_cdtor_clones): ... this.
	(clone_function_decl): Rename to ...
	(clone_cdtor): ... this.  Adjust build_clones calls.
	(clone_constructors_and_destructors): Adjust clone_function_decl
	calls.
	* method.c (implicitly_declare_fn): Adjust copy_fndecl_with_name
	call.
	(lazily_declare_fn): Adjust clone_function_decl call.
	* pt.c (tsubst_function_decl): Likewise.
	(instantiate_template_1): Likewise.

libcc1/
	* libcp1plugin.cc (plugin_build_decl): Adjust clone_function_decl
	call.
2020-06-30 10:50:05 -07:00
David Edelsohn
fe03543bfb testsuite: expect additional warning in analyzer/pr93993.f90
The recent changes to warnings elicit an additional warning in
analyzer/pr93993.f90.  This patch updates the testcase to expect the warning.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* gfortran.dg/analyzer/pr93993.f90: Expect leak tm warning.
2020-06-30 13:44:26 -04:00
Thomas Schwinge
01dd58659f [testsuite] Adjust 'scoff' for HSA offloading
Fix-up for commit efc16503ca "handle dumpbase in
offloading, adjust testsuite".

	gcc/testsuite/
	* lib/scanoffload.exp (scoff) <offload_targets>: Skip HSA.
2020-06-30 17:48:36 +02:00
Thomas Schwinge
8a8efad098 [testsuite] Replace fragile 'scan-assembler' with 'scan-offload-rtl' in 'libgomp.oacc-c-c++-common/pr85381*.c'
These test cases use directives similar to:

    /* { dg-additional-options "-save-temps" } */

    /* { dg-final { scan-assembler-times "bar.sync" 2 } } */

This expects to scan the PTX offloading compilation assembler code (not host
code!), expecting that nvptx offloading code assembly is produced after the
host code, and thus overwrites the latter file.  (Yes, that's certainly
ugly/fragile...)

..., and this broke with recent commit 1dedc12d18
"revamp dump and aux output names" plus fix-up commit commit
efc16503ca "handle dumpbase in offloading, adjust
testsuite" (short summary: file names changed), so let's finally make that
robust.

	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/pr85381-2.c: Replace fragile
	'scan-assembler' with 'scan-offload-rtl'.
	* testsuite/libgomp.oacc-c-c++-common/pr85381-3.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/pr85381-4.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/pr85381-5.c: Likewise.
	* testsuite/libgomp.oacc-c-c++-common/pr85381.c: Likewise.
2020-06-30 17:48:36 +02:00
Thomas Schwinge
aff43ac0ae Mark up unreachable OpenACC 'attach' code path
... introduced in commit 8e7e71ff24 (r279625)
"OpenACC 2.6 deep copy: libgomp parts".

	libgomp/
	* target.c (gomp_map_vars_existing): Assert 'kind !=
	GOMP_MAP_ATTACH'.
	(gomp_map_vars_internal): Clean up.
2020-06-30 17:48:36 +02:00
Martin Liska
e2c17dcb12
gcc-changelog: support older GitPython releases.
contrib/ChangeLog:

	* gcc-changelog/git_repository.py: Support older releases of
	GitPython when renamed_file was named renamed.
2020-06-30 17:45:36 +02:00
Iain Sandoe
eef63aacb2 coroutines: Fix a diagnostic trailing space warning.
A recently add diagnostic has a trailing space.
Fixed thus.

gcc/cp/ChangeLog:

	* coroutines.cc (morph_fn_to_coro): Remove trailing
	space in a diagnostic.
2020-06-30 16:32:39 +01:00
Christophe Lyon
3c3b422487 arm: Warn if IRQ handler is not compiled with -mgeneral-regs-only [PR target/94743]
The interrupt attribute does not guarantee that the FP registers are
saved, which can result in problems difficult to debug.

Saving the FP registers and status registers can be a large penalty,
so it's probably not desirable to do that all the time.

If the handler calls other functions, we'd likely need to save all of
them, for lack of knowledge of which registers they actually clobber.

This is even more obscure for the end-user when the compiler inserts
calls to helper functions such as memcpy (some multilibs do use FP
registers to speed it up).

In the PR, we discussed adding routines in libgcc to save the FP
context and saving only locally-clobbered FP registers, but this seems
to be too much work for the purpose, given that in general such
handlers try to avoid this kind of penalty.
I suspect we would also want new attributes to instruct the compiler
that saving the FP context is not needed.

In the mean time, emit a warning to suggest re-compiling with
-mgeneral-regs-only. Note that this can lead to errors if the code
uses floating-point and -mfloat-abi=hard, eg:
argument of type 'double' not permitted with -mgeneral-regs-only

This can be troublesome for the user, but at least this would make
him aware of the latent issue.

The patch adds several testcases:

- pr94734-1-hard.c checks that a warning is emitted when using
  -mfloat-abi=hard. Function IRQ_HDLR_Test can make implicit calls to
  runtime floating-point routines (or direct use of FP instructions),
  IRQ_HDLR_Test2 doesn't. We emit a warning in both cases, though.

- pr94734-1-softfp.c: same as above wih -mfloat-abi=softfp.

- pr94734-1-soft.c checks that no warning is emitted when using
  -mfloat-abi=soft when the same code as above.

- pr94734-2.c checks that no warning is emitted when using
  -mgeneral-regs-only.

- pr94734-3.c checks that no warning is emitted when using
  -mgeneral-regs-only even using float-point data.

2020-06-30  Christophe Lyon  <christophe.lyon@linaro.org>

	PR target/94743
	gcc/
	* config/arm/arm.c (arm_handle_isr_attribute): Warn if
	-mgeneral-regs-only is not used.

	gcc/testsuite/
	* gcc.misc-tests/arm-isr.c: Add -mgeneral-regs-only.
	* gcc.target/arm/empty_fiq_handler.c: Add -mgeneral-regs-only.
	* gcc.target/arm/interrupt-1.c: Add -mgeneral-regs-only.
	* gcc.target/arm/interrupt-2.c: Add -mgeneral-regs-only.
	* gcc.target/arm/pr70830.c: Add -mgeneral-regs-only.
	* gcc.target/arm/pr94743-1-hard.c: New test.
	* gcc.target/arm/pr94743-1-soft.c: New test.
	* gcc.target/arm/pr94743-1-softfp.c: New test.
	* gcc.target/arm/pr94743-2.c: New test.
	* gcc.target/arm/pr94743-3.c: New test.
2020-06-30 14:20:28 +00:00
Yang Yang
33d114f570 tree-optimization/95855 - Add checks to avoid spoiling if-conversion if
Add some checks in pass_splits_paths, so that pass_split_paths can
recognize the missed if-conversion opportunity and do not duplicate the
corresponding block.

2020-06-30 Yang Yang <yangyang305@huawei.com>

gcc/ChangeLog:

	PR tree-optimization/95855
	* gimple-ssa-split-paths.c (is_feasible_trace): Add extra
	checks to recognize a missed if-conversion opportunity when
	judging whether to duplicate a block.

gcc/testsuite/ChangeLog

	PR tree-optimization/95855
	* gcc.dg/tree-ssa/split-path-12.c: New testcase.
2020-06-30 15:54:07 +02:00
David Edelsohn
7d503e3299 testsuite: fix constexpr-is_literal.C deprecated c++17 and above.
std::is_literal_type is deprecated in C++17 and above.

This was introduced in c++11, but the testsuite list of standards now only
includes c++98 and c++14.  This patch limits the test to c++14_only to
prevent deprecation warnings.

gcc/testsuite/ChangeLog

2020-06-30  David Edelsohn  <dje.gcc@gmail.com>

	* g++.dg/cpp0x/constexpr-is_literal.C: Limit test to -std=c++14.
2020-06-30 08:58:27 -04:00
Thomas Koenig
5958b926dc Use CHARACTER(kind) string for calculating the type hash.
This regression came about because of a change in the way
types are displayed in error messages.  The character
representation is also used to calculate the hashes for
our types, so this patch restores the old behavior if
we are indeed calculating a hash.

The test case also checks for the specific hash value because
changing that would be an ABI change, which we should not
be doing unintentionally.

gcc/fortran/ChangeLog:

2020-06-30  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR fortran/95355
	* gfortran.h (gfc_typename): Add optional argument for_hash.
	* misc.c (gfc_typename): When for_hash is true, just retur
	  CHARACTER(kind).
	* class.c (gfc_intrinsic_hash_value): Call gfc_typename with
	  for_hash = true.
2020-06-30 13:10:20 +02:00
Jakub Jelinek
8dc933c12f c-family: Avoid ICEs on calls to internal functions [PR95963]
The following testcase ICEs since recent Martin's -Wnonnull changes,
we see a CALL_EXPR and ICE because CALL_EXPR_FN is NULL, which is
valid for internal function calls.  Internal function calls don't have a
function type, and will never have format_arg attribute on them nor will
serve as the i18n routines -Wformat cares about.

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

	PR c++/95963
	* c-common.c (check_function_arguments_recurse): Don't crash on
	calls to internal functions.

	* g++.dg/cpp1z/launder9.C: New test.
2020-06-30 11:42:54 +02:00
GCC Administrator
458f12eda1 Daily bump. 2020-06-30 09:02:21 +00:00
Martin Liska
b05c4c2c5d
gcc-changelog: support 'This revert commit' prefix.
contrib/ChangeLog:

	* gcc-changelog/git_check_commit.py: Print revision
	of original_info.
	* gcc-changelog/git_commit.py: Support Revert commits.
2020-06-30 10:56:06 +02:00
Martin Liska
de4676c923
gcc-changelog: come up with GitInfo wrapper.
contrib/ChangeLog:

	* gcc-changelog/git_check_commit.py: Use GitInfo
	* gcc-changelog/git_commit.py: Add GitInfo class.
	* gcc-changelog/git_email.py: Use GitInfo class.
	* gcc-changelog/git_repository.py: Likewise.
2020-06-30 10:56:05 +02:00
Iain Sandoe
9252a208f4 coroutines: Collect the function body rewrite code.
The standard describes a rewrite of the body of the user-authored
function (which wraps it in a try-catch block and provides the
initial and final suspend expressions).  The exact arrangement of
this was still in flux right up until the DIS and as a consequence
was a bit of a moving target.

The net result was a fragmented implementation of the parts of
the rewrite which is now impeding progress in fixing other issues.

This patch collates the rewrite action into a single function and
carries this out earlier.

gcc/cp/ChangeLog:

	* coroutines.cc (expand_one_await_expression): Remove
	code dealing with initial suspend.
	(build_actor_fn): Remove code special-casing initial
	and final suspend. Handle the final suspend and marking
	of the coroutine as done.
	(coro_rewrite_function_body): New.
	(bind_expr_find_in_subtree): Remove.
	(coro_body_contains_bind_expr_p): Remove.
	(morph_fn_to_coro): Split the rewrite of the original
	function into coro_rewrite_function_body and call it.
2020-06-30 08:22:05 +01:00
Joseph Myers
3b7272a2f7 Update gcc sv.po.
* sv.po: Update.
2020-06-29 23:57:16 +00:00
Ville Voutilainen
2635f9e508 Revert "Add a __nonnnull__ attribute to std::string's _CharT* constructor"
This reverts commit b26fd416fb.
2020-06-30 01:59:34 +03:00
Ian Lance Taylor
9bca676cc7 compiler: remove some erroneous code that was never run
The code accidentally called Type::type_descriptor rather than the
do_type_descriptor method.  Calling Type::type_descriptor with a second
argument of NULL would always crash.  Since that never happened,
it revealed that this code was never actually executed.

Fixes PR go/95970

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/240477
2020-06-29 14:29:39 -07:00
Harald Anlauf
583812c2e2 PR fortran/95978 - ICE in gfc_match_data, at fortran/decl.c:731
Catch NULL pointer dereference on invalid DATA statement.

gcc/fortran/
	PR fortran/95978
	* decl.c (gfc_match_data): Avoid NULL pointer dereference.
2020-06-29 23:20:53 +02:00
Thomas Koenig
95cdcf701d Do not generate recursion check for compiler-generated procedures.
This one-line fix removes a check for recursion for procedures
which are compiler-generated, such as finalizers or deallocation.
These need to be recursive, even if the user code should not be.

gcc/fortran/ChangeLog:

	PR fortran/95743
	* trans-decl.c (gfc_generate_function_code): Do not generate
	recursion check for compiler-generated procedures.
2020-06-29 23:11:30 +02:00
Segher Boessenkool
ace60939fd rs6000: Documentation updates for "future" rename
2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>

	* doc/extend.texi: Change references to "future architecture" to
	"ISA 3.1", "-mcpu=future" to "-mcpu=power10", and remove vaguer
	references to "future" (because the future is now).
2020-06-29 20:19:01 +00:00
David Edelsohn
d161c4b30e testsuite: Make char4-subscript.f90 regex endian neutral.
The testcase tests for little endian results.  This patch updates the
regex to accept either endianness.

gcc/testsuite/ChangeLog

2020-06-29  David Edelsohn  <dje.gcc@gmail.com>

	* gfortran.dg/char4-subscript.f90: Simplify regex.
	Accept big endian or little endian output.
2020-06-29 16:14:35 -04:00
Segher Boessenkool
4e06c4a344 rs6000: Rename isa attribute "fut" to "p10"
I missed this when grepping for "future".

2020-06-29  Segher Boessenkool  <segher@kernel.crashing.org>

	* config/rs6000/rs6000.md (isa): Rename "fut" to "p10".
2020-06-29 20:11:12 +00:00
Roger Sayle
346bce6fe0 middle-end: Optimize (A&C)^(B&C) to (A^B)&C in simplify_rtx (take 3).
2020-06-29  Roger Sayle  <roger@nextmovesoftware.com>
gcc/ChangeLog:
	* simplify-rtx.c (simplify_distributive_operation): New function
	to un-distribute a binary operation of two binary operations.
	(X & C) ^ (Y & C) to (X ^ Y) & C, when C is simple (i.e. a constant).
	(simplify_binary_operation_1) <IOR, XOR, AND>: Call it from here
	when appropriate.
	(test_scalar_int_ops): New function for unit self-testing
	scalar integer transformations in simplify-rtx.c.
	(test_scalar_ops): Call test_scalar_int_ops for each integer mode.
	(simplify_rtx_c_tests): Call test_scalar_ops.
2020-06-29 17:37:51 +01:00
Marek Polacek
54980635c5 c++: Check uniqueness of concepts/variable templates [PR94553]
This patch wraps up PR94553.  Variable template names have no C
compatibility implications so they should be unique in their
declarative region.  It occurred to me that this applies to concepts
as well.  This is not specified in [basic.scope.declarative]/4.2
but that seems like a bug in the standard.

I couldn't use variable_template_p because that uses PRIMARY_TEMPLATE_P
which uses DECL_PRIMARY_TEMPLATE and that might not have been set up yet
(push_template_decl hasn't yet been called).  PRIMARY_TEMPLATE_P is
important to distinguish between a variable template and a variable in a
function template.  But I think we don't have to worry about that in
duplicate_decls: a template declaration cannot appear at block scope,
and additional checks in duplicate_decls suggest that it won't ever
see a TEMPLATE_DECL for a variable in a function template.  So
checking that the DECL_TEMPLATE_RESULT is a VAR_DECL seems to be fine.
I could have added a default argument to variable_template_p too to
avoid checking PRIMARY_TEMPLATE_P but it didn't seem worth the effort.

gcc/cp/ChangeLog:

	PR c++/94553
	* decl.c (duplicate_decls): Make sure a concept or a variable
	template is unique in its declarative region.

gcc/testsuite/ChangeLog:

	PR c++/94553
	* g++.dg/cpp1y/pr68578.C: Adjust dg-error.
	* g++.dg/cpp1y/var-templ66.C: New test.
	* g++.dg/cpp2a/concepts-redecl1.C: New test.
2020-06-29 11:01:58 -04:00
Marek Polacek
b1005f553d c++: Fix CTAD for aggregates in template [PR95568]
95568 complains that CTAD for aggregates doesn't work within
requires-clause and it turned out that it doesn't work when we try
the deduction in a template.  The reason is that maybe_aggr_guide
creates a guide that can look like this

  template<class T> X(decltype (X<T>::x))-> X<T>

where the parameter is a decltype, which is a non-deduced context.  So
the subsequent build_new_function_call fails because unify_one_argument
can't deduce anything from it ([temp.deduct.type]: "If a template
parameter is used only in non-deduced contexts and is not explicitly
specified, template argument deduction fails.")

Those decltypes come from finish_decltype_type.  We can just use
TREE_TYPE instead.  I pondered using unlowered_expr_type, but that
didn't make any difference for the FIELD_DECLs I saw in
class-deduction-aggr6.C.

gcc/cp/ChangeLog:

	PR c++/95568
	* pt.c (collect_ctor_idx_types): Use TREE_TYPE.

gcc/testsuite/ChangeLog:

	PR c++/95568
	* g++.dg/cpp2a/class-deduction-aggr5.C: New test.
	* g++.dg/cpp2a/class-deduction-aggr6.C: New test.
2020-06-29 10:59:40 -04:00