Commit Graph

185883 Commits

Author SHA1 Message Date
Bob Duff
40f464256c [Ada] Incorrect Reinit_Field_To_Zero calls for concurrent entities
gcc/ada/

	* sem_ch3.adb (Make_Class_Wide_Type): Make sure all the calls to
	Reinit_Field_To_Zero are for the correct Ekinds.
2021-06-15 06:19:36 -04:00
Bob Duff
811b8aa536 [Ada] No_Task_Parts aspect
gcc/ada/

	* aspects.ads (No_Task_Parts): New aspect.
	* snames.ads-tmpl: Add the aspect name.
	* exp_ch6.adb (Might_Have_Tasks): Return False if this is a
	class-wide type whose specific type has No_Task_Parts.
	* freeze.adb (Check_No_Parts_Violations): This is an adaptation
	of the procedure formerly known as
	Check_No_Controlled_Parts_Violations, which now supports both
	No_Controlled_Parts and No_Task_Parts.  It takes a parameter
	indicating which aspect is being checked.
	(Freeze_Entity): Call Check_No_Parts_Violations for both
	aspects.
	* sem_ch13.adb (Analyze_Aspect_Specifications): The code for
	Aspect_No_Controlled_Parts already works as is with
	Aspect_No_Task_Parts.
	* libgnat/a-iteint.ads: Add No_Task_Parts aspect to the two
	iterator iterfaces.
	* doc/gnat_rm/implementation_defined_aspects.rst: Add
	documentation for the No_Task_Parts aspect.
	* gnat_rm.texi: Regenerate.
2021-06-15 06:19:35 -04:00
Arnaud Charlet
4cee20bb1e [Ada] Fix handling of scopes for subprogram calls in unnesting
gcc/ada/

	* exp_unst.adb (Unnest_Subprogram.Build_Table.Visit_Node): Fix
	handling of scopes for subprogram calls.
2021-06-15 06:19:34 -04:00
Piotr Trojanek
903655af70 [Ada] Fix detection of access-to-variable types
gcc/ada/

	* sem_prag.adb: Fix typos in comments related to access types.
	* sem_util.adb (Is_Access_Variable): Stronger condition.
2021-06-15 06:19:33 -04:00
Arnaud Charlet
abcf517497 [Ada] Use runtime from base compiler during stage1
gcc/ada/

	* Make-generated.in: Add rule to copy runtime files needed
	during stage1.
	* raise.c: Remove obsolete symbols used during bootstrap.
	* gcc-interface/Make-lang.in: Do not use libgnat sources during
	stage1.
	(GNAT_ADA_OBJS, GNATBIND_OBJS): Split in two parts, the common
	part and the part only used outside of stage1.
	(ADA_GENERATED_FILES): Add runtime files needed during bootstrap
	when recent APIs are needed.
	(ada/b_gnatb.adb): Remove prerequisite.
	* gcc-interface/system.ads: Remove obsolete entries.
2021-06-15 06:19:32 -04:00
Eric Botcazou
472c843467 [Ada] Minor consistency fix for Windows SEH
gcc/ada/

	* raise-gcc.c (__gnat_personality_seh0): Use PERSONALITY_FUNCTION.
2021-06-15 06:19:31 -04:00
Ed Schonberg
9e47051a37 [Ada] AI12-0138: Iterators and other nonoverridable aspects
gcc/ada/

	* sem_util.adb (Is_Confirming): Separate the handling of
	Implicit_Dereference, for which no pragma is generated but which
	is already checked for legality in Sem_Ch13, including renamed
	discriminants in a derived type.
	(Is_Confirming, Same_Name): For expanded names, only check
	matching of selector, because prefix may correspond to original
	and derived types with different names and/or scopes. Semantic
	checks on aspect expression have already verified its legality.
	Add comments regarding possible gaps in RM description of the
	feature.
2021-06-15 06:19:30 -04:00
Gary Dismukes
3d4fbcb4c9 [Ada] Error when passing subprogram'Access to null-defaulted formal subprogram
gcc/ada/

	* freeze.adb (Freeze_Subprogram): Don't propagate conventions
	Intrinsic or Entry to anonymous access-to-subprogram types
	associated with subprograms having those conventions. Update
	related comment.
	* sem_attr.adb (Resolve_Attribute, Attribute_*Access): Remove
	special-case warning code for cases where a called subprogram
	has convention Intrinsic as well as its formal's type (the
	expected type for the Access attribute), since this case can no
	longer occur.
