Commit Graph

176814 Commits

Author SHA1 Message Date
Jason Merrill
5329b59a2e bootstrap: Update requirement to C++11.
There was general agreement last November that we would move to allowing
C++11 features to be used in GCC 11; this patch implements that direction.

ChangeLog
2020-05-18  Jason Merrill  <jason@redhat.com>

	* configure.ac: Update bootstrap dialect to -std=c++11.

config/ChangeLog
2020-05-18  Jason Merrill  <jason@redhat.com>

	* ax_cxx_compile_stdcxx.m4: Import from autoconf archive with
	an adjustment to try the default mode.

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

	* aclocal.m4: Add ax_cxx_compile_stdcxx.m4.
	* configure.ac: Use AX_CXX_COMPILE_STDCXX(11).
2020-05-18 14:29:18 -04:00
Harald Anlauf
e5abd1cb91 PR fortran/95053 - division by zero constants
Partially revert the fix for PR93499.  Replace by checks for valid
	expressions in the declaration of array shape and PDT KIND and LEN
	expressions at a later stage.

gcc/fortran/

2020-05-18  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95053
	* arith.c (gfc_divide): Revert hunk introduced by patch for
	PR93499.
	* decl.c (variable_decl): Generate error for array shape not being
	an INTEGER constant.
	(gfc_get_pdt_instance): Generate error if KIND or LEN expressions
	in declaration of a PDT instance do not simplify to INTEGER
	constants.

gcc/testsuite/

2020-05-18  Harald Anlauf  <anlauf@gmx.de>

	PR fortran/95053
	* gfortran.dg/dec_structure_23.f90: Adjust to new error messages.
	* gfortran.dg/pr93499.f90: Adjust to new error messages.
	* gfortran.dg/pr95053_2.f90: New test.
	* gfortran.dg/pr95053_3.f90: New test.
2020-05-18 20:27:29 +02:00
Stefan Schulze Frielinghaus
2c832ffedf tree-optimization: Fix use of uninitialized variables warnings [PR94952]
While bootstrapping GCC on S/390 with --enable-checking=release several
warnings about use of uninitialized variables bitpos, bitregion_start, and
bitregion_end of function pass_store_merging::process_store are raised.
According to PR94952 these seem to be false positives which are silenced by
initialising the mentioned variables.

Bootstrapped on S/390.  Ok for master and releases/gcc-10 assuming that
regtest succeeds (still running but I don't see a reason why it
should fail)?

gcc/ChangeLog:

2020-05-18  Stefan Schulze Frielinghaus  <stefansf@linux.ibm.com>

	PR tree-optimization/94952
	* gimple-ssa-store-merging.c (pass_store_merging::process_store):
	Initialize variables bitpos, bitregion_start, and bitregion_end in
	order to silence warnings about use of uninitialized variables.
2020-05-18 20:04:25 +02:00
Marek Polacek
be464161b4 c++: Add test for c++/95143
Already fixed by r10-8124-gceae6a13366d9646e172fc943fe8e221b70f0920.

	PR c++/95143
	* g++.dg/cpp0x/sfinae66.C: New test.
2020-05-18 13:50:39 -04:00
Carl Love
24f68831d2 pr94833, fix vec_first_match_index for nulls
gcc/ChangeLog

2020-04-30  Carl Love  <cel@us.ibm.com>

	PR target/94833
	* config/rs6000/vsx.md (define_expand): Fix instruction generation for
	first_match_index_<mode>.
	* testsuite/gcc.target/powerpc/builtins-8-p9-runnable.c (main): Add
	additional test cases with zero vector elements.
2020-05-18 12:14:40 -05:00
Uros Bizjak
8f17461bdf i386: Avoid reversing a non-trapping comparison to a trapping one [PR95169]
gcc/ChangeLog:

	PR target/95169
	* config/i386/i386-expand.c (ix86_expand_int_movcc):
	 Avoid reversing a non-trapping comparison to a trapping one.

