Commit Graph

176882 Commits

Author SHA1 Message Date
Jakub Jelinek
316fe6b401 libgfortran: Export forgotten _gfortran_{,m,s}findloc{0,1}_c10 [PR95390]
I have noticed we don't export these 6 symbols and thus the testcase
below fails to link.

2020-05-29  Jakub Jelinek  <jakub@redhat.com>

	PR libfortran/95390
	* gfortran.dg/findloc_8.f90: New test.

	* Makefile.am (i_findloc0_c): Add findloc0_i10.c.
	(i_findloc1_c): Add findloc1_i10.c.
	* gfortran.map (GFORTRAN_10.2): New symbol version, export
	_gfortran_{,m,s}findloc{0,1}_c10 symbols.
	* Makefile.in: Regenerated.
	* generated/findloc0_c10.c: Generated.
	* generated/findloc1_c10.c: Generated.
2020-05-29 19:01:50 +02:00
Marek Polacek
1f32d5294f c++: Fix bogus -Wparentheses warning [PR95344]
Since r267272, which added location wrappers, cp_fold loses
TREE_NO_WARNING on a MODIFY_EXPR that finish_parenthesized_expr set, and
that results in a bogus -Wparentheses warning.

I.e., previously we had "b = 1" but now we have "VIEW_CONVERT_EXPR<bool>(b) = 1"
and cp_fold_maybe_rvalue folds away the location wrapper and so we do
2718             x = fold_build2_loc (loc, code, TREE_TYPE (x), op0, op1);
in cp_fold and the flag is lost.

	PR c++/95344
	* cp-gimplify.c (cp_fold) <case MODIFY_EXPR>: Don't set
	TREE_THIS_VOLATILE here.
	(cp_fold): Set it here along with TREE_NO_WARNING.

	* c-c++-common/Wparentheses-2.c: New test.
2020-05-29 12:31:49 -04:00
Jason Merrill
8e915901de c++: vptr ubsan and derived class [PR95311].
We weren't able to find OBJ_TYPE_REF_OBJECT walking through
OBJ_TYPE_REF_EXPR because we had folded away the ADDR_EXPR.

gcc/cp/ChangeLog:

	PR c++/95311
	PR c++/95221
	* class.c (build_vfn_ref): Don't fold the INDIRECT_REF.

gcc/testsuite/ChangeLog:

	PR c++/95311
	* g++.dg/ubsan/vptr-16.C: New test.
2020-05-29 12:21:21 -04:00
Iain Buclaw
83c34c4452 contrib: Remove rs6000-ibm-aix5.3.0 from config-list.mk
contrib/ChangeLog:

	* config-list.mk (LIST): Remove rs6000-ibm-aix5.3.0.
2020-05-29 17:38:10 +02:00
Martin Liska
b9ca913b6a
Error for missing change description in git_commit.py.
contrib/ChangeLog:

	* gcc-changelog/git_commit.py: Find empty change descriptions.
	* gcc-changelog/test_email.py: New test.
	* gcc-changelog/test_patches.txt: New patch that tests that.
2020-05-29 17:25:02 +02:00
Martin Liska
5e54b01f2b
bugzilla-close-candidate.py: Fix sorting of branches.
Pushed to master.

maintainer-scripts/ChangeLog:

	* bugzilla-close-candidate.py: Fix sorting of branches.
2020-05-29 16:37:48 +02:00
Martin Liska
bd4291a1c4
Fix parsing of SVN commits in PRs.
Tested and pushed to master.

maintainer-scripts/ChangeLog:

	* bugzilla-close-candidate.py: Fix parsing of SVN revisions.
	Fix skipping of PRs that contain Can be closed message.
2020-05-29 16:10:59 +02:00
Patrick Palka
020d86db88 c++: lambdas inside constraints [PR92652]
When parsing a constraint-expression, a requires-clause or a
requires-expression, we temporarily increment processing_template_decl
so that we always obtain template trees which we could later reduce via
substitution even when not inside a template.

But incrementing processing_template_decl when we're already inside a
template has the unintended side effect of shifting up the template
parameter levels of a lambda defined inside one of these constructs,
which leads to confusion later during substitution into the lambda.