2021-06-15 06:19:29 -04:00
Piotr Trojanek
d675f35287 [Ada] Fix typos in comment about expansion of attribute Image
gcc/ada/

	* exp_imgv.adb (Expand_User_Defined_Enumeration_Image): Fix
	typos.
2021-06-15 06:19:28 -04:00
Bob Duff
df3db34e57 [Ada] Allow Known_Static_Component_Size (etc) on private types
gcc/ada/

	* einfo-utils.adb (Known_Component_Size,
	Known_Static_Component_Size, Unknown_Component_Size): Use
	Implementation_Base_Type instead of Base_Type.
2021-06-15 06:19:27 -04:00
Bob Duff
65067cb65d [Ada] Add Interface_Name field to E_Loop_Parameter
gcc/ada/

	* gen_il-gen-gen_entities.adb (E_Loop_Parameter): Add
	Interface_Name field.
2021-06-15 06:19:26 -04:00
Bob Duff
d31c2b9433 [Ada] Disable certain checks in predefined units
gcc/ada/

	* sem_cat.adb (Check_Non_Static_Default_Expr): Allow nonstatic
	expression in predefined unit with pragma Preelaborate.
2021-06-15 06:19:26 -04:00
Yannick Moy
688fb8553b [Ada] Clarify the semantics of signed intrinsic shift operations
gcc/ada/

	* doc/gnat_rm/intrinsic_subprograms.rst: More details on shift
	operations for signed types. Also add the missing Import and
	Convention on the example.
	* gnat_rm.texi: Regenerate.
2021-06-15 06:19:25 -04:00
Eric Botcazou
385484ef92 [Ada] Small cleanup in exception handling C code
gcc/ada/

	* raise-gcc.c: Include <cstdarg> instead of <stdarg.h> in C++.
	Include <stdbool.h> and unconditionally <stdlib.h> in C.
2021-06-15 06:19:24 -04:00
Piotr Trojanek
9880492caa [Ada] Remove redundant guard from Find_Overlaid_Entity
gcc/ada/

	* sem_util.ads (Find_Overlaid_Entity): Simplify comment for
	spec.
	* sem_util.adb (Find_Overlaid_Entity): Remove defensive code
	from body.
2021-06-15 06:19:23 -04:00
Eric Botcazou
86347b2d8d [Ada] Remove const qualifier on a couple of pointed-to types
gcc/ada/

	* argv.c: Add include of <stdlib.h> for the runtime.
	(gnat_argv): Change type to char ** and initialize to NULL.
	(gnat_envp): Likewise.
	* argv-lynxos178-raven-cert.c: Add include of <stdlib.h>.
	(gnat_argv): Change type to char ** and initialize to NULL.
	(gnat_envp): Likewise.
2021-06-15 06:19:22 -04:00
Bob Duff
b233916016 [Ada] Fix bug in if_expressions introduced by var-size nodes changes
gcc/ada/

	* gen_il-gen.adb (Setter_Needs_Parent): Add missing
	Then_Actions.  Fix self-contradictory comment.
	* exp_util.adb (Insert_Actions): Minor comment improvments.
2021-06-15 06:19:21 -04:00
Arnaud Charlet
f1e93d3f1a [Ada] Add support for folding more and/or expressions
gcc/ada/

	* sem_eval.adb (Eval_Logical_Op, Test_Expression_Is_Foldable):
	Add support for folding more "and"/"or" expressions.
	* exp_util.adb (Side_Effect_Free): Fix handling of membership
	tests.
2021-06-15 06:19:20 -04:00
Piotr Trojanek
69558e562c [Ada] Replace repeated calls by references to a local object
gcc/ada/

	* sem_res.adb (Resolve_Actual): Replace repeated calls to
	"Etype (F)" with references to "F_Typ", which keeps the results
	of exactly that call.
2021-06-15 06:19:19 -04:00
Bob Duff
5fdd694a74 [Ada] Variable-sized node types: improve error messages
gcc/ada/

	* gen_il-gen.adb (To_Bit_Offset): Use 'Base to avoid overflow in
	computations in Last_Bit when Offset = 'Last.
	(Choose_Offset): Give a better error message when we run out of
	fields.  In particular, point out that
	Gen_IL.Internals.Bit_Offset'Last needs to be increased.
