Commit Graph

176592 Commits

Author SHA1 Message Date
Aldy Hernandez
f119b4e631 More refactoring of tree-vrp.c.
New class live_names to maintain the set of SSA names live.

Fix whitespace in vrp_insert.

Move a few more methods related to ASSERT_EXPR insertion into vrp_insert.
2020-05-17 11:14:39 +02:00
Aldy Hernandez
65d44272bd Move array bounds checking out of vrp_prop and into its own class. 2020-05-17 11:05:30 +02:00
GCC Administrator
add058cf93 Daily bump. 2020-05-17 00:16:17 +00:00
Iain Sandoe
5ef067eb14 coroutines: Implicitly movable objects should use move CTORs for co_return.
This is a case where the standard contains conflicting information.
after discussion between implementators, the accepted intent is of
[class.copy.elision].  This amends the handling of co_return statements
to follow that.

gcc/cp/ChangeLog:

2020-05-16  Iain Sandoe  <iain@sandoe.co.uk>

	* coroutines.cc (finish_co_return_stmt): Implement rules
	from [class.copy.elision] /3.

gcc/testsuite/ChangeLog:

2020-05-16  Iain Sandoe  <iain@sandoe.co.uk>

	* g++.dg/coroutines/co-return-syntax-10-movable.C: New test.
2020-05-16 19:59:39 +01:00
Jeff Law
f5b461d453 Consolidate a couple peepholes and improve peepholes that combine stack allocations with stack stores.
* config/h8300/h8300.md (SFI iterator): New iterator for
	SFmode and SImode.
	* config/h8300/peepholes.md (memory comparison): Use mode
	iterator to consolidate 3 patterns into one.
	(stack allocation and stack store): Handle SFmode.  Handle
	8 byte allocations.
2020-05-16 00:50:53 -04:00
GCC Administrator
53b4d52f11 Daily bump. 2020-05-16 00:16:18 +00:00
Patrick Palka
115232b778 c++: decltype of invalid non-dependent expr [PR57943]
We sometimes fail to reject an invalid non-dependent operand to decltype
when inside a template, because finish_decltype_type resolves the
decltype to the TREE_TYPE of the operand before we ever instantiate and
fully process the operand.  Fix this by adding a call to
instantiate_non_dependent_expr_sfinae in finish_decltype_type.

gcc/cp/ChangeLog:

	PR c++/57943
	* semantics.c (finish_decltype_type): Call
	instantiate_non_dependent_expr_sfinae on the expression.

gcc/testsuite/ChangeLog:

	PR c++/57943
	* g++.dg/cpp0x/decltype76.C: New test.
2020-05-15 18:51:11 -04:00
Joseph Myers
9d495e7250 Update cpplib sv.po.
* sv.po: Update.
2020-05-15 22:40:40 +00:00
Ian Lance Taylor
e478cacb62 libgo: only build syscall test with -static if it works
Test whether -static works, and use it if possible.

This time for sure.

For PR go/95061

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234024
2020-05-15 15:33:20 -07:00
Jason Merrill
29f0e90d99 c++: Enable coroutines with -std=c++20.
Now that GCC 10 is out it seems time.  People can still choose to disable
coroutines with -fno-coroutines.

This also switches the coroutines testsuite to run in C++20 mode.  The
change to coro.h is only necessary for co-await-11-forwarding.C; we could
alternatively #include <utility> just in that file.

gcc/c-family/ChangeLog
2020-05-15  Jason Merrill  <jason@redhat.com>

	* c-opts.c (set_std_cxx20): Set flag_coroutines.

gcc/testsuite/ChangeLog
2020-05-15  Jason Merrill  <jason@redhat.com>

	* g++.dg/coroutines/coro.h: Always #include <utility>.
	* g++.dg/coroutines/coroutines.exp (DEFAULT_COROFLAGS): Use
	-std=c++20.
2020-05-15 17:59:49 -04:00
Jason Merrill
16485ea97b analyzer: Remove stray semicolon. 2020-05-15 17:36:55 -04:00
Segher Boessenkool
fe83bfb146 rs6000: BU_FUTURE_MISC_2 requires powerpc64
BU_FUTURE_MISC_2 is (currently) only used for instructions that require
64-bit registers.

2020-05-15  Segher Boessenkool  <segher@kernel.crashing.org>

	* config/rs6000/rs6000-builtin.def (BU_FUTURE_MISC_2): Also require
	RS6000_BTM_POWERPC64.