This patch fixes this issue by incrementing processing_template_decl
during parsing of these constructs only if it is 0.

Passes 'make check-c++', and also tested by building cmcstl2, does this
look OK to commit after a full bootstrap/regtest?

gcc/cp/ChangeLog:

	PR c++/92652
	PR c++/93698
	PR c++/94128
	* parser.c (cp_parser_requires_clause_expression): Temporarily
	increment processing_template_decl only if it is 0.
	(cp_parser_constraint_expression): Likewise.
	(cp_parser_requires_expression): Likewise.

gcc/testsuite/ChangeLog:

	PR c++/92652
	PR c++/93698
	PR c++/94128
	* g++.dg/cpp2a/concepts-lambda8.C: New test.
	* g++.dg/cpp2a/concepts-lambda9.C: New test.
	* g++.dg/cpp2a/concepts-lambda10.C: New test.
2020-05-29 09:44:13 -04:00
Patrick Palka
e069285cdf c++: constexpr ctor with RANGE_EXPR index [PR95241]
In the testcase below, the CONSTRUCTOR for 'field' contains a RANGE_EXPR
index:

  {{aggr_init_expr<...>, [1...2]={.off=1}}}

but get_or_insert_ctor_field isn't prepared to handle looking up a
RANGE_EXPR index.

This patch adds limited support to get_or_insert_ctor_field for looking
up a RANGE_EXPR index.  The limited scope of this patch should make it
more suitable for backporting, and more extensive support would be
needed only to handle self-modifying CONSTRUCTORs that contain a
RANGE_EXPR index, but I haven't yet been able to come up with a testcase
that actually creates such a CONSTRUCTOR.

gcc/cp/ChangeLog:

	PR c++/95241
	* constexpr.c (get_or_insert_ctor_field): Add limited support
	for RANGE_EXPR index lookups.

gcc/testsuite/ChangeLog:

	PR c++/95241
	* g++.dg/cpp0x/constexpr-array25.C: New test.
2020-05-29 09:44:09 -04:00
Martin Liska
c92716b2b1
Port bugzilla-close-candidate script to git.
maintainer-scripts/ChangeLog:

	* bugzilla-close-candidate.py: Support both SVN and GIT messages
	in PRs. Remove need of usage of the bugzilla API key.
2020-05-29 13:22:29 +02:00
Andrew Stubbs
961c2aac7f amdgcn: Fix VCC early clobber
gcc/ChangeLog:

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

	* config/gcn/gcn-valu.md (add<mode>3_vcc_zext_dup): Add early clobber.
	(add<mode>3_vcc_zext_dup_exec): Likewise.
	(add<mode>3_vcc_zext_dup2): Likewise.
	(add<mode>3_vcc_zext_dup2_exec): Likewise.
2020-05-29 12:17:06 +01:00
François Dumont
7688e5e8c4 libstdc++: Review unordered_map insert_or_assign/try_emplace (PR 95079)
Those methods are making a double lookup in case of insertion, they can
perform only one.

	PR libstdc++/95079
	* include/bits/hashtable_policy.h (_Insert_base<>::try_emplace): New.
	* include/bits/unordered_map.h (unordered_map<>::try_emplace): Adapt.
	(unordered_map<>::insert_or_assign): Adapt.
2020-05-29 13:12:36 +02:00
Richard Biener
c735929a25 tree-optimization/95272 - add SLP_TREE_REPRESENTATIVE
This adds SLP_TREE_REPRESENTATIVE - a representative stmt-info that
is used by SLP analysis and code generation.  This avoids the need
for the hack in vect_slp_rearrange_stmts which previously avoided
to re-arrange stmts that might not have been isomorphic because
of operand swapping.  It also plays nice with future directions of SLP
and for the forseeable future is easier than replicating more and
more info in the SLP node as long as non-SLP is in-tree.

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

	PR tree-optimization/95272
	* tree-vectorizer.h (_slp_tree::representative): Add.
	(SLP_TREE_REPRESENTATIVE): Likewise.
	* tree-vect-loop.c (vectorizable_reduction): Adjust SLP
	node gathering.
	(vectorizable_live_operation): Use the representative to
	attach the reduction info to.
	* tree-vect-slp.c (_slp_tree::_slp_tree): Initialize
	SLP_TREE_REPRESENTATIVE.
	(vect_create_new_slp_node): Likewise.
	(slp_copy_subtree): Copy it.
	(vect_slp_rearrange_stmts): Re-arrange even COND_EXPR stmts.
	(vect_slp_analyze_node_operations_1): Pass the representative
	to vect_analyze_stmt.
	(vect_schedule_slp_instance): Pass the representative to
	vect_transform_stmt.

	* gcc.dg/vect/pr95272.c: New testcase.
