Commit Graph

171512 Commits

Author SHA1 Message Date
GCC Administrator
222e8cb6ca Daily bump.
From-SVN: r276227
2019-09-28 00:16:24 +00:00
Maciej W. Rozycki
e9085da528 Regenerate configure' scripts for uclinuxfdpiceabi' libtool.m4 update
A change made with r275564 ("[ARM/FDPIC v6 02/24] [ARM] FDPIC: Handle 
arm*-*-uclinuxfdpiceabi in configure scripts") to libtool.m4 has not 
regenerated all the `configure' scripts affected.  Fix it.

	gcc/
	* configure: Regenerate.

	libatomic/
	* configure: Regenerate.

	libbacktrace/
	* configure: Regenerate.

	libcc1/
	* configure: Regenerate.

	libffi/
	* configure: Regenerate.

	libgfortran/
	* configure: Regenerate.

	libgomp/
	* configure: Regenerate.

	libhsail-rt/
	* configure: Regenerate.

	libitm/
	* configure: Regenerate.

	libobjc/
	* configure: Regenerate.

	liboffloadmic/
	* configure: Regenerate.

	libphobos/
	* configure: Regenerate.

	libquadmath/
	* configure: Regenerate.

	libsanitizer/
	* configure: Regenerate.

	libssp/
	* configure: Regenerate.

	libstdc++-v3/
	* configure: Regenerate.

	libvtv/
	* configure: Regenerate.

	lto-plugin/
	* configure: Regenerate.

	zlib/
	* configure: Regenerate.

From-SVN: r276213
2019-09-27 21:24:42 +00:00
Jakub Jelinek
59bc434a33 re PR c++/88203 (assert does not compile with OpenMP's pragma omp parallel for default(none))
PR c++/88203
c-family/
	* c-common.h (c_omp_predefined_variable): Declare.
	* c-omp.c (c_omp_predefined_variable): New function.
	(c_omp_predetermined_sharing): Return OMP_CLAUSE_DEFAULT_SHARED
	for predefined variables.
c/
	* c-parser.c (c_parser_predefined_identifier): New function.
	(c_parser_postfix_expression): Use it.
	(c_parser_omp_variable_list): Parse predefined identifiers.
	* c-typeck.c (c_finish_omp_clauses): Allow predefined variables
	in shared and firstprivate clauses, even when they are predetermined
	shared.
cp/
	* parser.c (cp_parser_omp_var_list_no_open): Parse predefined
	variables.
	* semantics.c (finish_omp_clauses): Allow predefined variables in
	shared and firstprivate clauses, even when they are predetermined
	shared.
	* cp-gimplify.c (cxx_omp_predetermined_sharing_1): Return
	OMP_CLAUSE_DEFAULT_SHARED for predefined variables.
testsuite/
	* c-c++-common/gomp/pr88203-1.c: New test.
	* c-c++-common/gomp/pr88203-2.c: New test.
	* c-c++-common/gomp/pr88203-3.c: New test.

From-SVN: r276212
2019-09-27 22:14:24 +02:00
Jakub Jelinek
00798c5843 re PR middle-end/91920 (ggc 9.2.0 failing openmp compile on ppc64le)
PR middle-end/91920
	* gimplify.c (omp_default_clause): Predetermine DECL_IN_CONSTANT_POOL
	variables as shared.

	* c-c++-common/gomp/pr91920.c: New test.

From-SVN: r276211
2019-09-27 22:13:00 +02:00
Iain Sandoe
576113abdb [Darwin, PPC, Mode Iterators 3/n] Update macho_correct_pic.
Drop the expander and use a mode expander on the define_insn
for macho_correct_pic instead.

gcc/ChangeLog:

2019-09-27  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/darwin.md (@macho_correct_pic_<mode>): New,
	replaces the expander and two define_insn entries.
	(@reload_macho_picbase_<mode>): Update gen_macho_correct_pic
	call.
	* config/rs6000/rs6000.md (builtin_setjmp_receiver): Likewise.

From-SVN: r276196
2019-09-27 19:23:39 +00:00
David Malcolm
26a23d11ed Const-correctness fixes for fibonacci_heap.h
gcc/ChangeLog:
	* fibonacci_heap.h (fibonacci_heap::empty): Make const.
	(fibonacci_heap::nodes): Likewise.
	(fibonacci_heap::min_key): Likewise.
	(fibonacci_heap::min): Likewise.

From-SVN: r276193
2019-09-27 18:24:44 +00:00
Jason Merrill
1a120ec124 constexpr.c (cxx_fold_indirect_ref): Use similar_type_p.
* constexpr.c (cxx_fold_indirect_ref): Use similar_type_p.

Merging the similar_type_p change to the concepts branch broke a cmcstl2
testcase; investigating led me to this small testcase which has always
failed on trunk.

	(cxx_eval_indirect_ref): Likewise.  Improve error location.

From-SVN: r276192
2019-09-27 14:23:10 -04:00
Jason Merrill
c872f1506d cp-tree.h (class iloc_sentinel): New.
* cp-tree.h (class iloc_sentinel): New.

We didn't already have a sentinel for input_location, and while
temp_override would work, it would also happily set input_location to 0,
which breaks things that try to look up the associated filename.

	* decl.c (grokdeclarator, finish_enum_value_list): Use it.
	* mangle.c (mangle_decl_string): Use it.
	* pt.c (perform_typedefs_access_check): Use it.

From-SVN: r276191
2019-09-27 14:19:55 -04:00
David Malcolm
975d043ff6 Make cgraph_node::get_fun const
gcc/ChangeLog:
	* cgraph.c (cgraph_node::get_fun): Make const.
	* cgraph.h (cgraph_node::get_fun): Likewise.

From-SVN: r276190
2019-09-27 18:12:56 +00:00
Ian Lance Taylor
37ed4c3269 compiler: don't read known type, simplify Import::finalize_methods
With the current export format, if we already know the type, we don't
    have to read and parse the definition.
    
    We only use the finalizer in Import::finalize_methods, so make it a
    local variable.  To match Finalize_methods::type, only put struct
    types into real_for_named.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/197700

From-SVN: r276188
2019-09-27 17:51:43 +00:00
Ian Lance Taylor
51c3b7c6ec compiler: only check whether struct or array types are big
Fetching the size of a type typically involves a hash table lookup,
    and is generally non-trivial.  The escape analysis code calls is_big
    more than one might expect.  So only fetch the size if we need it.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/197699

From-SVN: r276187
2019-09-27 17:34:58 +00:00
Ian Lance Taylor
df43545684 compiler: fix brace formatting
Just happened to notice this one.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/197698

From-SVN: r276186
2019-09-27 17:32:27 +00:00
Jonathan Wakely
f7a3a38227 PR libstdc++/91910 fix data race in Debug Mode destructors
Fix data race when _Safe_iterator_base::_M_detach() runs concurrently with
the _Safe_container_base destructor.

	PR libstdc++/91910
	* src/c++11/debug.cc (_Safe_iterator_base::_M_detach()): Load pointer
	atomically and lock the mutex before accessing the sequence.
	(_Safe_local_iterator_base::_M_detach()): Likewise.
	(_Safe_iterator_base::_M_reset()): Clear _M_sequence atomically.

From-SVN: r276184
2019-09-27 17:20:40 +01:00
Jakub Jelinek
88e032f105 re PR target/91919 (arm-linux-eabi ICE with building kernel)
PR target/91919
	* config/arm/arm.md (<US>mlal): Remove SE wrappers around operands
	of SImode MULT.

	* gcc.c-torture/compile/pr91919.c: New.test

From-SVN: r276183
2019-09-27 17:48:51 +02:00
Richard Biener
29f2697886 tree-vectorizer.h (_stmt_vec_info::reduc_fn): New.
2019-09-27  Richard Biener  <rguenther@suse.de>

	* tree-vectorizer.h (_stmt_vec_info::reduc_fn): New.
	(STMT_VINFO_REDUC_FN): Likewise.
	* tree-vectorizer.c (vec_info::new_stmt_vec_info): Initialize
	STMT_VINFO_REDUC_FN.
	* tree-vect-loop.c (vect_is_simple_reduction): Fix STMT_VINFO_REDUC_IDX
	for condition reductions.
	(vect_create_epilog_for_reduction): Compute all required state
	from the stmt to be vectorized.
	(vectorizable_reduction): Simplify vect_create_epilog_for_reduction
	invocation and remove then dead code.  For single def-use chains
	record only a single vector stmt.

From-SVN: r276180
2019-09-27 13:19:58 +00:00
Manfred Schwarb
67cb34efd8 associate_48.f90: Fix a dg directive.
2019-09-27  Manfred Schwarb  <manfred99@gmx.ch>

        * gfortran.dg/associate_48.f90: Fix a dg directive.
        * gfortran.dg/auto_in_equiv_1.f90: Ditto.
        * gfortran.dg/auto_in_equiv_2.f90: Ditto.
        * gfortran.dg/lto/pr87689_0.f: Ditto.

From-SVN: r276179
2019-09-27 14:53:23 +02:00
Jakub Jelinek
2ae8a2c942 re PR tree-optimization/91885 (ICE when compiling SPEC 2017 blender benchmark with -O3 -fprofile-generate)
PR tree-optimization/91885
	* gcc.dg/pr91885.c (__int64_t): Change from long to long long.
	(__uint64_t): Change from unsigned long to unsigned long long.

From-SVN: r276178
2019-09-27 12:28:48 +02:00
Richard Sandiford
6d4d616a78 [AArch64] Split built-in function codes into major and minor codes
It was easier to add the SVE ACLE support without enumerating every
function at build time.  This in turn meant that it was easier if the
SVE builtins occupied a distinct numberspace from the existing AArch64
ones, which *are* enumerated at build time.  This patch therefore
divides the built-in functions codes into "major" and "minor" codes.
At present the major code is just "general", but the SVE patch will add
"SVE" as well.

Also, it was convenient to put the SVE ACLE support in its own file,
so the patch makes aarch64.c provide the frontline target hooks directly,
forwarding to the other files for the real work.

The reason for organising the files this way is that aarch64.c needs
to define the target hook macros whatever happens, and having aarch64.c
macros forward to aarch64-builtins.c functions and aarch64-bulitins.c
functions forward to the SVE file seemed a bit indirect.  Doing things
the way the patch does them puts aarch64-builtins.c and the SVE code on
more of an equal footing.

The aarch64_(general_)gimple_fold_builtin change is mostly just
reindentation.

2019-09-27  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/aarch64/aarch64-protos.h (aarch64_builtin_class): New enum.
	(AARCH64_BUILTIN_SHIFT, AARCH64_BUILTIN_CLASS): New constants.
	(aarch64_gimple_fold_builtin, aarch64_mangle_builtin_type)
	(aarch64_fold_builtin, aarch64_init_builtins, aarch64_expand_builtin):
	(aarch64_builtin_decl, aarch64_builtin_rsqrt): Delete.
	(aarch64_general_mangle_builtin_type, aarch64_general_init_builtins):
	(aarch64_general_fold_builtin, aarch64_general_gimple_fold_builtin):
	(aarch64_general_expand_builtin, aarch64_general_builtin_decl):
	(aarch64_general_builtin_rsqrt): Declare.
	* config/aarch64/aarch64-builtins.c (aarch64_general_add_builtin):
	New function.
	(aarch64_mangle_builtin_type): Rename to...
	(aarch64_general_mangle_builtin_type): ...this.
	(aarch64_init_fcmla_laneq_builtins, aarch64_init_simd_builtins)
	(aarch64_init_crc32_builtins, aarch64_init_builtin_rsqrt)
	(aarch64_init_pauth_hint_builtins, aarch64_init_tme_builtins): Use
	aarch64_general_add_builtin instead of add_builtin_function.
	(aarch64_init_builtins): Rename to...
	(aarch64_general_init_builtins): ...this.  Use
	aarch64_general_add_builtin instead of add_builtin_function.
	(aarch64_builtin_decl): Rename to...
	(aarch64_general_builtin_decl): ...this and remove the unused
	arguments.
	(aarch64_expand_builtin): Rename to...
	(aarch64_general_expand_builtin): ...this and remove the unused
	arguments.
	(aarch64_builtin_rsqrt): Rename to...
	(aarch64_general_builtin_rsqrt): ...this.
	(aarch64_fold_builtin): Rename to...
	(aarch64_general_fold_builtin): ...this.  Take the function subcode
	and return type as arguments.  Remove the "ignored" argument.
	(aarch64_gimple_fold_builtin): Rename to...
	(aarch64_general_gimple_fold_builtin): ...this.  Take the function
	subcode and gcall as arguments, and return the new function call.
	* config/aarch64/aarch64.c (aarch64_init_builtins)
	(aarch64_fold_builtin, aarch64_gimple_fold_builtin)
	(aarch64_expand_builtin, aarch64_builtin_decl): New functions.
	(aarch64_builtin_reciprocal): Call aarch64_general_builtin_rsqrt
	instead of aarch64_builtin_rsqrt.
	(aarch64_mangle_type): Call aarch64_general_mangle_builtin_type
	instead of aarch64_mangle_builtin_type.

From-SVN: r276177
2019-09-27 08:47:21 +00:00
Richard Sandiford
c6447c2014 [C][C++] Allow targets to check calls to BUILT_IN_MD functions
For SVE, we'd like the frontends to check calls to target-specific
built-in functions in the same way that they already do for "normal"
builtins.  This patch adds a target hook for that and extends
check_builtin_function_arguments accordingly.

A slight complication is that when TARGET_RESOLVE_OVERLOADED_BUILTIN
has resolved an overload, it can use build_function_call_vec to build
the call to the underlying non-overloaded function decl.  This in
turn coerces the arguments to the function type and then calls
check_builtin_function_arguments to check the final call.  If the
target does find a problem in this final call, it can be useful
to refer to the original overloaded function decl in diagnostics,
since that's what the user wrote.

The patch therefore passes the original decl as a final optional
parameter to build_function_call_vec.

2019-09-27  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* target.def (check_builtin_call): New target hook.
	* doc/tm.texi.in (TARGET_CHECK_BUILTIN_CALL): New @hook.
	* doc/tm.texi: Regenerate.

gcc/c-family/
	* c-common.h (build_function_call_vec): Take the original
	function decl as an optional final parameter.
	(check_builtin_function_arguments): Take the original function decl.
	* c-common.c (check_builtin_function_arguments): Likewise.
	Handle all built-in functions, not just BUILT_IN_NORMAL ones.
	Use targetm.check_builtin_call to check BUILT_IN_MD functions.

gcc/c/
	* c-typeck.c (build_function_call_vec): Take the original function
	decl as an optional final parameter.  Pass all built-in calls to
	check_builtin_function_arguments.

gcc/cp/
	* cp-tree.h (build_cxx_call): Take the original function decl
	as an optional final parameter.
	(cp_build_function_call_vec): Likewise.
	* call.c (build_cxx_call): Likewise.  Pass all built-in calls to
	check_builtin_function_arguments.
	* typeck.c (build_function_call_vec): Take the original function
	decl as an optional final parameter and pass it to
	cp_build_function_call_vec.
	(cp_build_function_call_vec): Take the original function
	decl as an optional final parameter and pass it to build_cxx_call.

From-SVN: r276176
2019-09-27 08:39:16 +00:00
Richard Sandiford
18908a56e1 Fix reduc_index==1 handling for COND_REDUCTION (PR91909)
The then/else order of the VEC_COND_EXPRs created by
vect_create_epilog_for_reduction meeds to line up with the
main VEC_COND_EXPR.

2019-09-27  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	PR tree-optimization/91909
	* tree-vect-loop.c (vect_create_epilog_for_reduction): Take a
	reduc_index parameter.  When handling COND_REDUCTION, make sure
	that the reduction phi operand is in the correct arm of the
	VEC_COND_EXPR.
	(vectorizable_reduction): Pass reduc_index to the above.

From-SVN: r276175
2019-09-27 08:21:37 +00:00
Yuliang Wang
76bb5af63d [AArch64][SVE2] Shift-Right Accumulate combine patterns
This patch adds combining support for SVE2's shift-right accumulate
instructions.

2019-09-27  Yuliang Wang  <yuliang.wang@arm.com>

gcc/
	* config/aarch64/aarch64-sve2.md (aarch64_sve2_sra<mode>):
	New combine pattern.

gcc/testsuite/
	* gcc.target/aarch64/sve2/shracc_1.c: New test.

From-SVN: r276174
2019-09-27 08:10:30 +00:00
Alexandre Oliva
639a28ba6e set DECL_SIZE_UNIT for zero-sized fields
Zero-sized fields do not get processed by finish_record_type: they're
removed from the field list before and reinserted after, so their
DECL_SIZE_UNIT remains unset, causing the translation of assignment
statements with use_memset_p, in quite unusual circumstances, to use a
NULL_TREE as the memset length.  This patch sets DECL_SIZE_UNIT for
the zero-sized fields, that don't go through language-independent
layout, in language-specific layout.


for  gcc/ada/ChangeLog

	* gcc-interface/decl.c (components_to_record): Set
	DECL_SIZE_UNIT for zero-sized fields.

From-SVN: r276173
2019-09-27 01:59:55 +00:00
GCC Administrator
09704140c7 Daily bump.
From-SVN: r276172
2019-09-27 00:16:20 +00:00
Ian Lance Taylor
5fe5f75fcf re PR libbacktrace/91908 (New libbacktrace tests fail to build)
PR libbacktrace/91908
	* pecoff.c (backtrace_initialize): Explicitly cast unchecked
	__sync_bool_compare_and_swap to void.
	* xcoff.c (backtrace_initialize): Likewise.

From-SVN: r276168
2019-09-26 22:19:47 +00:00
Eric Botcazou
0900e29cdb charset.c (UCS_LIMIT): New macro.
* charset.c (UCS_LIMIT): New macro.
	(ucn_valid_in_identifier): Use it instead of a hardcoded constant.
	(_cpp_valid_ucn): Issue a pedantic warning for UCNs larger than
	UCS_LIMIT outside of identifiers in C and in C++2a or later.

From-SVN: r276167
2019-09-26 21:43:51 +00:00
Max Filippov
d7326aaf20 xtensa: fix PR target/91880
Xtensa hwloop_optimize segfaults when zero overhead loop is about to be
inserted as the first instruction of the function.
Insert zero overhead loop instruction into new basic block before the
loop when basic block that precedes the loop is empty.

2019-09-26  Max Filippov  <jcmvbkbc@gmail.com>
gcc/
	* config/xtensa/xtensa.c (hwloop_optimize): Insert zero overhead
	loop instruction into new basic block before the loop when basic
	block that precedes the loop is empty.

gcc/testsuite/
	* gcc.target/xtensa/pr91880.c: New test case.
	* gcc.target/xtensa/xtensa.exp: New test suite.

From-SVN: r276166
2019-09-26 20:51:27 +00:00
Jakub Jelinek
25b45c7c6c function.c (gimplify_parameters): Use build_clobber function.
* function.c (gimplify_parameters): Use build_clobber function.
	* tree-ssa.c (execute_update_addresses_taken): Likewise.
	* tree-inline.c (expand_call_inline): Likewise.
	* tree-sra.c (clobber_subtree): Likewise.
	* tree-ssa-ccp.c (insert_clobber_before_stack_restore): Likewise.
	* omp-low.c (lower_rec_simd_input_clauses, lower_rec_input_clauses,
	lower_omp_single, lower_depend_clauses, lower_omp_taskreg,
	lower_omp_target): Likewise.
	* omp-expand.c (expand_omp_for_generic): Likewise.
	* omp-offload.c (ompdevlow_adjust_simt_enter): Likewise.

From-SVN: r276165
2019-09-26 22:03:12 +02:00
Alessandro Fanfarillo
c78d342520 CO_BROADCAST for derived types with allocatable components
From-SVN: r276164
2019-09-26 13:59:00 -06:00
Will Schmidt
9ab2f9aed0 rs6000-builtin.def: (LVSL...
[gcc]

2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
	* config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX,
	LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI,
	LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI,
	LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI,
	LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI,
	LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF,
	LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI,
	LD_ELEMREV_V16QI): Use the PURE attribute.

[testsuite]

2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
	* gcc.target/powerpc/pure-builtin-redundant-load.c:  New.

From-SVN: r276163
2019-09-26 19:19:47 +00:00
Will Schmidt
be193fa7c9 rs6000-builtin.def: (LVSL...
[gcc]

2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
	* config/rs6000/rs6000-builtin.def: (LVSL, LVSR, LVEBX, LVEHX,
	LVEWX, LVXL, LVXL_V2DF, LVXL_V2DI, LVXL_V4SF, LVXL_V4SI, LVXL_V8HI,
	LVXL_V16QI, LVX, LVX_V1TI, LVX_V2DF, LVX_V2DI, LVX_V4SF, LVX_V4SI,
	LVX_V8HI, LVX_V16QI, LVLX, LVLXL, LVRX, LVRXL, LXSDX, LXVD2X_V1TI,
	LXVD2X_V2DF, LXVD2X_V2DI, LXVDSX, LXVW4X_V4SF, LXVW4X_V4SI,
	LXVW4X_V8HI, LXVW4X_V16QI, LD_ELEMREV_V1TI, LD_ELEMREV_V2DF,
	LD_ELEMREV_V2DI, LD_ELEMREV_V4SF, LD_ELEMREV_V4SI, LD_ELEMREV_V8HI,
	LD_ELEMREV_V16QI): Use the PURE attribute.

[testsuite]

2019-09-26  Will Schmidt <will_schmidt@vnet.ibm.com>
	* gcc.target/powerpc/pure-builtin-redundant-load.c:  New.

From-SVN: r276162
2019-09-26 19:19:10 +00:00
Iain Sandoe
4fc1d2629a [Darwin, PPC, Mode Iterators 2/n] Eliminate picbase expanders.
We can use the mode iterators directly with an @pattern to avoid the
need for an expander that was only there to pass the mode through.

gcc/ChangeLog:

2019-09-26  Iain Sandoe  <iain@sandoe.co.uk>

	* config/rs6000/darwin.md: Replace the expanders for
	load_macho_picbase and reload_macho_picbase with use of '@'
	in their respective define_insns.
	(nonlocal_goto_receiver): Pass Pmode to gen_reload_macho_picbase.
	* config/rs6000/rs6000-logue.c (rs6000_emit_prologue): Pass
	Pmode to gen_load_macho_picbase.
	* config/rs6000/rs6000.md: Likewise.

From-SVN: r276159
2019-09-26 18:50:55 +00:00
Richard Biener
0bfc204142 re PR tree-optimization/91896 (ICE in vect_get_vec_def_for_stmt_copy, at tree-vect-stmts.c:1687)
2019-09-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/91896
	* tree-vect-loop.c (vectorizable_reduction): The single
	def-use cycle optimization cannot apply when there's more
	than one pattern stmt involved.

	* gcc.dg/torture/pr91896.c: New testcase.

From-SVN: r276158
2019-09-26 16:54:51 +00:00
Richard Biener
1b4dbccc1f tree-vect-loop.c (vect_analyze_loop_operations): Analyze loop-closed PHIs that are vect_internal_def.
2019-09-26  Richard Biener  <rguenther@suse.de>

	* tree-vect-loop.c (vect_analyze_loop_operations): Analyze
	loop-closed PHIs that are vect_internal_def.
	(vect_create_epilog_for_reduction): Exit early for nested cycles.
	Simplify.
	(vectorizable_lc_phi): New.
	* tree-vect-stmts.c (vect_analyze_stmt): Call vectorize_lc_phi.
	(vect_transform_stmt): Likewise.
	* tree-vectorizer.h (stmt_vec_info_type): Add lc_phi_info_type.
	(vectorizable_lc_phi): Declare.

From-SVN: r276157
2019-09-26 16:52:50 +00:00
Martin Sebor
26cdf7bd5e PR tree-optimization/91914 - Invalid strlen folding for offset into struct
gcc/testsuite/CHangeLog:
	* gcc.dg/strlenopt-79.c: New test.

From-SVN: r276156
2019-09-26 10:17:22 -06:00
Jonathan Wakely
c9fb0a85b6 Define std::to_array for Debug Mode
* include/debug/array (to_array): Define for debug mode.

From-SVN: r276155
2019-09-26 17:08:44 +01:00
Jonathan Wakely
7a9942f521 Implement C++20 constexpr changes to std::pair (P1032R1)
* include/bits/stl_pair.h (pair): Add _GLIBCXX20_CONSTEXPR to
	piecewise construction constructor, assignment operators, and swap.
	* include/std/tuple (pair::pair(piecewise_construct_t, tuple, tuple)):
	Add _GLIBCXX20_CONSTEXPR.
	(pair::pair(tuple, tuple, _Index_tuple, _Index_tuple)): Likewise.
	* testsuite/20_util/pair/constexpr_assign.cc: New test.
	* testsuite/20_util/pair/constexpr_swap.cc: New test.

From-SVN: r276154
2019-09-26 17:08:39 +01:00
Jonathan Wakely
d5f7e04923 Fix array index error in address_v6 comparisons
* include/experimental/internet (operator==, operator<): Fix loop
	condition to avoid reading past the end of the array.

From-SVN: r276153
2019-09-26 17:08:33 +01:00
Jonathan Wakely
8eb60b2f22 Remove include directives for deleted Profile Mode headers
* include/std/array: Remove references to profile mode.
	* include/std/bitset: Likewise.
	* include/std/deque: Likewise.
	* include/std/forward_list: Likewise.
	* include/std/list: Likewise.
	* include/std/map: Likewise.
	* include/std/set: Likewise.
	* include/std/unordered_map: Likewise.
	* include/std/unordered_set: Likewise.
	* include/std/vector: Likewise.
	* testsuite/17_intro/headers/c++1998/profile_mode.cc: New test.
	* testsuite/17_intro/headers/c++2011/profile_mode.cc: New test.

From-SVN: r276152
2019-09-26 17:08:24 +01:00
Arnaud Charlet
25a0f9cfae * osint.adb (OS_Time_To_GNAT_Time): Remove dependency on To_C/To_Ada
From-SVN: r276151
2019-09-26 16:10:46 +02:00
Richard Biener
9593e8e5e3 tree-vect-loop.c (vect_analyze_loop_operations): Also call vectorizable_reduction for vect_double_reduction_def.
2019-09-26  Richard Biener  <rguenther@suse.de>

	* tree-vect-loop.c (vect_analyze_loop_operations): Also call
	vectorizable_reduction for vect_double_reduction_def.
	(vect_transform_loop): Likewise.
	(vect_create_epilog_for_reduction): Move double-reduction
	PHI creation and preheader argument setting of PHIs ...
	(vectorizable_reduction): ... here.  Also process
	vect_double_reduction_def PHIs, creating the vectorized
	PHI nodes, remembering the scalar adjustment computed for
	the epilogue in STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT.
	Remember the original reduction code in STMT_VINFO_REDUC_CODE.
	* tree-vectorizer.c (vec_info::new_stmt_vec_info):
	Initialize STMT_VINFO_REDUC_CODE.
	* tree-vectorizer.h (_stmt_vec_info::reduc_epilogue_adjustment): New.
	(_stmt_vec_info::reduc_code): Likewise.
	(STMT_VINFO_REDUC_EPILOGUE_ADJUSTMENT): Likewise.
	(STMT_VINFO_REDUC_CODE): Likewise.

From-SVN: r276150
2019-09-26 13:52:45 +00:00
Richard Sandiford
5fdd1d3352 Add myself as an aarch64 maintainer
2019-09-26  Richard Sandiford  <richard.sandiford@arm.com>

	* MAINTAINERS: Add myself as an aarch64 maintainer.

From-SVN: r276149
2019-09-26 10:54:50 +00:00
Matt Turner
6fdbe41963 driver: Also prune joined switches with negation
When -march=native is passed to host_detect_local_cpu to the backend,
it overrides all command lines after it.  That means

$ gcc -march=native -march=armv8-a

is treated as

$ gcc -march=armv8-a -march=native

Prune joined switches with Negative and RejectNegative to allow
-march=armv8-a to override previous -march=native on command-line.

This is the same fix as was applied for i386 in SVN revision 269164 but for
aarch64 and arm.

2019-09-26  Matt Turner  <mattst88@gmail.com>

	PR driver/69471
	* config/aarch64/aarch64.opt (march=): Add Negative(march=).
	(mtune=): Add Negative(mtune=).
	(mcpu=): Add Negative(mcpu=).
	* config/arm/arm.opt: Likewise.

From-SVN: r276148
2019-09-26 10:52:42 +00:00
Kyrylo Tkachov
2b5b5e2414 [arm] Implement DImode SIMD32 intrinsics
This patch implements some more SIMD32, but these ones have a DImode result+addend.
Apart from that there's nothing too exciting about them.

Bootstrapped and tested on arm-none-linux-gnueabihf.

	* config/arm/arm.md (arm_<simd32_op>): New define_insn.
	* config/arm/arm_acle.h (__smlald, __smlaldx, __smlsld, __smlsldx):
	Define.
	* config/arm/arm_acle.h: Define builtins for the above.
	* config/arm/iterators.md (SIMD32_DIMODE): New int_iterator.
	(simd32_op): Handle the above.
	* config/arm/unspecs.md: Define unspecs for the above.

	* gcc.target/arm/acle/simd32.c: Update test.

From-SVN: r276147
2019-09-26 10:48:02 +00:00
Kyrylo Tkachov
53cd0ac643 [arm] Implement non-GE-setting SIMD32 intrinsics
This patch is part of a series to implement the SIMD32 ACLE intrinsics [1].
The interesting parts implementation-wise involve adding support for setting and reading
the Q bit for saturation and the GE-bits for the packed SIMD instructions.
That will come in a later patch.

For now, this patch implements the other intrinsics that don't need anything special ;
just a mapping from arm_acle.h function to builtin to RTL expander+unspec.

I've compressed as many as I could with iterators so that we end up needing only 3
new define_insns.

Bootstrapped and tested on arm-none-linux-gnueabihf.

[1] https://developer.arm.com/docs/101028/latest/data-processing-intrinsics

	* config/arm/arm.md (arm_<simd32_op>): New define_insn.
	(arm_<sup>xtb16): Likewise.
	(arm_usada8): Likewise.
	* config/arm/arm_acle.h (__qadd8, __qsub8, __shadd8, __shsub8,
	__uhadd8, __uhsub8, __uqadd8, __uqsub8, __qadd16, __qasx, __qsax,
	__qsub16, __shadd16, __shasx, __shsax, __shsub16, __uhadd16, __uhasx,
	__uhsax, __uhsub16, __uqadd16, __uqasx, __uqsax, __uqsub16, __sxtab16,
	__sxtb16, __uxtab16, __uxtb16): Define.
	* config/arm/arm_acle_builtins.def: Define builtins for the above.
	* config/arm/unspecs.md: Define unspecs for the above.
	* config/arm/iterators.md (SIMD32_NOGE_BINOP): New int_iterator.
	(USXTB16): Likewise.
	(simd32_op): New int_attribute.
	(sup): Handle UNSPEC_SXTB16, UNSPEC_UXTB16.
	* doc/sourcebuild.exp (arm_simd32_ok): Document.

	* lib/target-supports.exp
	(check_effective_target_arm_simd32_ok_nocache): New procedure.
	(check_effective_target_arm_simd32_ok): Likewise.
	(add_options_for_arm_simd32): Likewise.
	* gcc.target/arm/acle/simd32.c: New test.

From-SVN: r276146
2019-09-26 10:46:14 +00:00
Richard Sandiford
1275a541a5 [arm] Update FP16 tests
My recent assemble_real patch (r275873) meant that we now output
negative FP16 constants in the same way as we'd output an integer
subreg of them.  This patch updates gcc.target/arm/fp16-* accordingly.

2019-09-26  Richard Sandiford  <richard.sandiford@arm.com>

gcc/testsuite/
	* gcc.target/arm/fp16-compile-alt-3.c: Expect (__fp16) -2.0
	to be written as a negative short rather than a positive one.
	* gcc.target/arm/fp16-compile-ieee-3.c: Likewise.

From-SVN: r276145
2019-09-26 10:43:09 +00:00
Martin Jambor
e2b1923b8d [PATCH] Fix quoting in a call to internal_error
2019-09-26  Martin Jambor  <mjambor@suse.cz>

	* ipa-sra.c (verify_splitting_accesses): Fix quoting in a call to
	internal_error.

From-SVN: r276144
2019-09-26 12:39:48 +02:00
Martin Jambor
581b519f03 [PATCH] Fix continue condition in IPA-SRA's process_scan_results
2019-09-26  Martin Jambor  <mjambor@suse.cz>

	* ipa-sra.c (process_scan_results): Fix continue condition.

From-SVN: r276143
2019-09-26 12:32:45 +02:00
Kyrylo Tkachov
16b17446df Add myself as aarch64 port maintainer
* MAINTAINERS: Add myself as aarch64 maintainer.

From-SVN: r276142
2019-09-26 10:10:17 +00:00
Martin Liska
704bc4bb36 Add TODO_update_ssa for SLP BB vectorization (PR tree-optimization/91885).
2019-09-26  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/91885
	* tree-vectorizer.c (try_vectorize_loop_1):
	Add TODO_update_ssa_only_virtuals similarly to what slp
	pass does.
2019-09-26  Martin Liska  <mliska@suse.cz>

	PR tree-optimization/91885
	* gcc.dg/pr91885.c: New test.

From-SVN: r276141
2019-09-26 07:40:09 +00:00
Richard Sandiford
835d50c66a [AArch64] Fix cost of (plus ... (const_int -C))
The PLUS handling in aarch64_rtx_costs only checked for nonnegative
constants, meaning that simple immediate subtractions like:

  (set (reg R1) (plus (reg R2) (const_int -8)))

had a cost of two instructions.

2019-09-26  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* config/aarch64/aarch64.c (aarch64_rtx_costs): Use
	aarch64_plus_immediate rather than aarch64_uimm12_shift
	to test for valid PLUS immediates.

From-SVN: r276140
2019-09-26 07:38:21 +00:00