Commit Graph

173043 Commits

Author SHA1 Message Date
Jan Hubicka
070e348967 Implement inline call summaries.
* ipa-fnsummary.c (ipa_fn_summary::account_size_time): Add CALL
	parameter and update call_size_time_table.
	(ipa_fn_summary::max_size_time_table_size): New constant.
	(estimate_calls_size_and_time_1): Break out from ...
	(estimate_calls_size_and_time): ... here; implement summary production.
	(summarize_calls_size_and_time): New function.
	(ipa_call_context::estimate_size_and_time): Bypass
	estimate_calls_size_and_time for leaf functions.
	(ipa_update_overall_fn_summary): Likewise.
	* ipa-fnsummary.h (call_size_time_table): New.
	(ipa_fn_summary::account_size_time): Update prototype.

From-SVN: r278513
2019-11-20 17:03:43 +00:00
Joseph Myers
73248b1d26 Document -Wc11-c2x-compat.
My patch that added initial C2X support and associated command-line
options missed documenting -Wc11-c2x-compat although the other options
were properly documented.  This patch adds the missing documentation.

Tested with "make info" and "make pdf".

	* doc/invoke.texi (-Wc11-c2x-compat): Document.

From-SVN: r278510
2019-11-20 16:38:37 +00:00
Wilco Dijkstra
6271dd984d PR85678: Change default to -fno-common
GCC currently defaults to -fcommon.  As discussed in the PR, this is an ancient
C feature which is not conforming with the latest C standards.  On many targets
this means global variable accesses have a codesize and performance penalty.
This applies to C code only, C++ code is not affected by -fcommon.  It is about
time to change the default.

    gcc/
	PR85678
	* common.opt (fcommon): Change init to 1.
	* invoke.texi (-fcommon): Update documentation.

    testsuite/
	* g++.dg/lto/odr-6_1.c: Add -fcommon.
	* gcc.dg/alias-15.c: Likewise.
	* gcc.dg/fdata-sections-1.c: Likewise.	
	* gcc.dg/ipa/pr77653.c: Likewise.
	* gcc.dg/lto/20090729_0.c: Likewise.
	* gcc.dg/lto/20111207-1_0.c: Likewise.
	* gcc.dg/lto/c-compatible-types-1_0.c: Likewise.
	* gcc.dg/lto/pr55525_0.c: Likewise.
	* gcc.dg/lto/pr88077_0.c: Use long to avoid alignment warning.
	* gcc.dg/lto/pr88077_1.c: Add -fcommon.
	* gcc.target/aarch64/sve/peel_ind_1.c: Allow ANCHOR0.
	* gcc.target/aarch64/sve/peel_ind_2.c: Likewise.
	* gcc.target/aarch64/sve/peel_ind_3.c: Likewise.
	* gcc.target/i386/volatile-bitfields-2.c: Allow movl or movq.

From-SVN: r278509
2019-11-20 16:29:23 +00:00
Maciej W. Rozycki
83115e9eb8 libgomp/test: Add flags to find libatomic in build-tree testing
Add flags to find libatomic in build-tree testing, fixing a catastrophic
libgomp testsuite failure with `riscv*-*-linux*' targets, which imply
`-latomic' with the `-pthread' GCC option, implied in turn by the
`-fopenacc' and `-fopenmp' options, removing failures like:

.../bin/riscv64-linux-gnu-ld: cannot find -latomic
collect2: error: ld returned 1 exit status
compiler exited with status 1
FAIL: libgomp.c/../libgomp.c-c++-common/atomic-18.c (test for excess errors)
Excess errors:
.../bin/riscv64-linux-gnu-ld: cannot find -latomic

UNRESOLVED: libgomp.c/../libgomp.c-c++-common/atomic-18.c compilation failed to produce executable

and bringing overall test results for the `riscv64-linux-gnu' target
(here with the `x86_64-linux-gnu' host and RISC-V QEMU in the Linux user
emulation mode as the target board) from:

		=== libgomp Summary ===

# of expected passes		90
# of unexpected failures	3267
# of expected failures		2
# of unresolved testcases	3247
# of unsupported tests		548

to:

		=== libgomp Summary ===