2020-05-29 13:00:36 +02:00
Richard Biener
ddf90b72d2 tree-optimization/95356 - more vectorizable_shift massaging
The previous fix clashed with the rewrite to emit SLP invariants
during the SLP walk.  Thus the following adjusts the SLP tree
hacking vectorizable_shift does appropriately.

Still resisting the attempt of a rewrite of vectorizable_shift ...

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

	PR tree-optimization/95356
	* tree-vect-stmts.c (vectorizable_shift): Do in-place SLP
	node hacking during analysis.
2020-05-29 12:52:57 +02:00
Jan Hubicka
11041c3151 Fix streamer desynchornization caused by streamer debugging patch
it turns out I lost one hunk in the patch disabling extra streaming
which causes streamer to go out of sync in the case non-trivial scc
containing the node being streamed appears in local stream (which seems
quite rare since it does not happen during bootstrap).

2020-05-29  Jan Hubicka  <hubicka@ucw.cz>

	PR lto/95362
	* lto-streamer-out.c (lto_output_tree): Disable redundant streaming.
2020-05-29 12:25:48 +02:00
Martin Liska
6bee5ffd8a
Remove references to SVN in libsanitizer.
Simple documentation update based on usage of GIT by both
LLVM and GCC.

libsanitizer/ChangeLog:

	* HOWTO_MERGE: Do not mention not existing argument.
	* README.gcc: Update LLVM repository location.
2020-05-29 11:50:54 +02:00
Martin Liska
24663f1f6d
Fix various limitations of git-backport.py.
I've just tested the script and I'm going to install the patch
to all active branches.

contrib/ChangeLog:

	* git-backport.py: The script did 'git co HEAD~' when
	there was no modified ChangeLog file in a successful
	git cherry pick.
	Run cherry-pick --continue without editor.
2020-05-29 11:29:25 +02:00
Richard Biener
233ecb5e2c tree-optimization/95403 - guard vect_init_vector_1 against NULL stmt_info
2020-05-29  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/95403
	* tree-vect-stmts.c (vect_init_vector_1): Guard against NULL
	stmt_vinfo.

	* gfortran.dg/vect/pr95403.f: New testcase.
2020-05-29 11:02:29 +02:00
Jakub Jelinek
3d0675f3bb openmp: One omp_resolve_declare_variant followup
As noticed by Arseny, I got the condition when to call the add removal hook
wrong wrong.  Fixed thusly.

2020-05-28  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/95315
	* omp-general.c (omp_resolve_declare_variant): Fix up addition of
	declare variant cgraph node removal callback.

	* gcc.dg/gomp/pr95315-2.c: New test.
2020-05-29 10:48:40 +02:00
Jakub Jelinek
43a4fc095e expander: Optimize store_expr from STRING_CST [PR95052]
In the following testcase, store_expr of e.g. 97 bytes long string literal
into 1MB long array is implemented by copying the 97 bytes from .rodata
section, followed by clearing the remaining bytes.  But, as the STRING_CST
has type char[1024*1024], we actually allocate whole 1MB in .rodata section
for it, even when we only use the first 97 bytes from that.

The following patch tweaks it so that if we are going to initialize only the
small part from it, we don't emit all the zeros that we never use after it.

2020-05-29  Jakub Jelinek  <jakub@redhat.com>

	PR middle-end/95052
	* expr.c (store_expr): If expr_size is constant and significantly
	larger than TREE_STRING_LENGTH, set temp to just the
	TREE_STRING_LENGTH portion of the STRING_CST.

	* gcc.target/i386/pr95052.c: New test.
