Commit Graph

172486 Commits

Author SHA1 Message Date
Claudiu Zissulescu
4d9329654c [ARC] Update mea option documentation
Update -mea option documentation.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.opt (mea): Update help string.
	* doc/invoke.texi(ARC): Update mea option info.

From-SVN: r277884
2019-11-06 14:31:32 +01:00
Claudiu Zissulescu
cca18f3bd5 [ARC] Cleanup sign/zero extend patterns
Clean up sign/zero extend patterns.

gcc/
xxxx-xx-xx  Claudiu Zissulescu  <claziss@synopsys.com>

	* config/arc/arc.md (zero_extendqihi2_i): Cleanup pattern.
	(zero_extendqisi2_ac): Likewise.
	(zero_extendhisi2_i): Likewise.
	(extendqihi2_i): Likewise.
	(extendqisi2_ac): Likewise.
	(extendhisi2_i): Likewise.

From-SVN: r277883
2019-11-06 14:31:07 +01:00
Richard Biener
06af1f1a0d tree-vect-loop.c (vectorizable_reduction): Remember reduction PHI.
2019-11-06  Richard Biener  <rguenther@suse.de>

	* tree-vect-loop.c (vectorizable_reduction): Remember reduction
	PHI.  Use STMT_VINFO_REDUC_IDX to skip the reduction operand.
	Simplify single_defuse_cycle condition.

From-SVN: r277882
2019-11-06 12:56:42 +00:00
Richard Sandiford
feba3d8838 Use scan-tree-dump instead of scan-tree-dump-times for some vect tests
With later patches, we're able to vectorise the epilogues of these tests
on AArch64 and so get two instances of "vectorizing stmts using SLP".
Although it would be possible with a bit of effort to predict when
this happens, it doesn't seem important whether we get 1 vs. 2
occurrences.  All that matters is zero vs. nonzero.

2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/testsuite/
	* gcc.dg/vect/slp-9.c: Use scan-tree-dump rather than
	scan-tree-dump-times.
	* gcc.dg/vect/slp-widen-mult-s16.c: Likewise.
	* gcc.dg/vect/slp-widen-mult-u8.c: Likewise.

From-SVN: r277881
2019-11-06 12:31:19 +00:00
Richard Sandiford
8ec5b16a9a Check the VF is small enough for an epilogue loop
The number of iterations of an epilogue loop is always smaller than the
VF of the main loop.  vect_analyze_loop_costing was taking this into
account when deciding whether the loop is cheap enough to vectorise,
but that has no effect with the unlimited cost model.  We need to use
a separate check for correctness as well.

This can happen if the sizes returned by autovectorize_vector_sizes
happen to be out of order, e.g. because the target prefers smaller
vectors.  It can also happen with later patches if two vectorisation
attempts happen to end up with the same VF.

2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vect_analyze_loop_2): When vectorizing an
	epilogue loop, make sure that the VF is small enough or that
	the epilogue loop can be fully-masked.

From-SVN: r277880
2019-11-06 12:29:47 +00:00
Richard Sandiford
72d6aeecd9 Restructure vect_analyze_loop
Once vect_analyze_loop has found a valid loop_vec_info X, we carry
on searching for alternatives if (1) X doesn't satisfy simdlen or
(2) we want to vectorize the epilogue of X.  I have a patch that
optionally adds a third reason: we want to see if there are cheaper
alternatives to X.

This patch restructures vect_analyze_loop so that it's easier
to add more reasons for continuing.  There's supposed to be no
behavioural change.

If we wanted to, we could allow vectorisation of epilogues once
loop->simdlen has been reached by changing "loop->simdlen" to
"simdlen" in the new vect_epilogues condition.  That should be
a separate change though.

2019-11-06  Richard Sandiford  <richard.sandiford@arm.com>

gcc/
	* tree-vect-loop.c (vect_analyze_loop): Break out of the main
	loop when we've finished, rather than returning directly from
	the loop.  Use a local variable to track whether we're still
	searching for the preferred simdlen.  Make vect_epilogues
	record whether the next iteration should try to treat the
	loop as an epilogue.

From-SVN: r277879
2019-11-06 12:29:27 +00:00
Vineet Gupta
756b23a81c [PATCH] [ARC] Add builtins for identifying floating point support
Currently for hard float we need to check for
 __ARC_FPU_SP__ || __ARC_FPU_DP__ and for soft float inverse of that.
So define single convenience macros for either cases.

gcc/
xxxx-xx-xx  Vineet Gupta  <vgupta@synopsyscom>

	* config/arc/arc-c.c (arc_cpu_cpp_builtins): Add
          __arc_hard_float__, __ARC_HARD_FLOAT__,
          __arc_soft_float__, __ARC_SOFT_FLOAT__

From-SVN: r277878
2019-11-06 13:28:25 +01:00
Andre Vieira
2e7a4f579b [vect] PR92317: fix skip_epilogue creation for epilogues
gcc/ChangeLog:
2019-11-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	PR tree-optimization/92317
	* tree-vect-loop-manip.c (slpeel_update_phi_nodes_for_guard2): Also
	update phi's with constant phi arguments.