2020-05-15 20:02:49 +00:00
Segher Boessenkool
b595f14f8f rs6000/testsuite: Use the int128 selector where needed
Tests that use the __int128 type need to use the int128 selector.

2020-05-15  Segher Boessenkool  <segher@kernel.crashing.org>

gcc/testsuite/
	* gcc.target/powerpc/vec-gnb-0.c: Use int128 effective target.
	* gcc.target/powerpc/vec-gnb-1.c: Ditto.
	* gcc.target/powerpc/vec-gnb-2.c: Ditto.
	* gcc.target/powerpc/vec-ternarylogic-8.c: Ditto.
	* gcc.target/powerpc/vec-ternarylogic-9.c: Ditto.
	* gcc.target/powerpc/vec-ternarylogic-10.c: Ditto.
2020-05-15 20:01:47 +00:00
Segher Boessenkool
7df6b2c053 rs6000/testsuite: Use lp64 in cnttzdm-0.c
2020-05-15  Segher Boessenkool  <segher@kernel.crashing.org>

gcc/testsuite/
	* gcc.target/powerpc/cnttzdm-0.c: Use lp64.
2020-05-15 20:00:34 +00:00
Segher Boessenkool
918f168266 rs6000/testsuite: Don't use powerpc64 effective target
The powerpc64 effective target unfortunately does not mean the target
has 64-bit instructions enabled (i.e., -mpowerpc64): instead, it means
that the assembler supports it.

Let's use the lp64 effective target instead for these tests.

2020-05-15  Segher Boessenkool  <segher@kernel.crashing.org>

gcc/testsuite/
	* gcc.target/powerpc/cntlzdm-0.c: Use lp64 instead of powerpc64.
	* gcc.target/powerpc/cntlzdm-1.c: Ditto.
	* gcc.target/powerpc/cnttzdm-1.c: Ditto.
	* gcc.target/powerpc/pdep-0.c: Ditto.
	* gcc.target/powerpc/pdep-1.c: Ditto.
	* gcc.target/powerpc/pextd-0.c: Ditto.
	* gcc.target/powerpc/pextd-1.c: Ditto.
2020-05-15 19:57:25 +00:00
Segher Boessenkool
b8079176c9 rs6000/testsuite: Use -mdejagnu-cpu= instead of -mcpu=
A bunch of new cases snuck in.

2020-05-15  Segher Boessenkool  <segher@kernel.crashing.org>

gcc/testsuite/
	* gcc.target/powerpc/pdep-0.c: Change -mcpu= to -mdejagnu-cpu=.
	* gcc.target/powerpc/pdep-1.c: Ditto.
	* gcc.target/powerpc/pextd-0.c: Ditto.
	* gcc.target/powerpc/pextd-1.c: Ditto.
	* gcc.target/powerpc/pr90763.c: Ditto.
	* gcc.target/powerpc/pr91275.c: Ditto.
	* gcc.target/powerpc/pr92796.c: Ditto.
	* gcc.target/powerpc/pr93658.c: Ditto.
	* gcc.target/powerpc/pr93800.c: Ditto.
	* gcc.target/powerpc/setbceq.c: Ditto.
	* gcc.target/powerpc/setbcge.c: Ditto.
	* gcc.target/powerpc/setbcgt.c: Ditto.
	* gcc.target/powerpc/setbcle.c: Ditto.
	* gcc.target/powerpc/setbclt.c: Ditto.
	* gcc.target/powerpc/setbcne.c: Ditto.
	* gcc.target/powerpc/setnbceq.c: Ditto.
	* gcc.target/powerpc/setnbcge.c: Ditto.
	* gcc.target/powerpc/setnbcgt.c: Ditto.
	* gcc.target/powerpc/setnbcle.c: Ditto.
	* gcc.target/powerpc/setnbclt.c: Ditto.
	* gcc.target/powerpc/setnbcne.c: Ditto.
	* gcc.target/powerpc/xxgenpc-runnable.c: Ditto.
2020-05-15 19:55:30 +00:00
Patrick Palka
289fbbe75f c++: Revert unnecessary parts of fix for [PR90996]
The process_init_constructor_array part of my PR90996 patch turns out to
be neither necessary nor sufficient to make the pr90996.C testcase work,
and I wasn't able to come up with a testcase that demonstrates this part
is ever necessary.

gcc/cp/ChangeLog:

	Revert:

	2020-04-07  Patrick Palka  <ppalka@redhat.com>

	PR c++/90996
	* typeck2.c (process_init_constructor_array): Propagate
	CONSTRUCTOR_PLACEHOLDER_BOUNDARY up from each element
	initializer to the array initializer.