2020-05-29 10:42:50 +02:00
Richard Biener
07852a81f5 tree-optimization/95393 - fold MIN/MAX_EXPR generated by phiopt
This makes sure to fold generated stmts so they do not survive
until RTL expansion and cause awkward code generation.

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

	PR tree-optimization/95393
	* tree-ssa-phiopt.c (minmax_replacement): Use gimple_build
	to build the min/max expression so we simplify cases like
	MAX(0, s) immediately.

	* gcc.dg/tree-ssa/phi-opt-21.c: New testcase.
	* g++.dg/vect/slp-pr87105.cc: Adjust.
2020-05-29 10:15:57 +02:00
Joe Ramsay
6802b5ba82 aarch64: add support for unpacked EOR, ORR and AND
Extended patterns for these instructions to support unpacked vectors.
BIC will have to wait, as there is not currently support for unpacked
NOT.

2020-05-29  Joe Ramsay  <joe.ramsay@arm.com>

gcc/
	* config/aarch64/aarch64-sve.md (<LOGICAL:optab><mode>3): Add support
	for unpacked EOR, ORR, AND.

gcc/testsuite/
	* gcc.target/aarch64/sve/load_const_offset_2.c: Force using packed
	vectors.
	* gcc.target/aarch64/sve/logical_unpacked_and_1.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_and_2.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_and_3.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_and_4.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_and_5.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_and_6.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_and_7.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_eor_1.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_eor_2.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_eor_3.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_eor_4.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_eor_5.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_eor_6.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_eor_7.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_orr_1.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_orr_2.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_orr_3.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_orr_4.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_orr_5.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_orr_6.c: New test.
	* gcc.target/aarch64/sve/logical_unpacked_orr_7.c: New test.
	* gcc.target/aarch64/sve/scatter_store_6.c: Force using packed vectors.
	* gcc.target/aarch64/sve/scatter_store_7.c: Force using packed vectors.
	* gcc.target/aarch64/sve/strided_load_3.c: Force using packed vectors.
	* gcc.target/aarch64/sve/strided_store_3.c: Force using packed vectors.
	* gcc.target/aarch64/sve/unpack_signed_1.c: Force using packed vectors.
2020-05-29 08:44:37 +01:00
Martin Liska
697eab1b3e
git_commit: fix duplicite email address.
The patch is about to handle situations like seen
in 3ea6977d0f.

contrib/ChangeLog:

	* gcc-changelog/git_commit.py: Properly
	handle duplicite authors.
	* gcc-changelog/test_email.py: New test.
	* gcc-changelog/test_patches.txt: New patch.
2020-05-29 09:00:00 +02:00
GCC Administrator
53ffb43a79 Daily bump. 2020-05-29 00:16:23 +00:00
Jakub Jelinek
3d8d5ddb53 c++: Try to complete decomp types [PR95328]
Two years ago Paolo has added the
  else if (processing_template_decl && !COMPLETE_TYPE_P (type))
    pedwarn (...);