gcc/testsuite/ChangeLog:
2019-11-06  Andre Vieira  <andre.simoesdiasvieira@arm.com>

	PR tree-optimization/92317
	* gcc/testsuite/g++.dg/opt/pr92317.C: New test.

From-SVN: r277877
2019-11-06 11:22:35 +00:00
Eric Botcazou
3cf3da88be introduce -fcallgraph-info option
This was first submitted many years ago
https://gcc.gnu.org/ml/gcc-patches/2010-10/msg02468.html

The command line option -fcallgraph-info is added and makes the
compiler generate another output file (xxx.ci) for each compilation
unit (or LTO partitoin), which is a valid VCG file (you can launch
your favorite VCG viewer on it unmodified) and contains the "final"
callgraph of the unit.  "final" is a bit of a misnomer as this is
actually the callgraph at RTL expansion time, but since most
high-level optimizations are done at the Tree level and RTL doesn't
usually fiddle with calls, it's final in almost all cases.  Moreover,
the nodes can be decorated with additional info: -fcallgraph-info=su
adds stack usage info and -fcallgraph-info=da dynamic allocation info.


for  gcc/ChangeLog
From  Eric Botcazou  <ebotcazou@adacore.com>, Alexandre Oliva  <oliva@adacore.com>

	* common.opt (-fcallgraph-info[=]): New option.
	* doc/invoke.texi (Developer options): Document it.
	* opts.c (common_handle_option): Handle it.
	* builtins.c (expand_builtin_alloca): Record allocation if
	-fcallgraph-info=da.
	* calls.c (expand_call): If -fcallgraph-info, record the call.
	(emit_library_call_value_1): Likewise.
	* flag-types.h (enum callgraph_info_type): New type.
	* explow.c: Include stringpool.h.
	(set_stack_check_libfunc): Set SET_SYMBOL_REF_DECL on the symbol.
	* function.c (allocate_stack_usage_info): New.
	(allocate_struct_function): Call it for -fcallgraph-info.
	(prepare_function_start): Call it otherwise.
	(record_final_call, record_dynamic_alloc): New.
	* function.h (struct callinfo_callee): New.
	(CALLEE_FROM_CGRAPH_P): New.
	(struct callinfo_dalloc): New.
	(struct stack_usage): Add callees and dallocs.
	(record_final_call, record_dynamic_alloc): Declare.
	* gimplify.c (gimplify_decl_expr): Record dynamically-allocated
	object if -fcallgraph-info=da.
	* optabs-libfuncs.c (build_libfunc_function): Keep SYMBOL_REF_DECL.
	* print-tree.h (print_decl_identifier): Declare.
	(PRINT_DECL_ORIGIN, PRINT_DECL_NAME, PRINT_DECL_UNIQUE_NAME): New.
	* print-tree.c: Include print-tree.h.
	(print_decl_identifier): New function.
	* toplev.c: Include print-tree.h.
	(callgraph_info_file): New global variable.
	(callgraph_info_external_printed): Likewise.
	(output_stack_usage): Rename to...
	(output_stack_usage_1): ... this.  Make it static, add cf
	parameter.  If -fcallgraph-info=su, print stack usage to cf.
	If -fstack-usage, use print_decl_identifier for
	pretty-printing.
	(INDIRECT_CALL_NAME): New.
	(dump_final_node_vcg_start): New.
	(dump_final_callee_vcg, dump_final_node_vcg): New.
	(output_stack_usage): New.
	(lang_dependent_init): Open and start file if
	-fcallgraph-info.  Allocated callgraph_info_external_printed.
	(finalize): If callgraph_info_file is not null, finish it,
	close it, and release callgraph_info_external_printed.

for  gcc/ada/ChangeLog

	* gcc-interface/misc.c (callgraph_info_file): Delete.

Co-Authored-By: Alexandre Oliva <oliva@adacore.com>

From-SVN: r277876
2019-11-06 10:57:18 +00:00
Frederik Harwath
5d183d1740 Warn about inconsistent OpenACC nested reduction clauses
OpenACC (cf. OpenACC 2.7, section 2.9.11. "reduction clause";
	this was first clarified by OpenACC 2.6) requires that, if a
	variable is used in reduction clauses on two nested loops, then
	there must be reduction clauses for that variable on all loops
	that are nested in between the two loops and all these reduction
	clauses must use the same operator.
	This commit introduces a check for that property which reports
	warnings if it is violated.

	2019-11-06  Gergö Barany  <gergo@codesourcery.com>
	            Frederik Harwath  <frederik@codesourcery.com>
	            Thomas Schwinge  <thomas@codesourcery.com>

	gcc/
	* omp-low.c (struct omp_context): New fields
	local_reduction_clauses, outer_reduction_clauses.
	(new_omp_context): Initialize these.
	(scan_sharing_clauses): Record reduction clauses on OpenACC constructs.
	(scan_omp_for): Check reduction clauses for incorrect nesting.
	gcc/testsuite/
	* c-c++-common/goacc/nested-reductions-warn.c: New test.
	* c-c++-common/goacc/nested-reductions.c: New test.
	* gfortran.dg/goacc/nested-reductions-warn.f90: New test.
	* gfortran.dg/goacc/nested-reductions.f90: New test.
	libgomp/
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-1.c:
	Add expected warnings about missing reduction clauses.
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-2.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-3.c:
	Likewise.
	* testsuite/libgomp.oacc-c-c++-common/par-loop-comb-reduction-4.c:
	Likewise.

	Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>