2021-06-15 06:19:18 -04:00
Bob Duff
a7cadd1860 [Ada] Variable-sized node types -- cleanup
gcc/ada/

	* atree.ads, einfo-utils.ads, einfo-utils.adb, fe.h, gen_il.adb,
	gen_il.ads, gen_il-gen-gen_entities.adb,
	gen_il-gen-gen_nodes.adb, sem_ch12.adb, sem_ch3.adb,
	sem_util.adb, sinfo-utils.ads, treepr.adb, types.ads: Clean up
	??? comments and other comments.
	* atree.adb: Clean up ??? comments and other comments.
	(Validate_Node): Fix bug: "Off_0 (N) < Off_L (N)"
	should be "Off_0 (N) <= Off_L (N)".
	* gen_il-gen.adb, gen_il-gen.ads: Clean up ???
	comments and other comments.  Add support for getter-specific
	and setter-specific preconditions.  Detect the error of putting
	a field in the wrong subrange.  Misc cleanup.
	(Node_Field vs. Entity_Field): Clean up Nmake.  Improve
	comments.
	* gen_il-utils.ads: Misc cleanup. Move...
	* gen_il-internals.ads: ... here.
	* gen_il-utils.adb: Misc cleanup. Move...
	* gen_il-internals.adb: ... here.
	* gen_il-fields.ads: Move Was_Default_Init_Box_Association,
	which was in the wrong subrange.  Add comments.  Misc cleanup.
	* gen_il-types.ads: Add Named_Access_Kind.
	* sinfo-cn.adb: Clean up ??? comments and other comments.
	Remove redundant assertions.
	* einfo.ads, sinfo.ads: Clean up ??? comments and other
	comments.  Remove all the comments indicating field offsets.
	These are obsolete now that Gen_IL computes the offsets
	automatically.
2021-06-15 06:19:16 -04:00
Arnaud Charlet
81e68a1954 [Ada] Rename Ada 202* to Ada 2022
gcc/ada/

	* einfo.ads, errout.adb, errout.ads, exp_aggr.adb, exp_ch5.adb,
	exp_ch6.adb, exp_ch8.adb, exp_ch9.adb, exp_imgv.adb,
	exp_put_image.adb, fe.h, impunit.adb, impunit.ads,
	libgnat/a-cobove.ads, libgnat/a-convec.ads, opt.ads,
	par-ch12.adb, par-ch3.adb, par-ch4.adb, par-ch5.adb,
	par-ch6.adb, par-prag.adb, par-util.adb, scans.ads, scng.adb,
	sem_aggr.adb, sem_attr.adb, sem_ch10.adb, sem_ch12.adb,
	sem_ch13.adb, sem_ch3.adb, sem_ch5.adb, sem_ch6.adb,
	sem_ch8.adb, sem_elab.adb, sem_eval.adb, sem_prag.adb,
	sem_res.adb, sem_type.adb, sem_util.adb, sem_util.ads,
	sinfo.ads, snames.ads-tmpl, sprint.adb, switch-c.adb, usage.adb,
	doc/gnat_ugn/building_executable_programs_with_gnat.rst,
	doc/gnat_rm/implementation_defined_aspects.rst,
	gcc-interface/trans.c: Update all references to Ada 2020 to Ada
	2022. Rename pragma Ada_2020 to Ada_2022.  Update documentation
	accordingly.
	* gnat_ugn.texi, gnat_rm.texi: Regenerate.
2021-06-15 06:19:14 -04:00
Steve Baird
4dbdeeb889 [Ada] Avoid inappropriate error messages regarding aggregates and variant parts
gcc/ada/

	* sem_util.adb (Gather_Components): Factor the test that was
	already being used to govern emitting a pre-Ada_2020 error
	message into an expression function,
	OK_Scope_For_Discrim_Value_Error_Messages. Call that new
	function in two places: the point where the same test was being
	performed previously, and in governing emission of a newer
	Ada_2020 error message. In both cases, the out-mode parameter
	Gather_Components.Report_Errors is set to True even if no error
	messages are generated within Gather_Components.
	* sem_util.ads: Correct a comment.
2021-06-15 06:19:13 -04:00
Richard Kenner
44d27e8e73 [Ada] Add more initialization of Stored_Constraint
gcc/ada/

	* sem_ch3.adb (Array_Type_Declaration, Build_Derived_Type):
	Reinitialize Stored_Constraint when needed.
	(Set_Modular_Size): Likewise.
	* atree.adb: (Check_Vanishing_Fields): Add node id to debugging
	information.