lines into cp_finish_decomp.  For type dependent decl we punt much earlier,
but even for types which aren't type dependent COMPLETE_TYPE_P might be
false as this testcase shows, so this patch tries to complete_type first
(the reason for writing it that way is that it is then followed by another
else if and if complete_type returns error_mark_node, we shouldn't report
anything, as a bug should have been reported already.

2020-05-28  Jakub Jelinek  <jakub@redhat.com>

	PR c++/95328
	* decl.c (cp_finish_decomp): Call complete_type before checking
	COMPLETE_TYPE_P.

	* g++.dg/cpp1z/decomp53.C: New test.
2020-05-28 23:40:54 +02:00
Harald Anlauf
5c715e6a29 PR fortran/95373 - ICE in build_reference_type, at tree.c:7942
The use of KIND, LEN, RE, and IM inquiry references for applicable intrinsic
types is valid only for suffienctly new Fortran standards.  Add appropriate
check.

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

gcc/fortran/
	PR fortran/95373
	* primary.c (is_inquiry_ref): Check validity of inquiry
	references against selected Fortran standard.

gcc/testsuite/
	PR fortran/95373
	* gfortran.dg/pr95373_1.f90: New test.
	* gfortran.dg/pr95373_2.f90: New test.
2020-05-28 22:32:59 +02:00
Harald Anlauf
6ce3d791df PR fortran/95104 - Segfault on a legal WAIT statement
The initial commit for this PR uncovered a latent issue with unit locking
in the Fortran run-time library.  Add check for valid unit.

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

libgfortran/
	PR libfortran/95104
	* io/unit.c (unlock_unit): Guard by check for NULL pointer.
2020-05-28 21:53:17 +02:00
Jason Merrill
7b599b9f9a c++: Immediately deduce auto member [PR94926].
In r9-297 I was trying to be more flexible and treat static data members of
class templates more like variable templates, where the type need not be
determined until the variable is instantiated, but I suppose that in a class
the types of all the non-template members need to be determined at the time
of class instantiation.

gcc/cp/ChangeLog:

	PR c++/94926
	* decl.c (cp_finish_decl): Revert r9-297 change.
	(check_static_variable_definition): Likewise.
	* constexpr.c (ensure_literal_type_for_constexpr_object): Likewise.
	* pt.c (instantiate_decl): Return early on type error.

gcc/testsuite/ChangeLog:

	* g++.dg/cpp1z/pr86648.C: Expect error.
	* g++.dg/cpp1z/static2.C: Expect error.
	* g++.dg/cpp0x/nsdmi16.C: New test.
2020-05-28 14:58:16 -04:00
Nicolás Bértolo
c83027f32d jit: port libgccjit to Windows
2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>

/ChangeLog:
	* configure.ac: Don't require --enable-host-shared when building
	for Mingw.
	* configure: Regenerate.

2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>

gcc/ChangeLog:
	* Makefile.in: don't look for libiberty in the "pic" subdirectory
	when building for Mingw. Add dependency on xgcc with the proper
	extension.

2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>

gcc/c/ChangeLog:
	* Make-lang.in: Remove extra slash.

2020-05-28  Nicolas Bértolo  <nicolasbertolo@gmail.com>

gcc/jit/ChangeLog:
	* Make-lang.in: Remove extra slash. Build libgccjit.dll and its
	import library in Windows.
	* config-lang.in: Update comment about --enable-host-shared.
	* jit-w32.h: New file.
	* jit-w32.c: New file.
	(print_last_error): New function that prints the error
	string corresponding to GetLastError().
	(get_TOKEN_USER_current_user): Helper function used for getting
	the SID belonging to the current user.
	(create_directory_for_current_user): Helper function to create
	a directory with permissions such that only the current user can
	access it.
	(win_mkdtemp): Create a temporary directory using Windows APIs.
	* jit-playback.c: Do not chmod files in Windows. Use LoadLibrary,
	FreeLibrary and GetProcAddress instead of libdl.
	* jit-result.h, jit-result.c: Introduce result::handle_t to
	abstract over the types used for dynamic library handles.
	* jit-tempdir.c: Do not use mkdtemp() in Windows, use
	win_mkdtemp().
2020-05-28 14:43:58 -04:00
Jeff Law
ccf4e86dc0 Finish prior patch
* config/h8300/logical.md (bclrhi_msx): Remove pattern.
2020-05-28 12:37:34 -06:00
Jeff Law
f04f2fcd3d Fix incorrect code generation with bit insns on H8/SX.
* config/h8300/logical.md (HImode H8/SX bit-and splitter): Don't
	make a nonzero adjustment to the memory offset.
	(b<ior,xor>hi_msx): Turn into a splitter.
2020-05-28 12:28:56 -06:00
Eric Botcazou
2815558a2d Fix off-by-one error in previous commit
The bitregion_end field points to the next bit after the region.

gcc/ChangeLog
	* gimple-ssa-store-merging.c (merged_store_group::can_be_merged_into):
	Fix off-by-one error.
2020-05-28 19:31:56 +02:00
Marek Polacek
4833c1adc3 c++: Fix initlist-array12.C
* g++.dg/cpp0x/initlist-array12.C: Fix the definition of
	initializer_list for ilp32 target.
2020-05-28 11:20:57 -04:00
Marek Polacek
1b1932a4f3 c++: Fix tmplattr10.C
This test uses C++11 features so should only run in c++11.

	* g++.dg/ext/tmplattr10.C: Only run in c++11.
2020-05-28 11:05:07 -04:00
H.J. Lu
125e0ff350 Revert "Add missing ChangeLog entry for r11-694"
This reverts commit 7e58fe0e4c.
2020-05-28 07:36:15 -07:00
H.J. Lu
7e58fe0e4c Add missing ChangeLog entry for r11-694 2020-05-28 07:13:46 -07:00
H.J. Lu
4d80ebea98 gcc.dg/builtin-bswap-10.c: Check "! int128"
Check "! int128" instead of ilp32 since ILP32 targets can support int128.

gcc/testsuite/

	* gcc.dg/builtin-bswap-10.c: Check "! int128" instead of ilp32
2020-05-28 07:07:13 -07:00
Mark Eggleston
3ea6977d0f Fortran : "type is( real(kind(1.)) )" spurious syntax error PR94397
Based on a patch in the comments of the PR. That patch fixed this
problem but caused the test cases for PR93484 to fail. It has been
changed to reduce initialisation expressions if the expression is
not EXPR_VARIABLE and not EXPR_CONSTANT.

2020-05-28  Steven G. Kargl  <kargl@gcc.gnu.org>
	    Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/fortran/

	PR fortran/94397
	* match.c (gfc_match_type_spec): New variable ok initialised
	to true. Set ok with the return value of gfc_reduce_init_expr
	called only if the expression is not EXPR_CONSTANT and is not
	EXPR_VARIABLE. Add !ok to the check for type not being integer
	or the rank being greater than zero.

2020-05-28  Mark Eggleston  <markeggleston@gcc.gnu.org>

gcc/testsuite/

	PR fortran/94397
	* gfortran.dg/pr94397.F90: New test.
2020-05-28 13:24:04 +01:00
Richard Sandiford
59a3d73d50 aarch64: Fix missed shrink-wrapping opportunity
wb_candidate1 and wb_candidate2 exist for two overlapping cases:
when we use an STR or STP with writeback to allocate the frame,
and when we set up a frame chain record (either using writeback
allocation or not).

However, aarch64_layout_frame was leaving these fields with
legitimate register numbers even if we decided to do neither
of those things.  This prevented those registers from being
shrink-wrapped, even though we were otherwise treating them
as normal saves and restores.

The case this patch handles isn't the common case, so it might
not be worth going out of our way to optimise it.  But I think
the patch actually makes the output of aarch64_layout_frame more
consistent.

2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/aarch64/aarch64.h (aarch64_frame): Add a comment above
	wb_candidate1 and wb_candidate2.
	* config/aarch64/aarch64.c (aarch64_layout_frame): Invalidate
	wb_candidate1 and wb_candidate2 if we decided not to use them.

gcc/testsuite/
	* gcc.target/aarch64/shrink_wrap_1.c: New test.
2020-05-28 13:18:13 +01:00
Richard Sandiford
1ccbfffb0f aarch64: Fix segfault in aarch64_expand_epilogue [PR95361]
The stack frame for the function in the testcase consisted of two
SVE save slots.  Both saves had been shrink-wrapped, but for different
blocks, meaning that the stack allocation and deallocation were
separate from the saves themselves.  Before emitting the deallocation,
we tried to attach a REG_CFA_DEF_CFA note to the preceding instruction,
to redefine the CFA in terms of the stack pointer.  But in this case
there was no preceding instruction.

This in practice only happens for SVE because:

(a) We don't try to shrink-wrap wb_candidate* registers even when
    we've decided to treat them as normal saves and restores.
    I have a fix for that.

(b) Even with (a) fixed, we're (almost?) guaranteed to emit
    a stack tie for frames that are 64k or larger, so we end
    up hanging the REG_CFA_DEF_CFA note on that instead.

We should only need to redefine the CFA if it was previously
defined in terms of the frame pointer.  In other cases the CFA
should already be defined in terms of the stack pointer,
so redefining it is unnecessary but usually harmless.

2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR testsuite/95361
	* config/aarch64/aarch64.c (aarch64_expand_epilogue): Assert that
	we have at least some CFI operations when using a frame pointer.
	Only redefine the CFA if we have CFI operations.

gcc/testsuite/
	PR testsuite/95361
	* gcc.target/aarch64/sve/pr95361.c: New test.
2020-05-28 13:18:12 +01:00
Richard Biener
00cd573897 remove obsolete code from SLP invariant costing
This removes handling of !SLP_TREE_VECTYPE from invariant costing.
The single caller guards against this case already.

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

	* tree-vect-slp.c (vect_prologue_cost_for_slp): Remove
	case for !SLP_TREE_VECTYPE.
	(vect_slp_analyze_node_operations): Adjust.
2020-05-28 13:19:41 +02:00
Richard Biener
e31cd607e9 Code generate externals/invariants during the SLP graph walk
This generates vector defs for externals and invariants during the SLP
walk rather than as part of getting vectorized defs when vectorizing
the users.  This is a requirement to make sharing of external/invariant
nodes be reflected in actual code generation.

This temporarily adds a SLP_TREE_VEC_DEFS vector alongside the
SLP_TREE_VEC_STMTS one.  Eventually the latter can go away.

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

	* tree-vectorizer.h (_slp_tree::vec_defs): Add.
	(SLP_TREE_VEC_DEFS): Likewise.
	* tree-vect-slp.c (_slp_tree::_slp_tree): Adjust.
	(_slp_tree::~_slp_tree): Likewise.
	(vect_mask_constant_operand_p): Remove unused function.
	(vect_get_constant_vectors): Rename to...
	(vect_create_constant_vectors): ... this.  Take the
	invariant node as argument and code generate it.  Remove
	dead code, remove temporary asserts.  Pass a NULL stmt_info
	to vect_init_vector.
	(vect_get_slp_defs): Simplify.
	(vect_schedule_slp_instance): Code-generate externals and
	invariants using vect_create_constant_vectors.
2020-05-28 12:25:15 +02:00
Richard Biener
b0aae85bd6 make vect_finish_stmt_generation work w/o stmt_vec_info
This makes the call chain below vec_init_vector happy with a NULL
stmt_vec_info which is used as "context".

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

	* tree-vect-stmts.c (vect_finish_stmt_generation_1):
	Conditionalize stmt_info use, assert the new stmt cannot throw
	when not specified.
	(vect_finish_stmt_generation): Adjust assert.
2020-05-28 12:25:15 +02:00
Richard Biener
09df85393c tree-optimization/95273 - more vectorizable_shift massaging
Covering all bases in vectorizable_shift is hard - this makes sure
to appropriately handle the case of PR95356 without breaking others.

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

	PR tree-optimization/95273
	PR tree-optimization/95356
	* tree-vect-stmts.c (vectorizable_shift): Adjust when and to
	what we set the vector type of the shift operand SLP node
	again.

	* gcc.target/i386/pr95356.c: New testcase.
2020-05-28 11:54:50 +02:00
Andrea Corallo
dd019ef073 arm: Fix unwanted fall-throughs in arm.c
gcc/ChangeLog

2020-05-28  Andrea Corallo  <andrea.corallo@arm.com>

	* config/arm/arm.c (mve_vector_mem_operand): Fix unwanted
	fall-throughs.
2020-05-28 11:29:25 +02:00
Pierre-Marie de Rodat
a634157de1 gcc-changelog: enhance handling of renamings
So far, we expect from a commit that renames a file to contain a
changelog entry only for the new name. For example, after the following
commit:

   $ git move foo bar
   $ git commit

We expect the following changelog:

   * bar: Renamed from foo.

Git does not keep track of renamings, only file deletions and additions.
The display of patches then uses heuristics (with config-dependent
parameters) to try to match deleted and added files in the same commit.
It is thus brittle to rely on this information.

This commit modifies changelog processing so that renames are considered
as a deletion of a file plus an addition of another file. The following
changelog is now expected for the above example:

   * foo: Move...
   * bar: Here.

contrib/

	* gcc-changelog/git_email.py (GitEmail.__init__): Interpret file
	renamings as a file deletion plus a file addition.
	* gcc-changelog/git_repository.py (parse_git_revisions):
	Likewise.
	* gcc-changelog/test_email.py: New testcase.
	* gcc-changelog/test_patches.txt: New testcase.
2020-05-28 11:14:44 +02:00
Martin Liska
48e872db11
Add documentation for missing params.
The patch fixes various issues spotted by check-params-in-docs.py
script. I'm going to install the patch.

gcc/ChangeLog:

	PR web/95380
	* doc/invoke.texi: Add missing params, remove max-once-peeled-insns and
	rename ipcp-unit-growth to ipa-cp-unit-growth.
2020-05-28 11:03:01 +02:00
Martin Liska
467adc05ba
Fix check-params-in-docs.py for --help=param.
contrib/ChangeLog:

	* check-params-in-docs.py: Update to new format
	of help.  Apply flake8 corrections.
2020-05-28 10:36:48 +02:00
Martin Liska
eb78da45ab
mklog: support renaming of files
contrib/ChangeLog:

	* mklog.py: Support renaming of files.
	One needs unidiff 0.6.0+.
	* test_mklog.py: Test it.
2020-05-28 10:27:09 +02:00
liuhongt
4a948703db Fix nonconforming memory_operand for vpmovq{d,w,b}/vpmovd{w,b}/vpmovwb.
According to Intel SDM, VPMOVQB xmm1/m16 {k1}{z}, xmm2 has 16-bit
memory_operand instead of 128-bit one which existed in current
implementation. Also for other vpmov instructions which have
memory_operand narrower than 128bits.

2020-05-25  Hongtao Liu  <hongtao.liu@intel.com>

gcc/ChangeLog

	* config/i386/sse.md (*avx512vl_<code>v2div2qi2_store_1): Rename
	from *avx512vl_<code>v2div2qi_store and refine memory size of
	the pattern.
	(*avx512vl_<code>v2div2qi2_mask_store_1): Ditto.
	(*avx512vl_<code><mode>v4qi2_store_1): Ditto.
	(*avx512vl_<code><mode>v4qi2_mask_store_1): Ditto.
	(*avx512vl_<code><mode>v8qi2_store_1): Ditto.
	(*avx512vl_<code><mode>v8qi2_mask_store_1): Ditto.
	(*avx512vl_<code><mode>v4hi2_store_1): Ditto.
	(*avx512vl_<code><mode>v4hi2_mask_store_1): Ditto.
	(*avx512vl_<code>v2div2hi2_store_1): Ditto.
	(*avx512vl_<code>v2div2hi2_mask_store_1): Ditto.
	(*avx512vl_<code>v2div2si2_store_1): Ditto.
	(*avx512vl_<code>v2div2si2_mask_store_1): Ditto.
	(*avx512f_<code>v8div16qi2_store_1): Ditto.
	(*avx512f_<code>v8div16qi2_mask_store_1): Ditto.
	(*avx512vl_<code>v2div2qi2_store_2): New define_insn_and_split.
	(*avx512vl_<code>v2div2qi2_mask_store_2): Ditto.
	(*avx512vl_<code><mode>v4qi2_store_2): Ditto.
	(*avx512vl_<code><mode>v4qi2_mask_store_2): Ditto.
	(*avx512vl_<code><mode>v8qi2_store_2): Ditto.
	(*avx512vl_<code><mode>v8qi2_mask_store_2): Ditto.
	(*avx512vl_<code><mode>v4hi2_store_2): Ditto.
	(*avx512vl_<code><mode>v4hi2_mask_store_2): Ditto.
	(*avx512vl_<code>v2div2hi2_store_2): Ditto.
	(*avx512vl_<code>v2div2hi2_mask_store_2): Ditto.
	(*avx512vl_<code>v2div2si2_store_2): Ditto.
	(*avx512vl_<code>v2div2si2_mask_store_2): Ditto.
	(*avx512f_<code>v8div16qi2_store_2): Ditto.
	(*avx512f_<code>v8div16qi2_mask_store_2): Ditto.
	* config/i386/i386-builtin-types.def: Adjust builtin type.
	* config/i386/i386-expand.c: Ditto.
	* config/i386/i386-builtin.def: Adjust builtin.
	* config/i386/avx512fintrin.h: Ditto.
	* config/i386/avx512vlbwintrin.h: Ditto.
	* config/i386/avx512vlintrin.h: Ditto.
2020-05-28 16:06:04 +08:00