From-SVN: r277875
2019-11-06 10:43:52 +00:00
Jakub Jelinek
5f6705b7b5 re PR inline-asm/92352 (ICE in force_constant_size)
PR inline-asm/92352
	* gimplify.c (gimplify_asm_expr): Reject VLA in output or input
	operands with non-memory constraints.

	* c-c++-common/pr92352.c: New test.

From-SVN: r277873
2019-11-06 09:08:39 +01:00
Xiong Hu Luo
8adf3cc4c3 PR92090: Fix part of testcase failures by r276469
-finline-functions is enabled by default for O2 since r276469, update the
test cases with -fno-inline-functions.
c11-atomic-exec-5.c stills hit ICE of LRA on BE systems in PR92090.
This commit is NOT a fix for the bug and so it must NOT be closed.

gcc/testsuite/ChangeLog:

	2019-11-06  Xiong Hu Luo  <luoxhu@linux.ibm.com>

	PR92090
	* gcc.target/powerpc/pr72804.c: Add -fno-inline-functions --param
	max-inline-insns-single-O2=200.
	* gcc.target/powerpc/pr79439-1.c: Add -fno-inline-functions.
	* gcc.target/powerpc/vsx-builtin-7.c: Likewise.

From-SVN: r277872
2019-11-06 03:36:46 +00:00
Martin Sebor
91eb5fa8e1 PR tree-optimization/92373 - ICE in -Warray-bounds on access to member array in an initialized char buffer
gcc/testsuite/ChangeLog:

	PR tree-optimization/92373
	* gcc.dg/Warray-bounds-55.c: New test.
	* gcc.dg/Wzero-length-array-bounds-2.c: New test.

gcc/ChangeLog:

	PR tree-optimization/92373
	* tree.c (component_ref_size): Only consider initializers of objects
	of matching struct types.
	Return null for instances of interior zero-length arrays.

From-SVN: r277871
2019-11-05 18:25:09 -07:00
GCC Administrator
eebabc49a3 Daily bump.
From-SVN: r277870
2019-11-06 00:16:21 +00:00
Segher Boessenkool
8cb0906b0f doc: Insn splitting by combine
The combine pass is perfectly happy if a splitter splits to just one
instruction (instead of two).


	* doc/md.texi (Insn Splitting): Fix combiner documentation.

From-SVN: r277866
2019-11-06 01:06:23 +01:00
Jason Merrill
b7689b962d Implement C++20 operator<=>.
There are three major pieces to this support: scalar operator<=>,
synthesis of comparison operators, and rewritten/reversed overload
resolution (e.g. a < b becomes 0 > b <=> a).

Unlike other defaulted functions, where we use synthesized_method_walk to
semi-simulate what the definition of the function will be like, this patch
determines the characteristics of a comparison operator by trying to define
it.

My handling of non-dependent rewritten operators in templates can still use
some work: build_min_non_dep_op_overload can't understand the rewrites and
crashes, so I'm avoiding it for now by clearing *overload.  This means we'll
do name lookup again at instantiation time, which can incorrectly mean a
different result.  I'll poke at this more in stage 3.

I'm leaving out a fourth section ("strong structural equality") even though
I've implemented it, because it seems likely to change radically tomorrow.

Thanks to Tim van Deurzen and Jakub for implementing lexing of the <=>
operator, and Jonathan for the initial <compare> header.