gcc/testsuite/ChangeLog:

	PR c++/90996
	* g++.dg/cpp1y/pr90996.C: Turn into execution test to verify
	that each PLACEHOLDER_EXPR gets correctly resolved.
2020-05-15 14:50:17 -04:00
Jason Merrill
cda6396a1b PR c++/93286 - ICE with __is_constructible and variadic template.
My GCC 10 patch for 93286 fixed the missing piece in tsubst's handling of
lists vs. that in tsubst_copy_and_build, but it would be better to share the
code between them.

gcc/cp/ChangeLog
2020-05-15  Jason Merrill  <jason@redhat.com>

	PR c++/93286 - ICE with __is_constructible and variadic template.
	* pt.c (tsubst_tree_list): New.
	(tsubst, tsubst_copy_and_build): Use it.
	* decl2.c (is_late_template_attribute): Handle error_mark_node args.
2020-05-15 14:06:57 -04:00
H.J. Lu
4c1a5d8b71 x86: Also check if -fcf-protection works
When defaulting CET run-time support to auto, check if -fcf-protection
works.  Even if the stage1 GCC doesn't support -fcf-protection, since
the final GCC does, CET run-time support will be enabled by default if
binutils support CET.

config/

	PR bootstrap/95147
	* cet.m4 (GCC_CET_FLAGS): Also check if -fcf-protection works
	when defaulting to auto.

libatomic/

	PR bootstrap/95147
	* configure: Regenerated.

libbacktrace/

	PR bootstrap/95147
	* configure: Regenerated.

libgcc/

	PR bootstrap/95147
	* configure: Regenerated.

libgfortran/

	PR bootstrap/95147
	* configure: Regenerated.

libgomp/

	PR bootstrap/95147
	* configure: Regenerated.

libitm/

	PR bootstrap/95147
	* configure: Regenerated.

libobjc/

	PR bootstrap/95147
	* configure: Regenerated.

libphobos/

	PR bootstrap/95147
	* configure: Regenerated.

libquadmath/

	PR bootstrap/95147
	* configure: Regenerated.

libsanitizer/

	PR bootstrap/95147
	* configure: Regenerated.

libssp/

	PR bootstrap/95147
	* configure: Regenerated.

libstdc++-v3/

	PR bootstrap/95147
	* configure: Regenerated.

libvtv/

	PR bootstrap/95147
	* configure: Regenerated.

zlib/

	PR bootstrap/95147
	* configure: Regenerated.
2020-05-15 09:07:17 -07:00
Tobias Burnus
0ec52417fd [Fortran] OpenMP 5 – permit more sharing clauses for SIMD (PR94690)
gcc/fortran/
	PR fortran/94690
	* openmp.c (resolve_omp_do): Permit more clauses for SIMD
	iteration variables.

gcc/testsuite/
	PR fortran/94690
	* gfortran.dg/gomp/openmp-simd-4.f90: New test.
2020-05-15 16:40:34 +02:00
Uros Bizjak
75514d157e i386: Allow SI, DI and TImode pushes from XMM registers
Also change XMM register constraint from "x" to "v" in FP push insns.

gcc/ChangeLog:

2020-05-15  Uroš Bizjak  <ubizjak@gmail.com>

	* config/i386/i386.md (SWI48DWI): New mode iterator.
	(*push<mode>2): Allow XMM registers.
	(*pushdi2_rex64): Ditto.
	(*pushsi2_rex64): Ditto.
	(*pushsi2): Ditto.
	(push XMM reg splitter): New splitter

	(*pushdf) Change "x" operand constraint to "v".
	(*pushsf_rex64): Ditto.
	(*pushsf): Ditto.
2020-05-15 16:22:19 +02:00
Nathan Sidwell
271e3da859 c++: Fix thinkos in template_args_equal change.
Arseny Solokha noticed I'd flubbed this patch, and it was not saying
what I thought it was saying.  Unfortunately that didn't break
anything (otherwise I'd've noticed).  Fixed thusly.

	* pt.c (template_args_equal): Fix thinkos in previous 'cleanup'.
2020-05-15 06:34:20 -07:00
Richard Biener
584a3c080b tree-optimization/92260 - improve fix
This improves the fix for PR92260 changing the number of vector
computation to the canonical one, not needing to look at the
using stmt.

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

	PR tree-optimization/92260
	* tree-vect-slp.c (vect_get_constant_vectors): Compute
	the number of vector stmts in a canonical way.