testsuite/ChangeLog:

	PR target/95169
	* gcc.target/i386/pr95169.c: New test.
2020-05-18 17:52:14 +02:00
Alex Coplan
8b8f311726 [arm] Don't generate invalid LDRD insns
This fixes a bug in the arm backend where GCC generates invalid LDRD
instructions. The LDRD instruction requires the first transfer register to be
even, but GCC attempts to use odd registers here. For example, with the
following C code:

    struct c {
      double a;
    } __attribute((aligned)) __attribute((packed));
    struct c d;
    struct c f(struct c);
    void e() { f(d); }

The struct d is passed in registers r1 and r2 to the function f, and GCC
attempted to do this with a LDRD instruction when compiling with -march=armv7-a
on a soft float toolchain.

The fix is analogous to the corresponding one for STRD in the same function:
https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=52057dc4ac5295caebf83147f688d769c93cbc8d

2020-05-18  Alex Coplan  <alex.coplan@arm.com>

gcc/:
	* config/arm/arm.c (output_move_double): Fix codegen when loading into
	a register pair with an odd base register.

gcc/testsuite/:
	* gcc.c-torture/compile/packed-aligned-1.c: New test.
	* gcc.c-torture/execute/packed-aligned.c: New test.
2020-05-18 16:31:43 +01:00
Uros Bizjak
94f687bd9a i386: Improve vector mode and TFmode ABS and NEG patterns
gcc/ChangeLog:

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

	* config/i386/i386-expand.c (ix86_expand_fp_absneg_operator):
	Do not emit FLAGS_REG clobber for TFmode.
	* config/i386/i386.md (*<code>tf2_1): Rewrite as
	define_insn_and_split.  Mark operands 1 and 2 commutative.
	(*nabstf2_1): Ditto.
	(absneg SSE splitter): Use MODEF mode iterator instead of SSEMODEF.
	Do not swap memory operands.  Simplify RTX generation.
	(neg abs SSE splitter): Ditto.
	* config/i386/sse.md (*<code><mode>2): Mark operands 1 and 2
	commutative.  Do not swap operands.  Simplify RTX generation.
	(*nabs<mode>2): Ditto.
2020-05-18 17:25:39 +02:00
Richard Biener
cfaf0edbb1 fixup BB vectorization constant generation place
This adjusts the way we compute the stmt insert location for
invariants in BB vectorization context to deal with eventually
sharing invariant SLP nodes for multiple uses.  We can no longer
use a single use stmt location then but there's a simple way out.

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

	* tree-vect-slp.c (vect_slp_bb): Start after labels.
	(vect_get_constant_vectors): Really place init stmt after scalar defs.
	* tree-vect-stmts.c (vect_init_vector_1): Insert before
	region begin.
2020-05-18 15:31:05 +02:00
H.J. Lu
d83e28f47f x86: Update Intel processor detection
Add cpu model numbers for Intel Airmont, Tremont, Comet Lake, Ice Lake
and Tiger Lake processor families.

	* config/i386/driver-i386.c (host_detect_local_cpu): Support
	Intel Airmont, Tremont, Comet Lake, Ice Lake and Tiger Lake
	processor families.
2020-05-18 05:35:56 -07:00
Alex Coplan
9a4a0a5b0e MAINTAINERS: Add myself for write after approval.
2020-05-18  Alex Coplan  <alex.coplan@arm.com>

* MAINTAINERS (Write After Approval): Add myself.
2020-05-18 12:21:17 +01:00
Richard Biener
fe168751c5 middle-end/95171 - inlining of trapping compare into non-call EH fn
This fixes always-inlining across -fnon-call-exception boundaries
for conditions which we do not allow to throw.

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

	PR middle-end/95171
	* tree-inline.c (remap_gimple_stmt): Split out trapping compares
	when inlining into a non-call EH function.

	* gcc.dg/pr95171.c: New testcase.