gcc/cp/
	* cp-tree.h (struct lang_decl_fn): Add maybe_deleted bitfield.
	(DECL_MAYBE_DELETED): New.
	(enum special_function_kind): Add sfk_comparison.
	(LOOKUP_REWRITTEN, LOOKUP_REVERSED): New.
	* call.c (struct z_candidate): Add rewritten and reversed methods.
	(add_builtin_candidate): Handle SPACESHIP_EXPR.
	(add_builtin_candidates): Likewise.
	(add_candidates): Don't add a reversed candidate if the parms are
	the same.
	(add_operator_candidates): Split out from build_new_op_1.  Handle
	rewritten and reversed candidates.
	(add_candidate): Swap conversions of reversed candidate.
	(build_new_op_1): Swap them back.  Build a second operation for
	rewritten candidates.
	(extract_call_expr): Handle rewritten calls.
	(same_fn_or_template): New.
	(joust): Handle rewritten and reversed candidates.
	* class.c (add_implicitly_declared_members): Add implicit op==.
	(classtype_has_op, classtype_has_defaulted_op): New.
	* constexpr.c (cxx_eval_binary_expression): Handle SPACESHIP_EXPR.
	(cxx_eval_constant_expression, potential_constant_expression_1):
	Likewise.
	* cp-gimplify.c (genericize_spaceship): New.
	(cp_genericize_r): Use it.
	* cp-objcp-common.c (cp_common_init_ts): Handle SPACESHIP_EXPR.
	* decl.c (finish_function): Handle deleted function.
	* decl2.c (grokfield): SET_DECL_FRIEND_CONTEXT on defaulted friend.
	(mark_used): Check DECL_MAYBE_DELETED.  Remove assumption that
	defaulted functions are non-static members.
	* error.c (dump_expr): Handle SPACESHIP_EXPR.
	* method.c (type_has_trivial_fn): False for sfk_comparison.
	(enum comp_cat_tag, struct comp_cat_info_t): New types.
	(comp_cat_cache): New array variable.
	(lookup_comparison_result, lookup_comparison_category)
	(is_cat, cat_tag_for, spaceship_comp_cat)
	(spaceship_type, genericize_spaceship)
	(common_comparison_type, early_check_defaulted_comparison)
	(comp_info, build_comparison_op): New.
	(synthesize_method): Handle sfk_comparison.  Handle deleted.
	(get_defaulted_eh_spec, maybe_explain_implicit_delete)
	(explain_implicit_non_constexpr, implicitly_declare_fn)
	(defaulted_late_check, defaultable_fn_check): Handle sfk_comparison.
	* name-lookup.c (get_std_name_hint): Add comparison categories.
	* tree.c (special_function_p): Add sfk_comparison.
	* typeck.c (cp_build_binary_op): Handle SPACESHIP_EXPR.

2019-11-05  Tim van Deurzen  <tim@kompiler.org>

	Add new tree code for the spaceship operator.
gcc/cp/
	* cp-tree.def: Add new tree code.
	* operators.def: New binary operator.
	* parser.c: Add new token and tree code.
libcpp/
	* cpplib.h: Add spaceship operator for C++.
	* lex.c: Implement conditional lexing of spaceship operator for C++20.

2019-11-05  Jonathan Wakely  <jwakely@redhat.com>

libstdc++-v3/
	* libsupc++/compare: New header.
	* libsupc++/Makefile.am (std_HEADERS): Add compare.
	* include/std/version: Define __cpp_lib_three_way_comparison.
	* include/std/functional: #include <compare>.

From-SVN: r277865
2019-11-05 18:56:18 -05:00
Jason Merrill
b63566a404 Fix conversions for built-in operator overloading candidates.
While working on C++20 operator<=>, I noticed that build_new_op_1 was doing
too much conversion when a built-in candidate was selected; the standard
says it should only perform user-defined conversions, and then leave the
normal operator semantics to handle any standard conversions.  This is
important for operator<=> because a comparison of two different unscoped
enums is ill-formed; if we promote the enums to int here, cp_build_binary_op
never gets to see the original operand types, so we can't give the error.

I'm also disabling -Wmaybe-uninitialized for expmed.c to avoid the bootstrap
failure from the last time I applied this patch.

	* call.c (build_new_op_1): Don't apply any standard conversions to
	the operands of a built-in operator.  Don't suppress conversions in
	cp_build_unary_op.
	* typeck.c (cp_build_unary_op): Do integral promotions for enums.

	PR tree-optimization/91825
	* expmed.c: Reduce -Wmaybe-uninitialized to warning.

From-SVN: r277864
2019-11-05 18:53:53 -05:00
Jason Merrill
6fda5f4981 Use vec instead of raw array for built-in candidates.
My operator<=> patch wants to split up build_new_op_1, which makes using a
tree array as well as the vec inconvenient.  build_new_op_1 already has a
vec, and build_conditional_expr_1 can release its vec right away, so this
doesn't increase garbage at all.

	* call.c (build_builtin_candidate): Take args in a vec.
	(add_builtin_candidate, add_builtin_candidates): Likewise.
	(build_conditional_expr_1, build_new_op_1): Adjust.

From-SVN: r277863
2019-11-05 18:50:41 -05:00
Jason Merrill
f22f817cbd Various small C++ changes.
Wrappers for lookup_qualified_name and build_x_binary_op to make calling
them more convenient in places, and a function named contextual_conv_bool
for places that want contextual conversion to bool.

I noticed that we weren't showing the declaration location when we complain
about a call to a non-constexpr function where a constant expression is
required.

If maybe_instantiate_noexcept doesn't actually instantiate, there's no
reason for it to mess with clones.

	* constexpr.c (explain_invalid_constexpr_fn): Show location of fn.

	* pt.c (maybe_instantiate_noexcept): Only update clones if we
	instantiated.

	* typeck.c (contextual_conv_bool): New.

	* name-lookup.c (lookup_qualified_name): Add wrapper overload taking
	C string rather than identifier.
	* parser.c (cp_parser_userdef_numeric_literal): Use it.
	* rtti.c (emit_support_tinfos): Use it.
	* cp-tree.h (ovl_op_identifier): Change to inline functions.
	(build_x_binary_op): Add wrapper with fewer parms.