2021-06-15 06:19:11 -04:00
Bob Duff
a5db70e78a [Ada] Fix bug in subtype of private type with invariants
gcc/ada/

	* sem_util.adb (Propagate_Invariant_Attributes): Call
	Set_Has_Own_Invariants on the base type, because these are
	Base_Type_Only. The problem is that the base type of a type is
	indeed a base type when Set_Base_Type is called, but then the
	type is mutated into a subtype in rare cases.
	* atree.ads, atree.adb (Is_Entity): Export. Correct subtype of
	parameter in body.
	* gen_il-gen.adb: Improve getters so that "Pre => ..." can refer
	to the value of the field. Put Warnings (Off) on some with
	clauses that are not currently used, but might be used by such
	Pre's.
2021-06-15 06:19:10 -04:00
Piotr Trojanek
ed17bbe3c3 [Ada] Robust switching from incomplete to access types
gcc/ada/

	* sem_ch3.adb (Access_Type_Declaration): Add comments to explain
	the ordering of Mutate_Kind and Set_Directly_Designated_Type;
	remove temporary setting of Ekind to E_Access_Type for building
	_master objects, since now the Ekind is already set to its final
	value. Move repeated code into Setup_Access_Type routine and use
	it so that Process_Subtype is executed before mutating the kind
	of the type entity.
	* gen_il-gen-gen_entities.adb (Gen_Entities): Remove
	Directly_Designated_Type from E_Void, E_Private_Record,
	E_Limited_Private_Type and Incomplete_Kind; now it only belongs
	to Access_Kind entities.
	* sem_util.adb: Minor reformatting.
2021-06-15 06:19:09 -04:00
Jakub Jelinek
008153c843 expr: Fix up VEC_PACK_TRUNC_EXPR expansion [PR101046]
The following testcase ICEs, because we have a mode mismatch.
VEC_PACK_TRUNC_EXPR's operands have different modes from the result
(same vector mode size but twice as large element),
but we were passing non-NULL subtarget with the mode of the result
to the expansion of its arguments, so the VEC_PERM_EXPR in one of the
operands which had V8SImode operands and result had V16HImode target.

Fixed by clearing the subtarget if we are changing mode.

2021-06-15  Jakub Jelinek  <jakub@redhat.com>

	PR target/101046
	* expr.c (expand_expr_real_2) <case VEC_PACK_FIX_TRUNC_EXPR,
	case VEC_PACK_TRUNC_EXPR>: Clear subtarget when changing mode.

	* gcc.target/i386/pr101046.c: New test.
2021-06-15 11:36:47 +02:00
Richard Biener
dfef1164b1 Handle multiple latches in irreducible region mark
The following makes irreducible region discovery handle multiple latches.

2021-06-14  Richard Biener  <rguenther@suse.de>

	* cfgloopanal.c (mark_irreducible_loops): Use a dominance
	check to identify loop latches.
	* cfgloop.c (verify_loop_structure): Likewise.
	* loop-init.c (apply_loop_flags): Allow marked irreducible
	regions even with multiple latches.
	* predict.c (rebuild_frequencies): Simplify.
2021-06-15 10:31:16 +02:00
Richard Biener
b10f895f41 Assert we have irreducible regions marked in the threader
This adds an assert that would fire if any thread path registry
user runs into the check that relies on such regions marked.

2021-06-15  Richard Biener  <rguenther@suse.de>

	* tree-ssa-threadupdate.c
	(jump_thread_path_registry::mark_threaded_blocks): Assert we
	have marked irreducible regions.
2021-06-15 10:29:27 +02:00
Robin Dapp
3fe5464537 testsuite: Fix Wattributes test cases for s390 and add new tests.
There are several FAILs because we have an s390-specific check for a
warning which is not necessary anymore.  Remove it.

Add a new test case that expects a warning about conflicting function
alignment.  This would fail on s390 before but most likely on other
targets as well so it can be a target-independent test.

Also, add a test to verify that we do not emit a note when specifying
conflicting alignment for the same declaration.  Need to explicitly
handle every dg-note because handling one disables dg-note pruning.

gcc/testsuite/ChangeLog:

	* c-c++-common/Wattributes.c: Remove s390-specific check and add
	new tests.
	* gcc.dg/Wattributes-6.c: Likewise.