2020-05-18 12:27:53 +02:00
Richard Biener
52a0f83980 tree-optimization/95172 - avoid mixing conditionalized and ordered SM
The following testcase shows a missed optimization that then leads to
wrong-code when issueing SMed stores on exits.  When we were able to
compute an ordered sequence of stores for an exit we need to emit
that in the correct order and we can emit it disregarding to any
conditional for whether a store actually happened (we know it did).
We can also improve detection as of whether we need conditional
processing at all.  Both parts fix the testcase.

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

	PR tree-optimization/95172
	* tree-ssa-loop-im.c (execute_sm): Get flag whether we
	eventually need the conditional processing.
	(execute_sm_exit): When processing an orderd sequence
	avoid doing any conditional processing.
	(hoist_memory_references): Pass down whether all edges
	have ordered processing for a ref to execute_sm.

	* gcc.dg/torture/pr95172.c: New testcase.
2020-05-18 11:53:10 +02:00
GCC Administrator
03d549090e Daily bump. 2020-05-18 00:16:18 +00:00
Iain Sandoe
2b9a271b2d coroutines: Avoid a maybe used uninitialized warning. NFC.
This avoids a (bogus) warning that occurs with some bootstrap
compilers.

gcc/cp/ChangeLog:

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

	* coroutines.cc (morph_fn_to_coro): Initialize the
	gro variable.
2020-05-17 19:59:40 +01:00
Jeff Law
4c1b27f961 Use pc_or_label_operand to collapse a couple more patterns in preparation for the cc0->CC_REG transition.
* config/h8300/predicates.md (pc_or_label_operand): New predicate.
	* config/h8300/jumpcall.md (branch_true, branch_false): Consolidate
	into a single pattern using pc_or_label_operand.
	* config/h8300/combiner.md (bit branch patterns): Likewise.
	* config/h8300/peepholes.md (HImode and SImode branches): Likewise.
2020-05-17 13:22:38 -04:00
H.J. Lu
266f44a91c x86: Allow V1TI vector register pushes
Add V1TI vector register push and split it after reload to a sequence
of:

(set (reg:P SP_REG) (plus:P SP_REG) (const_int -8)))
(set (match_dup 0) (match_dup 1))

so that STV pass can convert TI mode integer push to V1TI vector register
push.  Rename has_non_address_hard_reg to pseudo_reg_set, combine calls
of single_set and has_non_address_hard_reg to pseudo_reg_set, to ignore
pseudo register push.

Remove c-c++-common/dfp/func-vararg-mixed-2.c since it is compiled with
-mpreferred-stack-boundary=2 and leads to segfault:

Dump of assembler code for function __bid_nesd2:
   0x08049210 <+0>:	endbr32
   0x08049214 <+4>:	push   %esi
   0x08049215 <+5>:	push   %ebx
   0x08049216 <+6>:	call   0x8049130 <__x86.get_pc_thunk.bx>
   0x0804921b <+11>:	add    $0x8de5,%ebx
   0x08049221 <+17>:	sub    $0x20,%esp
   0x08049224 <+20>:	mov    0x30(%esp),%esi
   0x08049228 <+24>:	pushl  0x2c(%esp)
   0x0804922c <+28>:	call   0x804e600 <__bid32_to_bid64>
   0x08049231 <+33>:	mov    %esi,(%esp)
   0x08049234 <+36>:	movd   %edx,%xmm1
   0x08049238 <+40>:	movd   %eax,%xmm0
   0x0804923c <+44>:	punpckldq %xmm1,%xmm0
=> 0x08049240 <+48>:	movaps %xmm0,0x10(%esp)
   0x08049245 <+53>:	call   0x804e600 <__bid32_to_bid64>
   0x0804924a <+58>:	push   %edx
   0x0804924b <+59>:	push   %eax
   0x0804924c <+60>:	pushl  0x1c(%esp)
   0x08049250 <+64>:	pushl  0x1c(%esp)
   0x08049254 <+68>:	call   0x804b260 <__bid64_quiet_not_equal>
   0x08049259 <+73>:	add    $0x34,%esp
   0x0804925c <+76>:	pop    %ebx
   0x0804925d <+77>:	pop    %esi
   0x0804925e <+78>:	ret