From-SVN: r277862
2019-11-05 18:50:08 -05:00
Jim Wilson
a81ffd93b8 Allow libcalls for complex memcpy when optimizing for size.
The RISC-V backend wants to use a libcall when optimizing for size if
more than 6 instructions are needed.  Emit_move_complex asks for no
libcalls.  This case requires 8 insns for rv64 and 16 insns for rv32,
so we get fallback code that emits a loop.  Commit_one_edge_insertion
doesn't allow code inserted for a phi node on an edge to end with a
branch, and so this triggers an assertion.  This problem goes away if
we allow libcalls when optimizing for size, which gives the code the
RISC-V backend wants, and avoids triggering the assert.

	gcc/
	PR middle-end/92263
	* expr.c (emit_move_complex): Only use BLOCK_OP_NO_LIBCALL when
	optimize_insn_for_speed_p is true.

	gcc/testsuite/
	PR middle-end/92263
	* gcc.dg/pr92263.c: New.

From-SVN: r277861
2019-11-05 14:34:40 -08:00
Jason Merrill
8aa76bb746 Catch missed uses of function with unsatisfied constraints.
While looking at CA378 I noticed that we weren't properly diagnosing two of
the three erroneous lines in the example.

	* decl2.c (mark_used): Diagnose use of a function with unsatisfied
	constraints here.
	* typeck.c (cp_build_function_call_vec): Not here.

From-SVN: r277860
2019-11-05 15:36:09 -05:00
Jason Merrill
0df65305ff Make -fconcepts-ts imply -fconcepts.
* c-opts.c (c_common_post_options): -fconcepts-ts implies
	-fconcepts.

From-SVN: r277859
2019-11-05 15:36:00 -05:00
Martin Sebor
8299dfae93 PR middle-end/92333 - missing variable name referencing VLA in warnings
PR middle-end/92333 - missing variable name referencing VLA in warnings
PR middle-end/82608 - missing -Warray-bounds on an out-of-bounds VLA index

gcc/testsuite/ChangeLog:

	PR middle-end/92333
	PR middle-end/82608
	* gcc.dg/Warray-bounds-51.c: New test.

gcc/ChangeLog:

	PR middle-end/92333
	PR middle-end/82608
	* tree-vrp.c (vrp_prop::check_array_ref): Handle VLAs with constant
	size.
	* tree-ssa-ccp.c (fold_builtin_alloca_with_align): Use a meaninful
	name and location for a temporary variable.

From-SVN: r277854
2019-11-05 10:05:33 -07:00
Nathan Sidwell
3fd4f9242d [PR c++/92370] ICE with VC marker
https://gcc.gnu.org/ml/gcc-patches/2019-11/msg00323.html
	cp/
	PR c++/92370
	* parser.c (cp_parser_error_1): Check EOF and UNKNOWN_LOCATION
	when skipping over version control marker.

	testsuite/
	PR c++/92370
	* g++.dg/pr92370.C: New.

From-SVN: r277853
2019-11-05 16:59:41 +00:00
Aldy Hernandez
b00460cb14 Fix indentation inconsistencies introduced by previous patch.
From-SVN: r277852
2019-11-05 16:37:28 +00:00
Martin Sebor
361d4a9eb6 PR middle-end/92341 - missing -Warray-bounds indexing past the end of a compound literal
PR middle-end/92341 - missing -Warray-bounds indexing past the end of a compound literal
PR middle-end/82612 - missing -Warray-bounds on a non-zero offset from the address of a non-array object

gcc/testsuite/ChangeLog:

	PR middle-end/92341
	PR middle-end/82612
	* g++.dg/warn/Warray-bounds-4.C: Adjust text of expected warning.
	* gcc.dg/Warray-bounds-53.c: New test.
	* gcc.dg/Warray-bounds-54.c: New test.

gcc/ChangeLog:

	PR middle-end/92341
	PR middle-end/82612
	* tree-sra.c (get_access_for_expr): Fail for out-of-bounds offsets.
	* tree-vrp.c (vrp_prop::check_array_ref): Correct index and text
	of message printed in a warning for empty arrays.
	(vrp_prop::check_mem_ref): Also handle function parameters and
	empty arrays.

From-SVN: r277851
2019-11-05 09:20:44 -07:00
Richard Biener
02bf7e6fa2 re PR tree-optimization/92371 (ICE in info_for_reduction, at tree-vect-loop.c:4106)
2019-11-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/92371
	* tree-vect-loop.c (vectorizable_reduction): Set STMT_VINFO_REDUC_DEF
	on the original stmt of live stmts in the chain.
	(vectorizable_live_operation): Look at the original stmt when
	checking STMT_VINFO_REDUC_DEF.

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

From-SVN: r277850
2019-11-05 16:12:07 +00:00
Jonathan Wakely
c6a7be9bda Fix <version> header for freestanding
* include/std/version [!_GLIBCXX_HOSTED]: Do not define feature test
	macros for features that are only present in hosted builds.