2020-05-15 13:54:32 +02:00
Martin Liska
f8e1c0c018
Fix clang [-Wmisleading-indentation] in hsa-gen.c.
* hsa-gen.c (get_symbol_for_decl): Fix misleading indentation
	warning.
2020-05-15 12:34:27 +02:00
Andrew Stubbs
b8db70e1f1 WIP amdgcn: use unsigned extend for lshiftrt
This fixes a wrong-code logic error in a previous patch.
Detected by gcc.c-torture/execute/pr53645-2.c.

2020-05-15  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (v<expander><mode>3): Fix unsignedp.
2020-05-15 11:26:12 +01:00
Andrew Burgess
c9a41202b2 contrib: Handle GDB specific test result types
This commit is for the benefit of GDB, but as the binutils-gdb
repository shares the contrib/ directory with gcc, this commit must
first be applied to gcc then copied back to binutils-gdb.

This commit extends the two scripts contrib/dg-extract-results.{py,sh}
to handle some new, GDB specific test result types.  These test
results types should never appear in GCC, or any other tool that
shares the contrib/ directly, so this change should be harmless.

In this patch series:
  https://sourceware.org/pipermail/gdb-patches/2020-April/167847.html
changes were made in GDB's use of Dejagnu so that two additional
conditions could be detected, these are:

  1. Test names that contain either the build or source paths.  Such
  test names make it difficult to compare the results of two test runs
  of GDB from two different directories, and

  2. Duplicate test names.  Duplicates make it difficult to track down
  exactly which test has failed.

When running Dejagnu on GDB we can now (sometimes) see two additional
test result types matching the above conditions, these are '# of paths
in test names' and '# of duplicate test names'.

If the test is run in parallel mode (make -j...) then these extra test
results will appear in the individual test summary files, but are not
merged into the final summary file.

Additionally, within the summary file there are now two new types of
test summary line, these are 'PATH: ...' and 'DUPLICATE: ...', these
allow users to quickly search the test summary to track down where the
offending test names are.  These lines are similarly not merged into
the unified gdb.sum file after a parallel test run.

This commit extends the dg-extract-results.* scripts to calculate the
totals for the two new result types, and to copy the new test summary
lines into the unified summary file.

contrib/ChangeLog:

	* dg-extract-results.py: Handle GDB specific test types.
	* dg-extract-results.sh: Likewise.
2020-05-15 11:19:15 +01:00
Richard Biener
aaf1ee4831 tree-optimization/95133 - avoid abnormal edges in path splitting
When path splitting tries to detect a CFG diamond make sure it
is composed of normal (non-EH, not abnormal) edges.  Otherwise
CFG manipulation later may fail.

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

	PR tree-optimization/95133
	* gimple-ssa-split-paths.c
	(find_block_to_duplicate_for_splitting_paths): Check for
	normal edges.

	* gcc.dg/pr95133.c: New testcase.
2020-05-15 12:11:37 +02:00
Christophe Lyon
62af27e77b arm: Add support for interrupt routines to reg_needs_saving_p
reg_needs_saving_p is only used when dealing with non-interrupt
routines, but it makes sense to extend it to support that context too,
and make arm_compute_save_reg0_reg12_mask use it.

Save only live registers for non-leaf functions, but assume a callee
could clobber any register.

2020-05-15  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* config/arm/arm.c (reg_needs_saving_p): Add support for interrupt
	routines.
	(arm_compute_save_reg0_reg12_mask): Use reg_needs_saving_p.
2020-05-15 09:57:57 +00:00
Tobias Burnus
9f0f7da9aa [OpenMP] Fix 'omp exit data' for Fortran arrays (PR 94635)
gcc/
	PR middle-end/94635
	* gimplify.c (gimplify_scan_omp_clauses): For MAP_TO_PSET with
	OMP_TARGET_EXIT_DATA, use 'release:' unless the associated
	item is 'delete:'.

gcc/testsuite
	PR middle-end/94635
	* gfortran.dg/gomp/target-exit-data.f90: New.
2020-05-15 11:54:02 +02:00
Iain Buclaw
3a55774f0b libiberty: Handle @live attribute in D demangler.
Adds support for demangling D functions annotated with the new
ownership/borrowing system attribute.

libiberty/ChangeLog:

	* d-demangle.c (dlang_attributes): Add @live attribute.
	* testsuite/d-demangle-expected: Add new tests.