when libgcc is compiled with -msse2.  According to GCC manual:

'-mpreferred-stack-boundary=NUM'
     Attempt to keep the stack boundary aligned to a 2 raised to NUM
     byte boundary.  If '-mpreferred-stack-boundary' is not specified,
     the default is 4 (16 bytes or 128-bits).

     *Warning:* If you use this switch, then you must build all modules
     with the same value, including any libraries.  This includes the
     system libraries and startup modules.

c-c++-common/dfp/func-vararg-mixed-2.c, which was added by

commit 3b2488ca6e
Author: H.J. Lu <hongjiu.lu@intel.com>
Date:   Wed Jul 30 19:24:02 2008 +0000

    func-vararg-alternate-d128-2.c: New.

    2008-07-30  H.J. Lu  <hongjiu.lu@intel.com>
                Joey Ye  <joey.ye@intel.com>

            * gcc.dg/dfp/func-vararg-alternate-d128-2.c: New.
            * gcc.dg/dfp/func-vararg-mixed-2.c: Likewise.

isn't expected to work with libgcc.

gcc/

	PR target/95021
	* config/i386/i386-features.c (has_non_address_hard_reg):
	Renamed to ...
	(pseudo_reg_set): This.  Return the SET expression.  Ignore
	pseudo register push.
	(general_scalar_to_vector_candidate_p): Combine single_set and
	has_non_address_hard_reg calls to pseudo_reg_set.
	(timode_scalar_to_vector_candidate_p): Likewise.
	* config/i386/i386.md (*pushv1ti2): New pattern.

gcc/testsuite/

	PR target/95021
	* c-c++-common/dfp/func-vararg-mixed-2.c: Removed.
	* gcc.target/i386/pr95021-1.c: New test.
	* gcc.target/i386/pr95021-2.c: Likewise.
	* gcc.target/i386/pr95021-3.c: Likewise.
	* gcc.target/i386/pr95021-4.c: Likewise.
	* gcc.target/i386/pr95021-5.c: Likewise.
2020-05-17 10:10:47 -07:00
Iain Buclaw
e977a5df5b libphobos: Merge upstream druntime 5cc061a8, phobos 64ed4684f
- core.cpuid has been fixed to not use i7 detection on AMD processors.
- std.net.curl has been fixed to correctly handle HTTP/2 status lines.
- std.zip has had a test fixed to not rely on unzip being installed.

Fixes: PR d/95166
       PR d/95167
       PR d/95168

Reviewed-on: https://github.com/dlang/druntime/pull/3107
	     https://github.com/dlang/phobos/pull/7486
2020-05-17 18:49:19 +02:00
H.J. Lu
cc558e2801 x86: Add gcc.target/i386/strncmp-1.c
Add a strncmp test for the cmpstrn pattern with neither of the strings
is a constant string.  We can expand the cmpstrn pattern to "repz cmpsb"
only if one of the strings is a constant so that expand_builtin_strncmp()
can write the length argument to be the minimum of the const string
length and the actual length argument.  Otherwise, "repz cmpsb" may pass
the 0 byte.

	* gcc.target/i386/strncmp-1.c: New test.
2020-05-17 06:52:14 -07:00
Aldy Hernandez
e7e785dfec Revert previous patch:
2020-05-17  Aldy Hernandez  <aldyh@redhat.com>

	* tree-vrp.c (operand_less_p): Move to...
	* vr-values.c (operand_less_p): ...here.
	* tree-vrp.h (operand_less_p): Remove.
2020-05-17 13:56:55 +02:00
Aldy Hernandez
8bfc81876f Move operand_less_p to vr-values.c. 2020-05-17 13:46:32 +02:00
Aldy Hernandez
5b461bdb48 Remove vrp_insert::live_on_edge declaration.
* tree-vrp.c (class vrp_insert): Remove prototype for
	live_on_edge.
2020-05-17 13:43:36 +02:00
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