From-SVN: r277849
2019-11-05 15:56:57 +00:00
Jonathan Wakely
6762b65874 Remove incorrect comment
The negative concept is required for subsumption to work, it's not a
bug.

	* include/bits/iterator_concepts.h (__iter_without_nested_types):
	Remove incorrect comment.

From-SVN: r277848
2019-11-05 15:56:47 +00:00
Aldy Hernandez
028d81b159 The base class for ranges is currently value_range_base, which is rather long and cumbersome.
The base class for ranges is currently value_range_base, which is
rather long and cumbersome.  It also occurs more often than the derived
class of value_range.  To avoid confusion, and save typing, this
patch does a global rename from value_range to value_range_equiv,
and from value_range_base to value_range.

This way, the base class is simply value_range, and the derived
class is value_range_equiv which explicitly states what it does.

From-SVN: r277847
2019-11-05 15:39:11 +00:00
Matthew Malcomson
3619076a63 [mid-end] Fix declared type of personality functions
`build_personality_function` generates a declaration for a personality
function.  The type it declares for these functions doesn't match the
type of the actual personality functions that are defined by the C++
unwinding ABI.

This doesn't cause any crashes since the compiler never generates a call
to these decl's, and hence the type of the function is never used.
Nonetheless, for the sake of consistency and readability we update the
type of this declaration.

gcc/ChangeLog:

2019-11-05  Matthew Malcomson  <matthew.malcomson@arm.com>

	* expr.c (build_personality_function): Fix generated type to
	match actual personality functions.

From-SVN: r277846
2019-11-05 15:36:20 +00:00
Matthew Malcomson
81e40f3ae4 [aarch64] Allocate space for err_str in aarch64_handle_attr_branch_protection
-fsanitize=hwaddress found a one-byte overwrite when running the
testsuite here.  aarch64_handle_attr_branch_protection allocates
`strlen(str)` bytes for an error string, which is populated by
`strcpy(..., str)` in the case where the branch protection string is
completely invalid.

Not tested -- I don't want to re-build and it seems obvious.

gcc/ChangeLog:

2019-11-05  Matthew Malcomson  <matthew.malcomson@arm.com>

	* config/aarch64/aarch64.c (aarch64_handle_attr_cpu): Allocate
	enough bytes for the NULL character.

From-SVN: r277845
2019-11-05 15:35:15 +00:00
Martin Liska
4330d1c477 Update LOCAL_PATCHES.
From-SVN: r277839
2019-11-05 13:56:51 +00:00
Martin Liska
f2f48caebb Update scanned patterns in a test-case.
2019-11-05  Martin Liska  <mliska@suse.cz>

	* c-c++-common/ubsan/ptr-overflow-2.c: Update based on changed
	run-time reporting format.

From-SVN: r277838
2019-11-05 13:55:54 +00:00
Martin Liska
1c48938e38 Set print_summary for UBSAN.
2019-11-05  Martin Liska  <mliska@suse.cz>

	* ubsan/ubsan_flags.cpp (InitializeFlags): Trunk decided to print
	summary for all sanitizers, but we want to have UBSAN without it.

From-SVN: r277837
2019-11-05 13:55:44 +00:00
Martin Liska
acd700fdc7 Reapply all revisions mentioned in LOCAL_PATCHES.
2019-11-05  Martin Liska  <mliska@suse.cz>

	* asan/asan_globals.cpp (CheckODRViolationViaIndicator): Reapply from
	LOCAL_PATCHES.
	(CheckODRViolationViaPoisoning): Likewise.
	(RegisterGlobal): Likewise.
	* asan/asan_interceptors.h (ASAN_INTERCEPT___CXA_RETHROW_PRIMARY_EXCEPTION): Likewise.
	(defined): Likewise.
	* asan/asan_mapping.h: Likewise.
	* sanitizer_common/sanitizer_linux_libcdep.cpp (defined): Likewise.
	* sanitizer_common/sanitizer_mac.cpp (defined): Likewise.
	* sanitizer_common/sanitizer_platform_limits_linux.cpp (defined): Likewise.
	* sanitizer_common/sanitizer_platform_limits_posix.h: Likewise.
	* sanitizer_common/sanitizer_stacktrace.cpp (GetCanonicFrame): Likewise.
	* tsan/tsan_rtl_ppc64.S: Likewise.
	* ubsan/ubsan_handlers.cpp (__ubsan::__ubsan_handle_cfi_bad_icall): Likewise.
	(__ubsan::__ubsan_handle_cfi_bad_icall_abort): Likewise.
	* ubsan/ubsan_handlers.h (struct CFIBadIcallData): Likewise.
	(struct CFICheckFailData): Likewise.
	(RECOVERABLE): Likewise.
	* ubsan/ubsan_platform.h: Likewise.

From-SVN: r277836
2019-11-05 13:55:27 +00:00
Martin Liska
617be04ad7 Update Makefile.am.
2019-11-05  Martin Liska  <mliska@suse.cz>

	* tsan/Makefile.am: Rename tsan_interceptors.cpp to
	tsan_interceptors_posix.
	* tsan/Makefile.in: Regenerate.