# of expected passes		6834
# of unexpected failures	4
# of expected failures		4
# of unsupported tests		518

	libgomp/
	* testsuite/lib/libgomp.exp (libgomp_init): Add flags to find
	libatomic in build-tree testing.

From-SVN: r278505
2019-11-20 15:49:23 +00:00
Jan Hubicka
8e361de1b0 Workaround bogus warning in fibonacci_heap<K,V>::consolidate.
* fibonacci_heap.h (fibonacci_heap<K,V>::consolidate): Turn auto_vec
	to ordinary array.

From-SVN: r278504
2019-11-20 15:45:53 +00:00
Jan Hubicka
516fd7cedb Add pool_allocator for fibonaci heaps.
* fibonacci_heap.h (fibonacci_heap<K,V>::fibonacci_heap):
	Add allocator parameter.
	(fibonacci_heap<K,V>::~fibonacci_heap): Optimize destruction.
	(fibonacci_heap<K,V>::m_allocator): New.
	(fibonacci_heap<K,V>::m_own_allocator): New.
	(fibonacci_heap<K,V>::insert): Use allocator.
	(fibonacci_heap<K,V>::extract_min): Likewise.
	(fibonacci_heap<K,V>::union_with): Assert that both heaps share
	allocator.
	(fibonacci_heap<K,V>::consolidate): Allocate constant sized vector
	on stack.
	* fibonacci_heap.c: Include alloc-pool
	(test_empty_heap): Initialize allocator.
	(test_union): Likewise.
	* bb-reorder.c: Include alloc-pool.h.
	* tracer.c: Inlclude alloc-pool.h.