2020-05-15 10:40:47 +02:00
Uros Bizjak
f8b0665445 i386: Add V2SFmode hadd/hsub instructions [PR95046]
PFACC/PFNACC 3dNow! instructions got their corresponding SSE alternative
in SSE3, so these can't be implemented with TARGET_MMX_WITH_SSE, which
implies SSE2.  These instructions are only generated via builtins, and
since several 3dNow! insns have no corresponding SSE alternative,
we can't avoid MMX registers with 3dNow! builtins anyway.

Add SSE3/AVX alternatives to the insn pattern, so compiler will be able
to use XMM registers when available, but don't prevent MMX registers,
since they are needed when SSE3 is not active.

Add additional generic insn patterns, used by the combiner to
synthesize horizontal V2SFmode add/sub instructions.  These patterns
are active for TARGET_MMX_WITH_SSE only, and use only XMM registers.

gcc/ChangeLog:

	PR target/95046
	* config/i386/i386.md (isa): Add sse3_noavx.
	(enabled): Handle sse3_noavx.

	* config/i386/mmx.md (mmx_haddv2sf3): New expander.
	(*mmx_haddv2sf3): Rename from mmx_haddv2sf3.  Add SSE/AVX
	alternatives.  Match commutative vec_select selector operands.
	(*mmx_haddv2sf3_low): New insn pattern.

	(*mmx_hsubv2sf3): Add SSE/AVX alternatives.
	(*mmx_hsubv2sf3_low): New insn pattern.

testsuite/ChangeLog:

	PR target/95046
	* gcc.target/i386/pr95046-8.c: New test.
2020-05-15 10:02:00 +02:00
Uros Bizjak
f4356120ba i386: Add V2SFmode hadd/hsub instructions [PR95046]
PFACC/PFNACC 3dNow! instructions got their corresponding SSE alternative
in SSE3, so these can't be implemented with TARGET_MMX_WITH_SSE, which
implies SSE2.  These instructions are only generated via builtins, and
since several 3dNow! insns have no corresponding SSE alternative,
we can't avoid MMX registers with 3dNow! builtins anyway.

Add SSE3/AVX alternatives to the insn pattern, so compiler will be able
to use XMM registers when available, but don't prevent MMX registers,
since they are needed when SSE3 is not active.

Add additional generic insn patterns, used by the combiner to
synthesize horizontal V2SFmode add/sub instructions.  These patterns
are active for TARGET_MMX_WITH_SSE only, and use only XMM registers.

gcc/ChangeLog:

	PR target/95046
	* config/i386/i386.md (isa): Add sse3_noavx.
	(enabled): Handle sse3_noavx.

	* config/i386/mmx.md (mmx_haddv2sf3): New expander.
	(*mmx_haddv2sf3): Rename from mmx_haddv2sf3.  Add SSE/AVX
	alternatives.  Match commutative vec_select selector operands.
	(*mmx_haddv2sf3_low): New insn pattern.

	(*mmx_hsubv2sf3): Add SSE/AVX alternatives.
	(*mmx_hsubv2sf3_low): New insn pattern.

testsuite/ChangeLog:

	PR target/95046
	* gcc.target/i386/pr95046-8.c: New test.
2020-05-15 09:24:38 +02:00
Richard Biener
84935c9822 tree-optimization/33315 - common stores during sinking
This implements commoning of stores to a common successor in
a simple ad-hoc way.  I've decided to put it into the code sinking
pass since, well, it sinks stores.  It's still separate since
it does not really sink code into less executed places.

It's ad-hoc since it does not perform any dataflow or alias analysis
but simply only considers trailing stores in a block, iteratively
though.  If the stores are from different values a PHI node is
inserted to merge them.  gcc.dg/tree-ssa/split-path-7.c shows
that path splitting will eventually undo this very transform,
I've decided to not bother with it and simply disable sinking for
the particular testcase.

Doing this transform is good for code size when the stores are
from constants, once we have to insert PHIs the situation becomes
less clear but it's a transform we do elsewhere as well
(cselim for one), and reversing the transform should be easy.

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

	PR tree-optimization/33315
	* tree-ssa-sink.c: Include tree-eh.h.
	(sink_stats): Add commoned member.
	(sink_common_stores_to_bb): New function implementing store
	commoning by sinking to the successor.
	(sink_code_in_bb): Call it, pass down TODO_cleanup_cfg returned.
	(pass_sink_code::execute): Likewise.  Record commoned stores
	in statistics.

	* gcc.dg/tree-ssa/ssa-sink-13.c: New testcase.
	* gcc.dg/tree-ssa/ssa-sink-14.c: Likewise.
	* gcc.dg/tree-ssa/split-path-7.c: Disable sinking.