From-SVN: r277835
2019-11-05 13:55:17 +00:00
Martin Liska
3ca75cd550 Libsanitizer: merge from trunk with merge.sh.
2019-11-05  Martin Liska  <mliska@suse.cz>

	* all source files: Merge from upstream r375507.

From-SVN: r277834
2019-11-05 13:54:57 +00:00
Andreas Krebbel
9bae89924a IBM Z: gen-vect-26/28: Vectorizing without peeling is ok for Z
These tests check if loop peeling has been applied to avoid
having to vectorize unaligned loops.  On Z we do not have any
alignment requirements for vectorization so we also don't need want
the loop peeling here.

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.dg/tree-ssa/gen-vect-26.c: Disable loop peeling check for
	IBM Z.
	* gcc.dg/tree-ssa/gen-vect-28.c: Likewise.

From-SVN: r277833
2019-11-05 13:31:02 +00:00
Richard Biener
c265dfbf74 re PR target/92280 (gcc.target/i386/pr83008.c FAILs)
2019-11-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/92280
	* match.pd (BIT_FIELD_REF of CTOR): Unless the original CTOR
	had a single use do not create a new CTOR.
	* tree-ssa-forwprop.c (simplify_bitfield_ref): Do not re-fold
	BIT_FIELD_REF of a CTOR via GENERIC.

From-SVN: r277832
2019-11-05 13:29:52 +00:00
Andreas Krebbel
d9adca6e66 IBM Z: gen-vect-11/32: Set min-vect-loop-bound param back to default
In the Z backend we still set min-vect-loop-bound to 2 to work around
corner cases where awkward epilogue code gets generated in the
vectorizer.  This has a particular bad impact when vectorizing loops
with a low iteration count.  Due to this we do not vectorize the loop
in gen-vect-11/32 - what actually is a pity.

The patch sets min-vect-loop-bound back to the default value of 0 in
order to enable vectorization.

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.dg/tree-ssa/gen-vect-11.c: Add --param min-vect-loop-bound=0
	for IBM Z.
	* gcc.dg/tree-ssa/gen-vect-23.c: Likewise.

From-SVN: r277831
2019-11-05 13:29:13 +00:00
Andreas Krebbel
d8e5ca2920 IBM Z: Fix testsuite useable_hw check
This fixes various issues with the useable_hw check in s390.exp.  The
check is supposed to verify whether a testcase can be run on the
current hardware.

- the test never returned true for -m31 because vzero is not available
  in ESA mode and -m31 defaults to -mesa
- the missing v0 clobber on the vzero instruction made the check fail
  if the stack pointer got saved in f0
- the lcbb instruction used for checking whether we are on a z13
  also requires vx.  Replace it with an instruction from the generic
  instruction set extensions.
- no support for z14 and z15 so far

gcc/testsuite/ChangeLog:

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

	* gcc.target/s390/s390.exp
	(check_effective_target_s390_useable_hw): Add inline asm for z14
	and z15. Replace instruction for z13 with lochiz. Add register
	clobbers. Check also for __zarch__ when doing the __VX__ test.

From-SVN: r277830
2019-11-05 13:27:59 +00:00
Andreas Krebbel
76d8b4d1ad IBM Z: Use tree_fits_uhwi_p in vector_alignment hook
This fixes an ICE in gcc.dg/attr-vector_size.c testcase.

gcc/ChangeLog:

2019-11-05  Andreas Krebbel  <krebbel@linux.ibm.com>

	* config/s390/s390.c (s390_vector_alignment): Check if the value
	fits into uhwi before using it.

From-SVN: r277829
2019-11-05 13:21:06 +00:00
Christophe Lyon
30f1f974b8 [ARM,testsuite] Skip tests incompatible with -mpure-code.
All these tests fail when using -mpure-code:
* some force A or R profile
* some use Neon
* some use -fpic/-fPIC
all of which are not supported by this option.