From-SVN: r278501
2019-11-20 15:04:34 +00:00
Martin Liska
f6fbdc385a Update comment in libsanitizer/*/libtool-version files.
2019-11-20  Martin Liska  <mliska@suse.cz>

	* libtool-version: Remove.
	* lsan/libtool-version: Upate comment to not mention libmudflap.
	* tsan/libtool-version: Likewise.
	* ubsan/libtool-version: Likewise.

From-SVN: r278500
2019-11-20 14:52:05 +00:00
Jan Hubicka
17b95f0ef0 lto-streamer-out.c (DFS::sccstack): Turn into auto-vec.
* lto-streamer-out.c (DFS::sccstack): Turn into auto-vec.
	Preallocate for 32 entries.
	(DFS::worklist): Likewise.
	(DFS::DFS): Do not initialize sccstack and worklist.
	(DFS::~DFS): Do not release sccstack.

From-SVN: r278498
2019-11-20 14:10:41 +00:00
Segher Boessenkool
bcb4b4b4ba rs6000: Fix UNORDERED without NaNs, for DFP (PR92573)
This is the analogue of r278103, but for DFP.


	PR target/92573
	* config/rs6000/dfp.md (dfptstsfi_<code>_<mode> for DFP_TEST and DDTD):
	Handle UNORDERED if !HONOR_NANS.

From-SVN: r278497
2019-11-20 14:38:52 +01:00
Jan Hubicka
041cb6154c Optimize updating of badness after applying inline
* ipa-inline.c (wrapper_heuristics_may_apply): Break out from ...
	(edge_badness): ... here.
	(inline_small_functions): Use monotonicity of badness calculation
	to avoid redundant updates.

From-SVN: r278496
2019-11-20 11:46:41 +00:00
Richard Biener
140ee00a96 tree-vect-slp.c (vect_analyze_slp_instance): Dump constructors we are actually analyzing.
2019-11-20  Richard Biener  <rguenther@suse.de>

	* tree-vect-slp.c (vect_analyze_slp_instance): Dump
	constructors we are actually analyzing.
	(vect_slp_check_for_constructors): Do not vectorize uniform
	constuctors, do not dump here.

	* gcc.dg/vect/bb-slp-42.c: Adjust.
	* gcc.dg/vect/bb-slp-40.c: Likewise.

From-SVN: r278495
2019-11-20 11:12:48 +00:00
Richard Biener
2439d584d5 re PR tree-optimization/92537 (ICE in vect_slp_analyze_node_operations, at tree-vect-slp.c:2775)
2019-11-20  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/92537
	* tree-vect-slp.c (vect_analyze_slp_instance): Move CTOR
	vectorization validity check...
	(vect_slp_analyze_operations): ... here.

	* gfortran.dg/pr92537.f90: New testcase.

From-SVN: r278494
2019-11-20 10:40:09 +00:00
Christophe Lyon
8d8ae265dc [testsuite][arm] Fix asm-flag-[45].c tests
In asm-flag-4.c, we need to use dg-message instead of dg-error because
we have to match "sorry, unimplemented:" rather than "error:".  In
asm-flag-5.c, fix the dg-error syntax.

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

	* gcc.target/arm/asm-flag-4.c: Replace dg-error with dg-message.
	* gcc.target/arm/asm-flag-5.c: Add quotes around dg-error
	messages.

From-SVN: r278487
2019-11-20 10:31:10 +01:00
James Greenhalgh
267d74329b Remove my name from AArch64 port maintainers
* MAINTAINERS (aarch64 port): Remove my name, move to...
	(Write After Approval): ...Here.

From-SVN: r278486
2019-11-20 09:29:13 +00:00
Claudiu Zissulescu
f60689fa50 [ARC] Register ARC specific passes with a .def file.
New arc-passes.def to register ARC specific passes.

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

	* config/arc/arc-protos.h (make_pass_arc_ifcvt): Declare.
	(make_pass_arc_predicate_delay_insns): Likewise.
	* config/arc/arc.c (class pass_arc_ifcvt): Reformat text, add gate
	method, remove clone.
	(class pass_arc_predicate_delay_insns): Likewise.
	(arc_init): Remove registering of ARC specific passes.
	* config/arc/t-arc (PASSES_EXTRA): Add arc-passes.def.
	* config/arc/arc-passes.def: New file.

From-SVN: r278485
2019-11-20 09:39:21 +01:00
Jakub Jelinek
ee68672928 re PR c++/90767 (jumbled error message with this and const)
PR c++/90767
	* call.c (complain_about_no_candidates_for_method_call): If
	conv->from is not a type, pass to complain_about_bad_argument
	lvalue_type of conv->from.

	* g++.dg/diagnostic/pr90767-1.C: New test.
	* g++.dg/diagnostic/pr90767-2.C: New test.

From-SVN: r278484
2019-11-20 09:33:56 +01:00
Jakub Jelinek
d742b0c1a0 re PR middle-end/90840 (ICE in simplify_subreg, at simplify-rtx.c:6441)
PR middle-end/90840
	* expmed.c (store_bit_field_1): Handle the case where op0 is not a MEM
	and has a mode that doesn't have corresponding integral type.

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

From-SVN: r278483
2019-11-20 09:32:56 +01:00
Jakub Jelinek
94cdd3b7ce re PR target/90867 (Multiplication or typecast of integer and double always zero when...)
PR target/90867
	* config/i386/i386-options.c (ix86_valid_target_attribute_tree): Don't
	clear opts->x_ix86_isa_flags{,2} here...
	(ix86_valid_target_attribute_inner_p): ... but here when seeing
	arch=.  Also clear opts->x_ix86_isa_flags{,2}_explicit.

	* gcc.target/i386/pr90867.c: New test.

From-SVN: r278482
2019-11-20 09:31:43 +01:00
Jakub Jelinek
7313f6cf21 re PR c/90898 (ICE in insert_clobber_before_stack_restore, at tree-ssa-ccp.c:2112)
PR c/90898
	* tree-ssa-ccp.c (insert_clobber_before_stack_restore): Remove
	assertion.
	(insert_clobbers_for_var): Fix a typo in function comment.

	* gcc.dg/pr90898.c: New test.

From-SVN: r278481
2019-11-20 09:29:35 +01:00
Jakub Jelinek
06e8db10cd re PR middle-end/91195 (incorrect may be used uninitialized smw (272711, 273474])
PR middle-end/91195
	* tree-ssa-phiopt.c (cond_store_replacement): Move lhs unsharing
	earlier.  Set TREE_NO_WARNING on the rhs1 of the artificially added
	load.

	* gcc.dg/pr91195.c: New test.

From-SVN: r278479
2019-11-20 09:26:52 +01:00
Georg-Johann Lay
c04341ec45 Make 0-series device specs work with older versions of avr-gcc.
PR target/92545
	* config/avr/specs.h (LINK_SPEC) <%(link_pm_base_address)>: Remove.
	* config/avr/gen-avr-mmcu-specs.c (print_mcu)
	<*link_pm_base_address>: Don't write spec.
	<*link_arch>: Add --defsym=__RODATA_PM_OFFSET__= as needed.

From-SVN: r278478
2019-11-20 08:19:44 +00:00
Richard Biener
3e00ba47b9 re PR c/92088 (aggregates with VLAs and nested functions are broken)
2019-11-20  Richard Biener  <rguenther@suse.de>

	PR c/92088
	c/
	* c-decl.c (grokdeclarator): Prevent inlining of nested
	function with VLA arguments.

	* builtins.c (compute_objsize): Deal with VLAs.

	* gcc.dg/torture/pr92088-1.c: New testcase.
	* gcc.dg/torture/pr92088-2.c: Likewise.

From-SVN: r278477
2019-11-20 07:33:19 +00:00
Paolo Carlini
54bf2539c5 cvt.c (ocp_convert): Use additional warning sentinel.
/cp
2019-11-20  Paolo Carlini  <paolo.carlini@oracle.com>

	* cvt.c (ocp_convert): Use additional warning sentinel.

/testsuite
2019-11-20  Paolo Carlini  <paolo.carlini@oracle.com>

	* g++.dg/warn/multiple-sign-compare-warn-1.C: New.

From-SVN: r278475
2019-11-20 01:02:46 +00:00
GCC Administrator
56d475cab2 Daily bump.
From-SVN: r278474
2019-11-20 00:16:19 +00:00
Joseph Myers
8c5b727acc Add more pedwarns for [[]] C attributes on types.
The standard [[]] attributes currently defined in C2x are all not
valid on types not being defined at the time.

Use on such types results in a warning from attribs.c about attributes
appertaining to types (the warning that I think is bogus in general
for both C and C++, applying as it does to all [[]] attributes
including gnu:: ones that are perfectly meaningful on types not being
defined and work fine when __attribute__ syntax is used instead).  If
that warning is removed (as I intend to do in a subsequent patch),
warnings may or may not result from the attribute handlers, depending
on whether those particular attribute handlers consider the attributes
meaningful in such a context.  In C, however, the rules about where
each [[]] attribute is valid are constraints, so a pedwarn, not a
warning, is required.

Because some handlers are shared between standard and gnu::
attributes, there can be cases that are valid for the GNU attribute
variant but not for the standard one.  So in general it is not correct
to rely on the attribute handlers to give all required pedwarns
(although in some cases, a pedwarn in the attribute handler is in
appropriate way of diagnosing an invalid use); they not have the
information about whether the attribute was a gnu:: one and can
legitimately accept a wider range of uses for the gnu:: attributes.

This patch ensures appropriate diagnostics for invalid uses of C2x
standard attributes on types, and so helps pave the way for the
subsequent removal of the bogus check in attribs.c, by adding a check
run in the front end before calling decl_attributes; this check
removes the attributes from the list after calling pedwarn to avoid
subsequent duplicate warnings.

Bootstrapped with no regressions for x86_64-pc-linux-gnu.

gcc/c:
	* c-decl.c (c_warn_type_attributes): New function.
	(groktypename, grokdeclarator, finish_declspecs): Call
	c_warn_type_attributes before applying attributes to types.
	* c-tree.h (c_warn_type_attributes): Declare.

gcc/testsuite:
	* gcc.dg/c2x-attr-deprecated-2.c, gcc.dg/c2x-attr-fallthrough-2.c,
	gcc.dg/c2x-attr-maybe_unused-2.c: Expect errors for invalid uses
	of standard attributes on types.  Add more tests of invalid uses
	on types.

From-SVN: r278471
2019-11-20 00:13:51 +00:00
Ian Lance Taylor
0c6ce0ae55 libgo: better cmd/cgo handling for '.' in pkgpath
Updates cgo's gccgoPkgpathToSymbolNew() to bring it into
    conformance with the way that gccgo now handles package
    paths with embedded dots (see CL 200838). See also
    https://gcc.gnu.org/PR61880, a related bug. This CL is a
    copy of CL 207957 in the main Go repo.
    
    Updates golang/go#35623.
    
    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/207977

From-SVN: r278470
2019-11-19 23:04:08 +00:00
Jakub Jelinek
fce6467b1e re PR c++/92414 (internal compiler error: tree check: expected constructor, have error_mark in cxx_eval_store_expression, at cp/constexpr.c:4009)
PR c++/92414
	* constexpr.c (cxx_eval_outermost_constant_expr): If DECL_INITIAL
	on object is erroneous, return t without trying to evaluate
	a constexpr dtor.

	* g++.dg/cpp2a/constexpr-dtor4.C: New test.

From-SVN: r278468
2019-11-19 22:28:22 +01:00
Jason Merrill
8d5d90878e Consider parm types equivalence for operator rewrite tiebreaker.
The C++ committee continues to discuss how best to avoid breaking existing
code with the new rules for reversed operators.  A recent suggestion was to
base the tie-breaker on the parameter types of the candidates, which made a
lot of sense to me, so this patch implements that.

This patch also mentions that a candidate was reversed or rewritten when
printing the list of candidates, and warns about a comparison that becomes
recursive under the new rules.  There is no flag for this warning; people
can silence it by swapping the operands.

	* call.c (same_fn_or_template): Change to cand_parms_match.
	(joust): Adjust.
	(print_z_candidate): Mark rewritten/reversed candidates.
	(build_new_op_1): Warn about recursive call with reversed arguments.

From-SVN: r278465
2019-11-19 15:22:12 -05:00
Pat Haugen
9a8819b882 rs6000.c (move_to_end_of_ready): New, factored out from common code.
* config/rs6000/rs6000.c (move_to_end_of_ready): New, factored out
	from common code.
	(power6_sched_reorder2): Factored out from rs6000_sched_reorder2,
	call new function.
	(power9_sched_reorder2): Call new function.
	(rs6000_sched_reorder2): Likewise.

From-SVN: r278463
2019-11-19 19:49:37 +00:00
Richard Sandiford
dd46a542a8 Move ChangeLog entry to correct file
From-SVN: r278461
2019-11-19 18:58:44 +00:00
Jan Hubicka
98450d1989 Remove unused parameter PROB in ipa-fnsummary.c
* ipa-fnsummary.c (estimate_edge_size_and_time): Drop parameter PROB.
	(estimate_calls_size_and_time): Update.

From-SVN: r278460
2019-11-19 18:57:50 +00:00
Jan Hubicka
ea8dd3b6ce Avoid redundant computations in edge_badness.
* ipa-inline.c (inlining_speedup): New function.
	(edge_badness): Use it.

From-SVN: r278459
2019-11-19 18:56:26 +00:00
Dragan Mladjenovic
4aa5fd8aca [MIPS] Prevent MSA branches from being put into delay slots
This patch tightens the instruction definitions to make sure
 that MSA branch instructions cannot be put into delay slots and have their
 delay slots eligible for being filled. Also, MSA *div*3 patterns use MSA
 branches for zero checks but are not marked as being multi instruction and
 thus could be put into delay slots. This patch fixes that.

gcc/ChangeLog:

2019-11-19  Zoran Jovanovic <zoran.jovanovic@mips.com>
		Dragan Mladjenovic  <dmladjenovic@wavecomp.com>

	* config/mips/mips-msa.md (msa_<msabr>_<msafmt_f>, msa_<msabr>_v_<msafmt_f>):
	Mark as not having "likely" version.
	* config/mips/mips.md (insn_count): The simd_div instruction with
	TARGET_CHECK_ZERO_DIV consists of 3 instructions.
	(can_delay): Exclude simd_branch.
	(defile_delay *): Add simd_branch instructions.
	They have one regular delay slot.

gcc/testsuite/ChangeLog:

2019-11-19  Dragan Mladjenovic  <dmladjenovic@wavecomp.com>

	* gcc.target/mips/msa-ds.c: New test.

From-SVN: r278458
2019-11-19 18:14:32 +00:00
Richard Sandiford
aa5355781f Revert r278441
To restore powerpc bootstrap.

2019-11-19  Richard Sandiford  <richard.sandiford@arm.com>
gcc/
	Revert:
	2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>

	* cse.c (cse_insn): Delete no-op register moves too.
	* simplify-rtx.c (comparison_to_mask): Handle unsigned comparisons.
	Take a second comparison to control the value for NE.
	(mask_to_comparison): Handle unsigned comparisons.
	(simplify_logical_relational_operation): Likewise.  Update call
	to comparison_to_mask.  Handle AND if !HONOR_NANs.
	(simplify_binary_operation_1): Call the above for AND too.

gcc/testsuite/
	Revert:
	2019-11-18  Richard Sandiford  <richard.sandiford@arm.com>

	* gcc.target/aarch64/sve/acle/asm/ptest_pmore.c: New test.

From-SVN: r278455
2019-11-19 16:31:17 +00:00
Wilco Dijkstra
4bf29d15f2 [AArch64] PR79262: Adjust vector cost
PR79262 has been fixed for almost all AArch64 cpus, however the example is still
vectorized in a few cases, resulting in lower performance.  Adjust the vector
cost slightly so that so that -mcpu=cortex-a53 now has identical performance as
-mcpu=cortex-a57 on libquantum.

    gcc/
	PR target/79262
	* config/aarch64/aarch64.c (generic_vector_cost): Adjust
	vec_to_scalar_cost.

From-SVN: r278452
2019-11-19 15:57:54 +00:00
Andrew Sutton
c286fb4ed5 re PR c++/89913 (ICE with invalid using declaration)
PR c++/89913

gcc/cp/
	* pt.c (get_underlying_template): Exit loop if the original type
	of the alias is null.

gcc/testsuite/
	* g++.dg/cpp2a/pr89913.C: New test.

From-SVN: r278451
2019-11-19 15:26:16 +00:00
Andrew Sutton
cce3c9db9e re PR c++/92078 (error: 'struct std::ptr<Iter>' redeclared with different access)
PR c++/92078

gcc/cp/
	* pt.c (maybe_new_partial_specialization): Apply access to newly
	created partial specializations. Update comment style.

gcc/testsuite/
	* g++.dg/cpp2a/concepts-pr92078.C: New.
  * g++.dg/cpp2a/concepts-requires18.C: Update diagnostics.

From-SVN: r278450
2019-11-19 15:18:50 +00:00
Andrew Sutton
7aabd67f18 Suppress diagnostics substituting into a requires-expression (PR c++/92403).
gcc/cp/
	* pt.c (tsubst_copy_and_build): Perform the first substitution without
	diagnostics and a second only if tsubst_requries_expr returns an error.

From-SVN: r278449
2019-11-19 15:11:14 +00:00
Martin Liska
8b24d594fe Restore init_ggc_heuristics.
2019-11-19  Martin Liska  <mliska@suse.cz>

	* toplev.c (general_init): Move the call...
	(toplev::main): ... here as we need init_options_struct
	being called.

From-SVN: r278448
2019-11-19 15:07:26 +00:00
Wilco Dijkstra
2485170158 [Arm] Set Armv7-A tune to Cortex-A53
By default Armv7-A tunes for Cortex-A8. This is an ancient core
today and the settings are no longer useful for newer cores. So
switch to Cortex-A53 tuning since it works well across a wide range
of modern cores.

On SPECINT2006 the performance gain is 0.7% compared to Cortex-A8 tuning,
and codesize reduces by 0.2%.

    gcc/
	* config/arm/arm-cpus.in (armv7): Set tune to Cortex-A53.
	(armv7-a): Likewise.
	(armv7ve): Likewise.

From-SVN: r278447
2019-11-19 14:20:12 +00:00
Andrew Stubbs
89842a5104 Update loop-1.c test for amdgcn
2019-11-19  Andrew Stubbs  <ams@codesourcery.com>

	gcc/testsuite/
	* gcc.dg/tree-ssa/loop-1.c: Change amdgcn assembler scan.

From-SVN: r278446
2019-11-19 14:04:27 +00:00
Richard Biener
ef8777c14c re PR tree-optimization/92581 (condition chains vectorized wrongly)
2019-11-19  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/92581
	* tree-vect-loop.c (vect_create_epilog_for_reduction): For
	condition reduction chains gather all conditions involved
	for computing the index reduction vector.

	* gcc.dg/vect/vect-cond-reduc-5.c: New testcase.

From-SVN: r278445
2019-11-19 14:00:46 +00:00
Dennis Zhang
ef01e6bbeb [AArch64] Implement Armv8.5-A memory tagging (MTE) intrinsics
2019-11-19  Dennis Zhang  <dennis.zhang@arm.com>

	* config/aarch64/aarch64-builtins.c (enum aarch64_builtins): Add
	AARCH64_MEMTAG_BUILTIN_START, AARCH64_MEMTAG_BUILTIN_IRG,
	AARCH64_MEMTAG_BUILTIN_GMI, AARCH64_MEMTAG_BUILTIN_SUBP,
	AARCH64_MEMTAG_BUILTIN_INC_TAG, AARCH64_MEMTAG_BUILTIN_SET_TAG,
	AARCH64_MEMTAG_BUILTIN_GET_TAG, and AARCH64_MEMTAG_BUILTIN_END.
	(aarch64_init_memtag_builtins): New.
	(AARCH64_INIT_MEMTAG_BUILTINS_DECL): New macro.
	(aarch64_general_init_builtins): Call aarch64_init_memtag_builtins.
	(aarch64_expand_builtin_memtag): New.
	(aarch64_general_expand_builtin): Call aarch64_expand_builtin_memtag.
	(AARCH64_BUILTIN_SUBCODE): New macro.
	(aarch64_resolve_overloaded_memtag): New.
	(aarch64_resolve_overloaded_builtin_general): New. Call
	aarch64_resolve_overloaded_memtag to handle overloaded MTE builtins.
	* config/aarch64/aarch64-c.c (aarch64_update_cpp_builtins): Define
	__ARM_FEATURE_MEMORY_TAGGING when enabled.
	(aarch64_resolve_overloaded_builtin): Call
	aarch64_resolve_overloaded_builtin_general.
	* config/aarch64/aarch64-protos.h
	(aarch64_resolve_overloaded_builtin_general): New declaration.
	* config/aarch64/aarch64.h (AARCH64_ISA_MEMTAG): New macro.
	(TARGET_MEMTAG): Likewise.
	* config/aarch64/aarch64.md (UNSPEC_GEN_TAG): New unspec.
	(UNSPEC_GEN_TAG_RND, and UNSPEC_TAG_SPACE): Likewise.
	(irg, gmi, subp, addg, ldg, stg): New instructions.
	* config/aarch64/arm_acle.h (__arm_mte_create_random_tag): New macro.
	(__arm_mte_exclude_tag, __arm_mte_ptrdiff): Likewise.
	(__arm_mte_increment_tag, __arm_mte_set_tag): Likewise.
	(__arm_mte_get_tag): Likewise.
	* config/aarch64/predicates.md (aarch64_memtag_tag_offset): New.
	(aarch64_granule16_uimm6, aarch64_granule16_simm9): New.
	* config/arm/types.md (memtag): New.
	* doc/invoke.texi (-memtag): Update description.

2019-11-19  Dennis Zhang  <dennis.zhang@arm.com>

	* gcc.target/aarch64/acle/memtag_1.c: New test.
	* gcc.target/aarch64/acle/memtag_2.c: New test.
	* gcc.target/aarch64/acle/memtag_3.c: New test.

From-SVN: r278444
2019-11-19 13:43:39 +00:00
Richard Henderson
35ba842f23 arm: Fixes for asm-flags vs thumb1 and ilp32
Thumb1 cannot support asm-flags currently, because we don't expose the
flags register to the compiler.  Disable the support for that case.

Adjust the asm-flag-6 test for aarch64 ilp32 correctness.

gcc/
	* config/arm/arm-c.c (arm_cpu_builtins): Use def_or_undef_macro
	to define __GCC_ASM_FLAG_OUTPUTS__.
	* config/arm/arm.c (thumb1_md_asm_adjust): New function.
	(arm_option_params_internal): Swap out targetm.md_asm_adjust
	depending on TARGET_THUMB1.
	* doc/extend.texi (FlagOutputOperands): Document thumb1 restriction.

gcc/testsuite/
	* testsuite/gcc.target/arm/asm-flag-3.c: Skip for thumb1.
	* testsuite/gcc.target/arm/asm-flag-5.c: Likewise.
	* testsuite/gcc.target/arm/asm-flag-6.c: Likewise.
	* testsuite/gcc.target/arm/asm-flag-4.c: New test.

	* testsuite/gcc.target/aarch64/asm-flag-6.c: Use %w for
	asm inputs to cmp instruction for ILP32.

From-SVN: r278443
2019-11-19 05:14:20 -08:00
Jonathan Wakely
5ecaaf98dc libstdc++: Fix declarations of variable templates
This code is invalid and rejected by other compilers (see PR 92576).

	* include/bits/regex.h (ranges::__detail::__enable_view_impl): Fix
	declaration.
	* include/bits/stl_multiset.h (ranges::__detail::__enable_view_impl):
	Likewise.
	* include/bits/stl_set.h (ranges::__detail::__enable_view_impl):
	Likewise.
	* include/bits/unordered_set.h (ranges::__detail::__enable_view_impl):
	Likewise.
	* include/debug/multiset.h (ranges::__detail::__enable_view_impl):
	Likewise.
	* include/debug/set.h (ranges::__detail::__enable_view_impl): Likewise.
	* include/debug/unordered_set (ranges::__detail::__enable_view_impl):
	Likewise.

From-SVN: r278440
2019-11-19 09:34:59 +00:00
Jakub Jelinek
63b8871190 re PR target/92549 (Use x86 xchg instruction more)
PR target/92549
	* config/i386/i386.md (peephole2 for *swap<mode>): New peephole2.

	* gcc.target/i386/pr92549.c: New test.

From-SVN: r278439
2019-11-19 10:31:59 +01:00
Jakub Jelinek
beeac4c271 re PR middle-end/91450 (__builtin_mul_overflow(A,B,R) wrong code if product < 0, *R is unsigned, and !(A&B))
PR middle-end/91450
	* internal-fn.c (expand_mul_overflow): For s1 * s2 -> ur, if one
	operand is negative and one non-negative, compare the non-negative
	one against 0 rather than comparing s1 & s2 against 0.  Otherwise,
	don't compare (s1 & s2) == 0, but compare separately both s1 == 0
	and s2 == 0, unless one of them is known to be negative.  Remove
	tem2 variable, use tem where tem2 has been used before.

	* gcc.c-torture/execute/pr91450-1.c: New test.
	* gcc.c-torture/execute/pr91450-2.c: New test.

From-SVN: r278437
2019-11-19 10:15:53 +01:00
Eric Botcazou
655b60f966 * doc/invoke.texi (-gno-internal-reset-location-views): Fix typo.
From-SVN: r278434
2019-11-19 09:12:09 +00:00
Jakub Jelinek
863bbe2b5f re PR c++/92504 (ICE on gcc-9 -fopenmp: internal compiler error: tree check: expected tree that contains 'decl common' structure, have 'baselink' in get_inner_reference, at expr.c:7238)
PR c++/92504
	* semantics.c (handle_omp_for_class_iterator): Don't call
	cp_fully_fold on cond.

	* g++.dg/gomp/pr92504.C: New test.

From-SVN: r278433
2019-11-19 09:52:31 +01:00
Jakub Jelinek
b51d4ebc38 re PR tree-optimization/92557 (ICE in omp_clause_aligned_alignment, at omp-low.c:4090)
PR tree-optimization/92557
	* omp-low.c (omp_clause_aligned_alignment): Punt if TYPE_MODE is not
	vmode rather than asserting it always is.

	* gcc.dg/gomp/pr92557.c: New test.

From-SVN: r278432
2019-11-19 09:51:31 +01:00