2020-05-15 08:56:08 +02:00
Xionghu Luo
8a15faa730 Fold (add -1; zero_ext; add +1) operations to zero_ext when not overflow(PR37451, PR61837)
This "subtract/extend/add" existed for a long time and still annoying us
(PR37451, part of PR61837) when converting from 32bits to 64bits, as the ctr
register is used as 64bits on powerpc64, Andraw Pinski had a patch but
caused some issue and reverted by Joseph S. Myers(PR37451, PR37782).

Andraw:
http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01070.html
http://gcc.gnu.org/ml/gcc-patches/2008-10/msg01321.html
Joseph:
https://gcc.gnu.org/legacy-ml/gcc-patches/2011-11/msg02405.html

We still can do the simplification from "subtract/zero_ext/add" to "zero_ext"
when loop iterations is known to be LT than MODE_MAX (only do simplify
when counter+0x1 NOT overflow).

Bootstrap and regression tested pass on Power8-LE.

gcc/ChangeLog

	2020-05-15  Xiong Hu Luo  <luoxhu@linux.ibm.com>

	PR rtl-optimization/37451, part of PR target/61837
	* loop-doloop.c (doloop_simplify_count): New function.  Simplify
	(add -1; zero_ext; add +1) to zero_ext when not wrapping.
	(doloop_modify): Call doloop_simplify_count.

gcc/testsuite/ChangeLog

	2020-05-15  Xiong Hu Luo  <luoxhu@linux.ibm.com>

	PR rtl-optimization/37451, part of PR target/61837
	* gcc.target/powerpc/doloop-2.c: New test.
2020-05-14 21:06:50 -05:00
GCC Administrator
98aad12cd2 Daily bump. 2020-05-15 00:16:15 +00:00
H.J. Lu
d2a359fe5d Skip jit tests for targets that don't support -lgccjit
Since libgccjit.so is linked into jit tests, skip jit tests for targets
that don't support -lgccjit.

gcc/

	PR jit/94778
	* doc/sourcebuild.texi: Document effective target lgccjit.

gcc/testsuite/

	PR jit/94778
	* jit.dg/jit.exp: Skip jit tests for targets that don't support
	-lgccjit.
	* lib/target-supports.exp (check_effective_target_lgccjit): New.
2020-05-14 16:35:03 -07:00
Iain Buclaw
3f30a27491 libiberty: Update D symbol demangling for latest ABI spec.
Some small improvements and clarifications have been done in the D ABI
specification to remove all ambiguities found in the current grammar,
this implementation now more closely resembles the spec, whilst
maintaining compatibility with the old ABI.

Three new rules have been added to the ABI.

1. Back references using 'Q', analogous to C++ substitutions, compresses
   repeated identifiers, types, and template symbol and value parameters.

2. Template aliases to externally mangled symbols are prefixed with 'X'.
   This includes any symbol that isn't extern(D), or has its name
   overriden with pragma(mangle).  This fixes an ambiguity where it was
   not clear whether 'V' was an encoded calling convention, or the next
   template value parameter.

3. Alias parameters, templates, and tuple symbols no longer encode the
   symbol length of its subpart.  Tuples are now terminated with 'Z'.
   This fixes another ambiguity where the first character of the mangled
   name can be a digit as well, so the demangler had to figure out where
   to split the two adjacent numbers by trying out each combination.

libiberty/ChangeLog:

	* d-demangle.c (enum dlang_symbol_kinds): Remove enum.
	(struct dlang_info): New struct
	(dlang_decode_backref): New function.
	(dlang_backref): New function.
	(dlang_symbol_backref): New function.
	(dlang_type_backref): New function.
	(dlang_symbol_name_p): New function.
	(dlang_function_type_noreturn): New function.
	(dlang_function_type): Add 'info' parameter.  Decode function type
	with dlang_function_type_noreturn.
	(dlang_function_args): Add 'info' parameter.
	(dlang_type): Add 'info' parameter.  Handle back referenced types.
	(dlang_identifier): Replace 'kind' parameter with 'info'.  Handle back
	referenced symbols.  Split off decoding of plain identifiers to...
	(dlang_lname): ...here.
	(dlang_parse_mangle): Replace 'kind' parameter with 'info'.  Decode
	function type and return with dlang_type.
	(dlang_parse_qualified): Replace 'kind' parameter with 'info', add
	'suffix_modifier' parameter.  Decode function type with
	dlang_function_type_noreturn.
	(dlang_parse_tuple): Add 'info' parameter.
	(dlang_template_symbol_param): New function.
	(dlang_template_args): Add 'info' parameter.  Decode symbol parameter
	with dlang_template_symbol_param.  Handle back referenced values, and
	externally mangled parameters.
	(dlang_parse_template): Add 'info' parameter.
	(dlang_demangle_init_info): New function.
	(dlang_demangle): Initialize and pass 'info' parameter.
	* testsuite/d-demangle-expected: Add new tests.