2019-11-05  Christophe Lyon  <christophe.lyon@linaro.org>

	* gcc.target/arm/attr-crypto.c: Skip if -mpure-code is used.
	* gcc.target/arm/attr-neon-fp16.c: Likewise.
	* gcc.target/arm/combine-cmp-shift.c: Likewise.
	* gcc.target/arm/data-rel-1.c: Likewise.
	* gcc.target/arm/data-rel-2.c: Likewise.
	* gcc.target/arm/data-rel-3.c: Likewise.
	* gcc.target/arm/ftest-armv7a-arm.c: Likewise.
	* gcc.target/arm/ftest-armv7a-thumb.c: Likewise.
	* gcc.target/arm/ftest-armv7r-arm.c: Likewise.
	* gcc.target/arm/ftest-armv7r-thumb.c: Likewise.
	* gcc.target/arm/ftest-armv7ve-arm.c: Likewise.
	* gcc.target/arm/ftest-armv7ve-thumb.c: Likewise.
	* gcc.target/arm/ftest-armv8a-arm.c: Likewise.
	* gcc.target/arm/ftest-armv8a-thumb.c: Likewise.
	* gcc.target/arm/lceil-vcvt_1.c: Likewise.
	* gcc.target/arm/lfloor-vcvt_1.c: Likewise.
	* gcc.target/arm/lround-vcvt_1.c: Likewise.
	* gcc.target/arm/memset-inline-10.c: Likewise.
	* gcc.target/arm/mod_2.c: Likewise.
	* gcc.target/arm/mod_256.c: Likewise.
	* gcc.target/arm/pr40657-1.c: Likewise.
	* gcc.target/arm/pr44788.c: Likewise.
	* gcc.target/arm/pr50305.c: Likewise.
	* gcc.target/arm/pr51835.c: Likewise.
	* gcc.target/arm/pr51915.c: Likewise.
	* gcc.target/arm/pr52006.c: Likewise.
	* gcc.target/arm/pr53187.c: Likewise.
	* gcc.target/arm/pr58784.c: Likewise.
	* gcc.target/arm/pr59575.c: Likewise.
	* gcc.target/arm/pr59923.c: Likewise.
	* gcc.target/arm/pr60650-2.c: Likewise.
	* gcc.target/arm/pr60657.c: Likewise.
	* gcc.target/arm/pr60663.c: Likewise.
	* gcc.target/arm/pr67439_1.c: Likewise.
	* gcc.target/arm/pr68620.c: Likewise.
	* gcc.target/arm/pr7676.c: Likewise.
	* gcc.target/arm/pr79239.c: Likewise.
	* gcc.target/arm/pr81863.c: Likewise.
	* gcc.target/arm/pragma_attribute.c: Likewise.
	* gcc.target/arm/pragma_cpp_fma.c: Likewise.
	* gcc.target/arm/require-pic-register-loc.c: Likewise.
	* gcc.target/arm/thumb-ltu.c: Likewise.
	* gcc.target/arm/thumb1-pic-high-reg.c: Likewise.
	* gcc.target/arm/thumb1-pic-single-base.c: Likewise.
	* gcc.target/arm/tlscall.c: Likewise.
	* gcc.target/arm/unsigned-float.c: Likewise.
	* gcc.target/arm/vrinta-ce.c: Likewise.

From-SVN: r277828
2019-11-05 14:18:36 +01:00
Martin Liska
9aca5960a4 Use more ggc_delete.
2019-11-05  Martin Liska  <mliska@suse.cz>

	* symbol-summary.h: Use ggc_delete.

From-SVN: r277827
2019-11-05 12:45:04 +00:00
Anton Youdkevitch
5aef51c219 [Aarch64] Fix vec_perm cost for thunderx2t99
Here is the one-liner that fixes the incorrect
vec_perm cost for thunderx2t99 chip.
With the patch applied 526.blender of CPU2017
gets ~5% improvement with no measurable changes
for other benchmarks.

2019-11-05  Anton Youdkevitch  <anton.youdkevitch@bell-sw.com>

	* config/aarch64/aarch64.c (thunderx2t99_vector_cost):
	Change vec_perm field to 10.

From-SVN: r277826
2019-11-05 12:07:53 +00:00
Arnaud Charlet
dd2f3208c1 * doc/install.texi: Further fix syntax for html generation
From-SVN: r277824
2019-11-05 12:46:29 +01:00
Martin Liska
dbe348c157 Update coding style in symbol-summary.h.
2019-11-05  Martin Liska  <mliska@suse.cz>

	* symbol-summary.h: Rename allocator to m_allocator and
	add comment.

From-SVN: r277823
2019-11-05 11:10:04 +00:00
Richard Biener
f340142b83 re PR tree-optimization/92324 (ICE in expand_direct_optab_fn, at internal-fn.c:2890)
2019-11-05  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/92324
	* tree-vect-loop.c (check_reduction_path): For MIN/MAX require
	all signed or unsigned operations.

	* gcc.dg/vect/pr92324-3.c: New testcase.

From-SVN: r277822
2019-11-05 11:00:24 +00:00
Jan Hubicka
a895e6d72d hsa-brig.c: Include alloc-pool.h
* hsa-brig.c: Include alloc-pool.h
	* hsa-dump.c: Likewise.
	* hsa-gen.c: Likewise.
	* hse-regalloc.c: Likewise.
	* ipa-hsa.c: Likewise.
	* ipa-predicate.c: Likewise.
	* ipa-reference.c: Likewise.
	* ipa-sra.c: Likewise.
	* omp-expand.c: Likewise.
	* omp-general.c: Likewise.
	* omp-low.c: Likewise.
	* sumbol-summary.h (function_summary_base): Add allocator.
	(function_summary<T *>::function_summary): Update construction.
	(fast_function_summary<T *, V>::fast_function_summary): Likewise.
	(call_summary_base): Add allcator.
	(call_summary<T *>::call_summary): Update construction.
	(fast_call_summary<T *, V>::fast_call_summary): Likewise.

From-SVN: r277821
2019-11-05 10:38:02 +00:00