2021-06-15 09:38:23 +02:00
Robin Dapp
ba2eef033e c-family: Copy DECL_USER_ALIGN even if DECL_ALIGN is similar.
When re-declaring a function with differing attributes DECL_USER_ALIGN
is usually not merged/copied when DECL_ALIGN is similar.  On s390 this
will cause a warning message not to be shown.  Similarly, we warned
about the wrong alignment when short-circuiting an alignment initialization in
common_handle_aligned_attribute ().

Fix this by copying DECL_USER_ALIGN even if DECL_ALIGN is similar as
well as getting rid of the short-circuited initialization.

gcc/c-family/ChangeLog:

	* c-attribs.c (common_handle_aligned_attribute): Remove short
	circuit and dead code.

gcc/c/ChangeLog:

	* c-decl.c (merge_decls): Copy DECL_USER_ALIGN if DECL_ALIGN is
	similar.

gcc/cp/ChangeLog:

	* decl.c (duplicate_decls): Likewise.
2021-06-15 09:12:55 +02:00
Xionghu Luo
327a6b55e1 rs6000: Fix test case failures by PR100085 [PR101020]
Tested pass, committing as obvious.

gcc/testsuite/ChangeLog:

2021-06-14  Xionghu Luo  <luoxhu@linux.ibm.com>

	PR target/101020
	* gcc.target/powerpc/float128-call.c: Adjust counts for be and le.
2021-06-14 20:05:36 -05:00
GCC Administrator
8dc48181af Daily bump. 2021-06-15 00:16:37 +00:00
Martin Sebor
d9f1466f88 Teach compute_objsize about placement new [PR100876].
Resolves:
PR c++/100876 - -Wmismatched-new-delete should understand placement new when it's not inlined

gcc/ChangeLog:

	PR c++/100876
	* builtins.c (gimple_call_return_array): Check for attribute fn spec.
	Handle calls to placement new.
	(ndecl_dealloc_argno): Avoid placement delete.

gcc/testsuite/ChangeLog:

	PR c++/100876
	* g++.dg/warn/Wmismatched-new-delete-4.C: New test.
	* g++.dg/warn/Wmismatched-new-delete-5.C: New test.
	* g++.dg/warn/Wstringop-overflow-7.C: New test.
	* g++.dg/warn/Wfree-nonheap-object-6.C: New test.
	* g++.dg/analyzer/placement-new.C: Prune out expected warning.
2021-06-14 16:48:42 -06:00
Jonathan Wakely
f9598d89a9 libstdc++: Fix noexcept-specifier for ranges::empty
Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	* include/bits/ranges_base.h (ranges::empty): Check whether
	conversion to bool can throw.
	* testsuite/std/ranges/access/empty.cc: Check for correct
	noexcept-specifier.
2021-06-14 23:13:16 +01:00
Peter Bergner
20073534c0 rs6000: MMA builtin usage ICEs when used in a #pragma omp parallel and using -fopenmp [PR100777]
Using an MMA builtin within an openmp parallel code block, leads to an SSA
verification ICE on the temporaries we create while expanding the MMA builtins
at gimple time.  The solution is to use create_tmp_reg_or_ssa_name(), which
knows when to create either an SSA or register temporary.

2021-06-14  Peter Bergner  <bergner@linux.ibm.com>

gcc/
	PR target/100777
	* config/rs6000/rs6000-call.c (rs6000_gimple_fold_mma_builtin): Use
	create_tmp_reg_or_ssa_name().

gcc/testsuite/
	PR target/100777
	* gcc.target/powerpc/pr100777.c: New test.
2021-06-14 16:55:18 -05:00
Andrew MacLeod
ecc5644fa3 Limit new value calculations to first order effects.
When utilzing poor values during propagation, we mostly care about values that
were undefined/processed directly used in calcualting the SSA_NAME being
processed.  2nd level derivations of such poor values rarely affect the
inital calculation.  Leave them to when they are directly encountered.

	* gimple-range-cache.cc (ranger_cache::ranger_cache): Adjust.
	(ranger_cache::enable_new_values): Set to specified value and
	return the old value.
	(ranger_cache::disable_new_values): Delete.
	(ranger_cache::fill_block_cache): Disable non 1st order derived
	poor values.
	* gimple-range-cache.h (ranger_cache): Adjust prototypes.
	* gimple-range.cc (gimple_ranger::range_of_expr): Adjust.