Co-Authored-By: Rainer Schuetze <r.sagitario@gmx.de>
2020-05-14 23:43:17 +02:00
Jason Merrill
4e1592f8e1 c++: Fix deferred noexcept on constructor [PR93901].
My change in r10-4394 to only update clones when we actually instantiate a
deferred noexcept-spec broke this because deferred parsing updates the
primary function but not the clones.  For GCC 10 I just reverted that
change; this patch adjusts maybe_instantiate_noexcept to update only the
clone passed as the argument.

gcc/cp/ChangeLog
2020-05-14  Jason Merrill  <jason@redhat.com>

	PR c++/93901
	* pt.c (maybe_instantiate_noexcept): Change clone handling.
2020-05-14 16:38:30 -04:00
Ian Lance Taylor
3a36428b5f libgo: only build syscall test with -static on GNU/Linux
For PR go/95061

Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/234019
2020-05-14 13:37:12 -07:00
Andrew Stubbs
75d0b3d728 amdgcn: fix vcc clobber in vector load/store
This switches the code that expands scalar addresses to vectors of addresses
from using VCC to using CC_SAVE_REG, for the lo-part to hi-part carry values.
These were fine in code expanded in earlier passes, but addresses expanded
late, such as for stack spills or reloads, could clobber live VCC values,
causing execution failures.

This is the first target-specific testcase for GCN, so the new .exp file is
included.

2020-05-14  Andrew Stubbs  <ams@codesourcery.com>

	gcc/
	* config/gcn/gcn-valu.md (add<mode>3_zext_dup): Change to a
	define_expand, and rename the original to ...
	(add<mode>3_vcc_zext_dup): ... this, and add a custom VCC operand.
	(add<mode>3_zext_dup_exec): Likewise, with ...
	(add<mode>3_vcc_zext_dup_exec): ... this.
	(add<mode>3_zext_dup2): Likewise, with ...
	(add<mode>3_zext_dup_exec): ... this.
	(add<mode>3_zext_dup2_exec): Likewise, with ...
	(add<mode>3_zext_dup2): ... this.
	* config/gcn/gcn.c (gcn_expand_scalar_to_vector_address): Switch
	addv64di3_zext* calls to use addv64di3_vcc_zext*.

	gcc/testsuite/
	* testsuite/gcc.target/gcn/gcn.exp: New file.
	* testsuite/gcc.target/gcn/vcc-clobber.c: New file.
2020-05-14 20:45:09 +01:00
Uros Bizjak
9056cd8035 i386: Add V2DFmode float trunc/extend functions [PR95046]
gcc/ChangeLog:

	PR target/95046
	* config/i386/sse.md (truncv2dfv2df2): New insn pattern.
	(extendv2sfv2df2): Ditto.

testsuite/ChangeLog:

	PR target/95046
	* gcc.target/i386/pr95046-7.c: New test.
2020-05-14 19:51:40 +02:00
Patrick Palka
098cf31aa2 c++: Missing SFINAE with lookup_fnfields [PR78446]
Here we're failing to do SFINAE in build_op_call when looking up the
class's operator() via lookup_fnfields, which calls lookup_member always
with complain=tf_warning_or_error; from there we would complain
about an ambiguous lookup for operator().

This patch fixes this by adding a tsubst_flags_t parameter to
lookup_fnfields and adjusting all its callers appropriately.