2021-06-14 17:06:32 -04:00
Jonathan Wakely
c37b5ddcc8 libstdc++: Fix common_reference for non-reference results [PR100894]
The result of COMMON-REF(A&, B&&) where they have no common reference
type should not be a reference. The implementation of COMMON-REF fails
to check that the result is a reference, so is well-formed when it
shouldn't be. This means that common_reference uses that result when it
shouldn't.

The fix is to reject the result of COMMON-REF(A, B) if it's not a
reference, so that common_reference falls through to the next case,
which uses COND-RES, which yields a non-reference result.

Signed-off-by: Jonathan Wakely <jwakely@redhat.com>

libstdc++-v3/ChangeLog:

	PR libstdc++/100894
	* include/std/type_traits (__common_ref_impl<X&, Y&>): Only
	use the type if it's a reference.
	* testsuite/20_util/common_reference/100894.cc: New test.
2021-06-14 21:17:53 +01:00
Uros Bizjak
4986946f3b i386: Split V2HImode *punpckwd to SSE instruction [PR101058]
V2HImode *punpckwd should not be split to the insn that depends on
TARGET_MMX_WITH_SSE, since the later is disabled on 32bit targets.

Also return true early from ix86_vectorize_vec_perm_const when testing
with V2HI mode.  *punpckwd can be used to implement all permutations.

2021-06-14  Uroš Bizjak  <ubizjak@gmail.com>

gcc/
	PR target/101058
	* config/i386/i386-expand.c (ix86_vectorize_vec_perm_const):
	Return true early when testing with V2HImode.
	* config/i386/mmx.md (*punpckwd): Split to sse2_pshuflw_1.

gcc/testsuite/

	PR target/101058
	* gcc.target/i386/pr101058.c: New test.
2021-06-14 20:57:11 +02:00
Jonathan Wakely
93bfadf3a1 c-family: Add fix-it suggestions for more <stdlib.h> names [PR101052]
PR c++/101052

gcc/c-family/ChangeLog:

	* known-headers.cc (get_stdlib_header_for_name): Add known
	headers for EXIT_FAILURE, EXIT_SUCCESS, abort, atexit, calloc,
	exit, and getenv.

gcc/testsuite/ChangeLog:

	* g++.dg/spellcheck-stdlib.C: Add checks for <cstdlib> names.
	* gcc.dg/spellcheck-stdlib.c: Likewise.
2021-06-14 18:24:10 +01:00
Christophe Lyon
046a3beb16 arm: Auto-vectorization for MVE: add pack/unpack patterns
This patch adds vec_unpack<US>_hi_<mode>, vec_unpack<US>_lo_<mode>,
vec_pack_trunc_<mode> patterns for MVE.

It does so by moving the unpack patterns from neon.md to
vec-common.md, while adding them support for MVE. The pack expander is
derived from the Neon one (which in turn is renamed into
neon_quad_vec_pack_trunc_<mode>).

The patch introduces mve_vec_unpack<US>_lo_<mode> and
mve_vec_unpack<US>_hi_<mode> which are similar to their Neon
counterparts, except for the assembly syntax.

The patch introduces mve_vec_pack_trunc_lo_<mode> to avoid the need for a
zero-initialized temporary, which is needed if the
vec_pack_trunc_<mode> expander calls @mve_vmovn[bt]q_<supf><mode>
instead.

With this patch, we can now vectorize the 16 and 8-bit versions of
vclz and vshl, although the generated code could still be improved.
For test_clz_s16, we now generate
        vldrh.16        q3, [r1]
        vmovlb.s16   q2, q3
        vmovlt.s16   q3, q3
        vclz.i32  q2, q2
        vclz.i32  q3, q3
        vmovnb.i32      q1, q2
        vmovnt.i32      q1, q3
        vstrh.16        q1, [r0]
which could be improved to
        vldrh.16        q3, [r1]
	vclz.i16	q1, q3
        vstrh.16        q1, [r0]
if we could avoid the need for unpack/pack steps.

For reference, clang-12 generates:
	vldrh.s32       q0, [r1]
	vldrh.s32       q1, [r1, #8]
	vclz.i32        q0, q0
	vstrh.32        q0, [r0]
	vclz.i32        q0, q1
	vstrh.32        q0, [r0, #8]

2021-06-11  Christophe Lyon  <christophe.lyon@linaro.org>

	gcc/
	* config/arm/mve.md (mve_vec_unpack<US>_lo_<mode>): New pattern.
	(mve_vec_unpack<US>_hi_<mode>): New pattern.
	(@mve_vec_pack_trunc_lo_<mode>): New pattern.
	(mve_vmovntq_<supf><mode>): Prefix with '@'.
	* config/arm/neon.md (vec_unpack<US>_hi_<mode>): Move to
	vec-common.md.
	(vec_unpack<US>_lo_<mode>): Likewise.
	(vec_pack_trunc_<mode>): Rename to
	neon_quad_vec_pack_trunc_<mode>.
	* config/arm/vec-common.md (vec_unpack<US>_hi_<mode>): New
	pattern.
	(vec_unpack<US>_lo_<mode>): New.
	(vec_pack_trunc_<mode>): New.

	gcc/testsuite/
	* gcc.target/arm/simd/mve-vclz.c: Update expected results.
	* gcc.target/arm/simd/mve-vshl.c: Likewise.
	* gcc.target/arm/simd/mve-vec-pack.c: New test.
	* gcc.target/arm/simd/mve-vec-unpack.c: New test.
2021-06-14 16:39:21 +00:00
Tobias Burnus
12d13cf50f C/C++: Fix unused set var warning with omp_clause_affinity [PR100913]
PR c/100913
gcc/c/ChangeLog:

	* c-parser.c (c_parser_omp_clause_affinity): No need to set iterator
	var in the error case.

gcc/cp/ChangeLog:

	* parser.c (cp_parser_omp_clause_affinity): No need to set iterator
	var in the error case.
2021-06-14 16:49:24 +02:00
Richard Biener
788bb7edb3 tree-optimization/100934 - properly mark irreducible regions for DOM
The jump threading code requires marked irreducible regions for the
purpose of validating jump threading paths but DOM fails to provide
that resulting in mised number of iteration upper bounds clearing.

2021-06-14  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/100934
	* tree-ssa-dom.c (pass_dominator::execute): Properly
	mark irreducible regions.

	* gcc.dg/torture/pr100934.c: New testcase.
2021-06-14 16:37:23 +02:00
Jonathan Wakely
a40d2293a7 libstdc++: Only run Filesystem TS test if supported
libstdc++-v3/ChangeLog:

	* testsuite/experimental/filesystem/path/native/conv_c++23.cc:
	Add dg-require-filesystem-ts directive.
2021-06-14 15:10:56 +01:00
Jonathan Wakely
14f26c75d2 libstdc++: Fix std::any constraints [PR101034]
PR libstdc++/101034

libstdc++-v3/ChangeLog:

	* include/std/any (any(in_place_t<T>, initializer_list<U>, A&&...))
	(any::emplace<T>(initializer_list<U>, A&&...)): Fix constraint
	to use lvalue.
	* testsuite/20_util/any/cons/101034.cc: New test.
2021-06-14 15:10:56 +01:00
Martin Liska
046198673c docs: Fix -Wno-cpp note
gcc/ChangeLog:

	* doc/invoke.texi: Put r{...} on the same line as @item.
2021-06-14 16:07:10 +02:00
Martin Liska
9b239c9147 docs: add missing newline
gcc/ChangeLog:

	* doc/invoke.texi: Add missing newline.
2021-06-14 16:04:13 +02:00
Martin Liska
f389f2a035 docs: remove extra '+' character in option listing.
gcc/ChangeLog:

	* doc/invoke.texi: Remove '+' charasters.
2021-06-14 15:36:38 +02:00
Jonathan Wakely
45fb3d45a4 libstdc++: Add explicit -std=gnu++17 option to test
This test has no -std option so when the testsuite is run with
-std=gnu++20 or later, this test will use that. The recent addition of
no_unique_address will cause it to FAIL, because that's a reserved word
after C++17. Add an explicit option, so that this test alays uses
exactly C++17.

libstdc++-v3/ChangeLog:

	* testsuite/17_intro/headers/c++2017/all_attributes.cc: Add
	-std=gnu++17 option.
2021-06-14 14:04:45 +01:00
Jonathan Wakely
b76a529c09 libstdc++: Implement LWG 3465 for std::compare_partial_order_fallback [PR101056]
libstdc++-v3/ChangeLog:

	PR libstdc++/101056
	* libsupc++/compare (compare_partial_order_fallback): Add
	constraint using reversed parameter order, as per LWG 3465.
	* testsuite/18_support/comparisons/algorithms/fallback.cc:
	Adjust expected result.
2021-06-14 14:04:45 +01:00