gcc/cp/ChangeLog:

	PR c++/78446
	* call.c (build_op_call): Pass complain to lookup_fnfields.
	(build_special_member_call): Likewise.
	* class.c (type_requires_array_cookie): Pass tf_warning_or_error
	to lookup_fnfields.
	* cp-tree.h (lookup_fnfields): Add tsubst_flags_t parameter.
	* except.c (build_throw): Pass tf_warning_or_error to
	lookup_fnfields.
	* init.c (build_new_1): Pass complain to lookup_fnfields.
	* method.c (locate_fn_flags): Likewise.
	* name-lookup.c (lookup_name_real_1): Pass tf_warning_or_error
	to lookup_fnfields.
	* pt.c (tsubst_baselink): Pass complain to lookup_fnfields.
	* search.c (lookup_fnfields): New 'complain' parameter.  Pass it
	to lookup_member.

gcc/testsuite/ChangeLog:

	PR c++/78446
	* g++.dg/template/sfinae31.C: New test.
2020-05-14 12:56:18 -04:00
Thomas Koenig
d975519ad1 Removed double ChangeLog entries from previous commit. 2020-05-14 18:37:18 +02:00
Thomas Koenig
cdc34b5057 Add early return for invalid STATUS for close.
2020-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/95119
	* io/close.c (close_status): Add CLOSE_INVALID.
	(st_close): Return early on invalid STATUS parameter.

2020-05-14  Thomas Koenig  <tkoenig@gcc.gnu.org>

	PR libfortran/95119
	* testsuite/libgomp.fortran/close_errors_1.f90: New test.
2020-05-14 18:33:24 +02:00
H.J. Lu
8d286dd118 x86: Default CET run-time support to auto
CET has been added since GCC 8.  This patch defaults CET run-time support
to auto.  It enables CET run-time support if asssembler supports CET
instructions and multi-byte NOPs are enabled via SSE2.

config/

	* cet.m4 (GCC_CET_FLAGS): Change default to auto.

gcc/

	* configure: Regenerated.

libatomic/

	* configure: Regenerated.

libbacktrace/

	* configure: Regenerated.

libcc1/

	* configure: Regenerated.

libcpp/

	* configure: Regenerated.

libdecnumber/

	* configure: Regenerated.

libgcc/

	* configure: Regenerated.

libgfortran/

	* configure: Regenerated.

libgomp/

	* configure: Regenerated.

libitm/

	* configure: Regenerated.

libobjc/

	* configure: Regenerated.

libquadmath/

	* configure: Regenerated.

libsanitizer/

	* configure: Regenerated.

libssp/

	* configure: Regenerated.

libstdc++-v3/

	* configure: Regenerated.

libvtv/

	* configure: Regenerated.

zlib/

	* configure: Regenerated.
2020-05-14 09:05:02 -07:00
Christophe Lyon
4036327e4c arm: Factorize several occurrences of the same code into reg_needs_saving_p
The same code pattern occurs in several functions, so it seems cleaner
to move it into a dedicated function.

2020-05-14  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* config/arm/arm.c (reg_needs_saving_p): New function.
	(use_return_insn): Use reg_needs_saving_p.
	(arm_get_vfp_saved_size): Likewise.
	(arm_compute_frame_layout): Likewise.
	(arm_save_coproc_regs): Likewise.
	(thumb1_expand_epilogue): Likewise.
	(arm_expand_epilogue_apcs_frame): Likewise.
	(arm_expand_epilogue): Likewise.
2020-05-14 15:38:24 +00:00
Christophe Lyon
f664bd07f0 arm.c: Clarify error message in thumb1_expand_prologue
While running the tests with -march=armv5t -mthumb, I came across this
error message which I think could be clearer.

2020-05-14  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* config/arm/arm.c (thumb1_expand_prologue): Update error message.
2020-05-14 15:34:30 +00:00
Nathan Sidwell
68f1d74ff9 c++: Missed c++2a->20 change
Jason missed a c++2a mention.  I couldn't resist changing the loop
following to place the initializers inside the fors.

	* parser.c (cp_parser_diagnose_invalid_typename): Mention
	std=c++20 not 2a, reformat dependent binfo inform loops.
2020-05-14 08:06:35 -07:00
Nathan Sidwell
f497e36ae5 c++: Simplify tsubst_template_decl
tsubst_template_decl's control flow was also confusing.  This reorders
and flattens some of the conditionals.

	* pt.c (tsubst_template_decl): Reorder and commonize some control
	paths.
2020-05-14 07:33:13 -07:00
Nathan Sidwell
ddbaab134c c++: Simplify tsubst_friend_function
tsubst_friend_function's control flow was a little complicated.  This
simplifies it, primarily by using more RAII.

	* pt.c (tsubst_friend_function): Simplify control flow.
2020-05-14 07:22:54 -07:00