Commit Graph

177536 Commits

Author SHA1 Message Date
David Edelsohn 19019cd301 aix: xfail pure-virtual1.C expects weak __cxa_pure_virtual
The testcase expects __cxa_pure_virtual to be weak to avoid an
implicit dependency.  This does not occur on AIX, so expect this testcase
to fail on AIX.

gcc/testsuite/ChangeLog

2020-06-11  David Edelsohn  <dje.gcc@gmail.com>

	* g++.dg/abi/pure-virtual1.C: XFAIL AIX.
2020-06-11 09:11:42 -04:00
Martin Liska 3b3ad4af02
Fix formatting in rs6000.c.
gcc/ChangeLog:

	* config/rs6000/rs6000.c (rs6000_density_test): Fix GNU coding
	style.
2020-06-11 15:00:45 +02:00
David Edelsohn c61f678a4f aix: Don't implicitly include inttypes.h
AIX stdio.h implicitly includes inttypes.h, which explicitly conflicts
with the purpose of this testcase.  This patch conditionally adds a macro
definition that inhibits the implicit inclusion.

gcc/testsuite/ChangeLog

2020-06-11  David Edelsohn  <dje.gcc@gmail.com>

	* gcc.dg/spellcheck-inttypes.c: Don't include inttypes.h on AIX.
2020-06-11 08:53:16 -04:00
Martin Liska 444035eafa
rs6000: skip debug info statements
gcc/ChangeLog:

	PR target/95627
	* config/rs6000/rs6000.c (rs6000_density_test): Skip debug
	statements.
2020-06-11 14:51:15 +02:00
José Rui Faustino de Sousa 2ff0f48819 Wrong array section bounds when passing to an intent-in pointer dummy.
Add code to allow for the creation a new descriptor for array
sections with the correct one based indexing.

Rework the generated descriptors indexing (hopefully) fixing the
wrong offsets generated.

gcc/fortran/ChangeLog:

2020-06-11  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/52351
	PR fortran/85868
	* trans-array.c (gfc_conv_expr_descriptor): Enable the
	creation of a new descriptor with the correct one based
	indexing for array sections.  Rework array descriptor
	indexing offset calculation.

gcc/testsuite/ChangeLog:

2020-06-11  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/52351
	PR fortran/85868
	* gfortran.dg/coarray_lib_comm_1.f90: Adjust match test for
	the newly generated descriptor.
	* gfortran.dg/PR85868A.f90: New test.
	* gfortran.dg/PR85868B.f90: New test.
2020-06-11 14:21:38 +02:00
Martin Liska be11812eef
git_update_version: add --current argument.
The argument can be useful to update arbitrary branch, the changes
are added to git index and user is supposed to make a commit.

contrib/ChangeLog:

	* gcc-changelog/git_update_version.py: Add --curent argument.
2020-06-11 13:57:10 +02:00
José Rui Faustino de Sousa 6a07010b77 Patch to Bug 94022 - Array slices of assumed-size arrays.
Make sure that when passing array sections of assumed-size arrays to
procedures expecting an assumed-rank array the upper bound of the
last dimension of the array section does not get improperly reset
to -1 to mark it has an assumed size array.

gcc/fortran/ChangeLog:

2020-06-11  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/94022
	* trans-expr.c (gfc_conv_procedure_call): In the case of
	assumed-size arrays ensure that the reference is to a full array.

gcc/testsuite/ChangeLog:

2020-06-11  José Rui Faustino de Sousa  <jrfsousa@gmail.com>

	PR fortran/94022
	* gfortran.dg/PR94022.f90: New test.
2020-06-11 13:25:59 +02:00
Eric Botcazou 419c355c7a [Ada] Fix missing insertion of explicit dereference in instance
2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* sem_res.adb (Resolve_Implicit_Dereference): In an instance,
	reset the type of the prefix if it is private before building
	the dereference.
2020-06-11 05:53:56 -04:00
Eric Botcazou 12ad5b9ccc [Ada] Fix assertion failure on entry call through unchecked conversion
2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_util.adb (Safe_Unchecked_Type_Conversion): Add missing
	Is_Type guard before calling Has_Discriminants on Etype.
2020-06-11 05:53:55 -04:00
Bob Duff eedafec2f2 [Ada] Make libgnat/a-nbnbin__gmp.adb compile
2020-06-11  Bob Duff  <duff@adacore.com>

gcc/ada/

	* libgnat/a-nbnbin__gmp.adb: There's no Optional_Big_Integer
	anymore.  Invalid_Big_Integer is not used.
	Greatest_Common_Divisor returns Big_Positive.
2020-06-11 05:53:54 -04:00
Piotr Trojanek 0bfa32f922 [Ada] Refine type of a routine parameter from Node_Id to Entity_Id
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_aggr.adb (Get_Value): Refine type of the Compon parameter.
2020-06-11 05:53:53 -04:00
Piotr Trojanek 5c4adf10c5 [Ada] Refine type of a counter-like variable
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_aggr.adb (Resolve_Record_Aggregate): Refine type of
	Others_Box.
2020-06-11 05:53:53 -04:00
Piotr Trojanek cbbe41d1f7 [Ada] Iterate with procedural version of Next routine where possible
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* checks.adb, exp_ch7.adb, exp_ch9.adb, exp_smem.adb, lib.adb,
	nlists.adb, sem.adb, sem_aggr.adb, sem_ch3.adb, sem_ch6.adb,
	sem_ch8.adb, sem_dim.adb, sem_res.adb, sem_util.adb,
	sem_warn.adb: Replace uses of Next function with procedure.
2020-06-11 05:53:52 -04:00
Eric Botcazou adffc36723 [Ada] Fix wrong access to large bit-packed arrays with reverse SSO
2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* exp_pakd.ads: Add paragraph about scalar storage order.
	* exp_pakd.adb (Install_PAT): Do not set the scalar storage
	order of the PAT here but...
	(Set_PB_Type): ...here instead and...
	(Create_Packed_Array_Impl_Type): ...here as well.
	* rtsfind.ads (RE_Id): Add RE_Rev_Packed_Bytes{1,2,4}.
	(RE_Unit_Table): Likewise.
	* libgnat/s-unstyp.ads (Rev_Packed_Bytes1): New derived type.
	(Rev_Packed_Bytes2): Likewise.
	(Rev_Packed_Bytes4): Likewise.
2020-06-11 05:53:51 -04:00
Piotr Trojanek cf0a011c2b [Ada] Update SPARK RM rule numbers after removing a redundant rule
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_ch4.adb, sem_ch6.adb, sem_res.adb, sem_util.ads: Fix
	references to SPARK RM 7.1.3 rule numbers.
2020-06-11 05:53:50 -04:00
Ed Schonberg eb85899d60 [Ada] Additional warnings on overlapping actuals of composite types
2020-06-11  Ed Schonberg  <schonberg@adacore.com>

gcc/ada/

	* sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify code,
	remove inner predicate Is_Covered_Formal, preserve warning for
	two overlapping composite types when only one is writable, and
	for two overlapping and writable elementary types.
2020-06-11 05:53:49 -04:00
Steve Baird 4127ebece7 [Ada] Allow specifying volatility refinement aspects for types
2020-06-11  Steve Baird  <baird@adacore.com>

gcc/ada/

	* contracts.adb (Add_Contract_Item): Support specifying
	volatility refinement aspects for types.
	(Analyze_Contracts): Add call to Analyze_Type_Contract in the
	case of a contract for a type.
	(Freeze_Contracts): Add call to Analyze_Type_Contract in the
	case of a contract for a type.
	(Check_Type_Or_Object_External_Properties): A new procedure
	which performs the work that needs to be done for both object
	declarations and types.
	(Analyze_Object_Contract): Add a call to
	Check_Type_Or_Object_External_Properties and remove the code in
	this procedure which did much of the work that is now performed
	by that call.
	(Analyze_Type_Contract): Implement this new routine as nothing
	more than a call to Check_Type_Or_Object_External_Properties.
	* contracts.ads: Update comment for Add_Contract_To_Item because
	types can have contracts.  Follow (questionable) precedent and
	declare new routine Analyze_Type_Contract as visible (following
	example of Analyze_Object_Contract), despite the fact that it is
	never called from outside of the package where it is declared.
	* einfo.adb (Contract, Set_Contract): Id argument can be a type;
	support this case.
	(Write_Field34_Name): Field name is "contract" for a type.
	* einfo.ads: Update comment describing Contract attribute.
	* sem_ch3.adb (Build_Derived_Numeric_Type): Is_Volatile should
	return same answer for all subtypes of a given type. Thus, when
	building the base type for something like type Volatile_1_To_10
	is range 1 .. 10 with Volatile; that basetype should be marked
	as being volatile.
	(Access_Type_Declaration): Add SPARK-specific legality check
	that the designated type of an access type shall be compatible
	with respect to volatility with the access type.
	* sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Add
	SPARK-specific legality check that an actual type parameter in
	an instantiation shall be compatible with respect to volatility
	with the corresponding formal type.
	* sem_ch13.adb (Analyze_Aspect_Specifications): Perform checks
	for aspect specs for the 4 volatility refinement aspects that
	were already being performed for all language-defined aspects.
	* sem_prag.adb (Analyze_External_Property_In_Decl_Part,
	Analyze_Pragma): External properties (other than No_Caching) may
	be specified for a type, including a generic formal type.
	* sem_util.ads: Declare new subprograms - Async_Readers_Enabled,
	Async_Writers_Enabled, Effective_Reads, Effective_Writes, and
	Check_Volatility_Compatibility.
	* sem_util.adb (Async_Readers_Enabled, Async_Writers_Enabled,
	Effective_Reads, Effective_Writes): Initial implementation of
	new functions for querying aspect values.
	(Check_Volatility_Compatibility): New procedure intended for use
	in checking all SPARK legality rules of the form "<> shall be
	compatible with respect to volatility with <>".
	(Has_Enabled_Property): Update comment because Item_Id can be a
	type.  Change name of nested Variable_Has_Enabled_Property
	function to Type_Or_Variable_Has_Enabled_Property; add a
	parameter to that function because recursion may be needed,
	e.g., in the case of a derived typ).  Cope with the case where
	the argument to Has_Enabled_Property is a type.
2020-06-11 05:53:48 -04:00
Piotr Trojanek 0c25b78380 [Ada] Avoid "others => <>" association in resolved record aggregates
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_aggr.adb (Add_Association): Add assertion about the formal
	parameters.
	(Propagate_Discriminants): Always add an explicit component
	association, so that an "others => <>" association is never
	needed.
2020-06-11 05:53:47 -04:00
Bob Duff d84eb7c511 [Ada] Put_Image attribute
2020-06-11  Bob Duff  <duff@adacore.com>

gcc/ada/

	* exp_put_image.adb (Build_Elementary_Put_Image_Call): If the
	underlying type is real, call Put_Image_Unknown.
	(Build_Unknown_Put_Image_Call): Pass the type name to
	Put_Image_Unknown.
	* libgnat/s-putima.ads, libgnat/s-putima.adb
	(Put_Image_Unknown): Add Type_Name parameter.  Remove
	overly-detailed documentation of what it does; better to leave
	it open.
2020-06-11 05:53:46 -04:00
Piotr Trojanek 428d49a5a8 [Ada] Skip unnecessary iterations over constraint expressions
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_ch3.adb (Build_Constrained_Array_Type,
	Build_Constrained_Discriminated_Type): Skip unnecessary loop
	iterations.
2020-06-11 05:53:45 -04:00
Piotr Trojanek c5b55e683c [Ada] Move duplicated routines for building itypes to Sem_Util
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_aggr.adb (Build_Constrained_Itype): Move to Sem_Util.
	* sem_ch3.adb (Build_Subtype, Inherit_Predicate_Flags): Move...
	* sem_util.adb (Build_Subtype): Here.  Add parameters for
	references to objects previously declared in enclosing scopes.
	(Inherit_Predicate_Flags): And here, because it is called by
	Build_Subtype.
	* sem_util.ads (Build_Overriding_Spec): Reorder alphabetically.
	(Build_Subtype): Moved from Sem_Ch3; comments updated.
	(Build_Constrained_Itype): Moved from Sem_Aggr; comments
	updated.
2020-06-11 05:53:44 -04:00
Piotr Trojanek 38f44fd6af [Ada] Refine type for sorting case-choices tables
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_aggr.adb (Case_Table_Type): Change index type from Nat to
	Pos.
2020-06-11 05:53:44 -04:00
Piotr Trojanek fc4c73488f [Ada] Create constrained itypes for nested record aggregates
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_aggr.adb (Build_Constrained_Itype): Previously a declare
	block, now a separate procedure; the only change is that now
	New_Assoc_List might include components and an others clause,
	which we ignore (while we deal with discriminants exactly as we
	did before); extend a ??? comment about how this routine is
	different from the Build_Subtype
	(Resolve_Record_Aggregate): Create a constrained itype not just
	for the outermost record aggregate, but for its inner record
	aggregates as well.
2020-06-11 05:53:43 -04:00
Eric Botcazou f715a5bd3f [Ada] Consolidate handling of implicit dereferences into semantic analysis
2020-06-11  Eric Botcazou  <ebotcazou@adacore.com>

gcc/ada/

	* checks.adb (Build_Discriminant_Checks): Build an explicit
	dereference when the type is an access type.
	* exp_atag.adb (Build_CW_Membership): Add explicit dereferences.
	(Build_Get_Access_Level): Likewise.
	(Build_Get_Alignment): Likewise.
	(Build_Inherit_Prims): Likewise.
	(Build_Get_Transportable): Likewise.
	(Build_Set_Size_Function): Likewise.
	* exp_ch3.adb (Build_Offset_To_Top_Function): Likewise.
	* exp_ch4.adb (Expand_Allocator_Expression): Likewise.
	(Expand_N_Indexed_Component ): Remove code dealing with implicit
	dereferences.
	(Expand_N_Selected_Component): Likewise.
	(Expand_N_Slice): Likewise.
	* exp_ch9.adb (Add_Formal_Renamings): Add explicit dereference.
	(Expand_Accept_Declarations): Likewise.
	(Build_Simple_Entry_Call): Remove code dealing with implicit
	dereferences.
	(Expand_N_Requeue_Statement): Likewise.
	* exp_disp.adb (Expand_Dispatching_Call): Build an explicit
	dereference when the controlling type is an access type.
	* exp_spark.adb (Expand_SPARK_N_Selected_Component): Delete.
	(Expand_SPARK_N_Slice_Or_Indexed_Component): Likewise.
	(Expand_SPARK): Do not call them.
	* sem_ch4.adb (Process_Implicit_Dereference_Prefix): Delete.
	(Process_Indexed_Component): Call Implicitly_Designated_Type
	to get the designated type for an implicit dereference.
	(Analyze_Overloaded_Selected_Component): Do not insert an
	explicit dereference here.
	(Analyze_Selected_Component): Likewise.
	(Analyze_Slice): Call Implicitly_Designated_Type to get the
	designated type for an implicit dereference.
	* sem_ch8.adb (Has_Components): New predicate extracted from...
	(Is_Appropriate_For_Record): ...this.  Delete.
	(Is_Appropriate_For_Entry_Prefix): Likewise.
	(Analyze_Renamed_Entry): Deal with implicit dereferences.
	(Find_Selected_Component): Do not insert an explicit dereference
	here.  Call Implicitly_Designated_Type to get the designated type
	for an implicit dereference.  Call Has_Components, Is_Task_Type
	and Is_Protected_Type directly.  Adjust test for error.
	* sem_res.adb (Resolve_Implicit_Dereference): New procedure.
	(Resolve_Call): Call Resolve_Indexed_Component last.
	(Resolve_Entry): Call Resolve_Implicit_Dereference on the prefix.
	(Resolve_Indexed_Component): Call Implicitly_Designated_Type to
	get the designated type for an implicit dereference and
	Resolve_Implicit_Dereference on the prefix at the end.
	(Resolve_Selected_Component): Likewise.
	(Resolve_Slice): Likewise.  Do not apply access checks here.
	* sem_util.ads (Implicitly_Designated_Type): Declare.
	* sem_util.adb (Copy_And_Maybe_Dereference): Simplify.
	(Implicitly_Designated_Type): New function.
	(Object_Access_Level): Fix typo.
	* sem_warn.adb (Check_Unset_Reference): Test Comes_From_Source
	on the original node.
2020-06-11 05:53:42 -04:00
Piotr Trojanek c7cb99f885 [Ada] Remove a dubious optimization for Object Specific Data dispatching
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* exp_disp.adb: Minor reformatting.
	* exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Recognize
	aggregates of the Ada.Tags.Object_Specific_Data type as static.
	* sem_aggr.adb (Check_Static_Discriminated_Subtype): Deconstruct
	and do not call it from Build_Constrained_Itype.
2020-06-11 05:53:41 -04:00
Piotr Trojanek 6dc5653584 [Ada] Make Object Specific Dispatch tables constant
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* exp_disp.adb (Make_Secondary_DT): Internally generated OSD
	tables are now constant.
2020-06-11 05:53:40 -04:00
Piotr Trojanek 08380342a4 [Ada] Remove useless code in Backend_Processing_Possible
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* exp_aggr.adb (Backend_Processing_Possible): Remove useless
	call.
2020-06-11 05:53:39 -04:00
Piotr Trojanek c90f2b2ec5 [Ada] Fix punctuation in comment of Building_Static_Dispatch_Tables
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* opt.ads (Building_Static_Dispatch_Tables): Fix punctuation in
	comment.
2020-06-11 05:53:38 -04:00
Arnaud Charlet 0c1d3334c6 [Ada] AI12-0356 Root_Storage_Pool_With_Subpools & Preelaborable_Init
2020-06-11  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/s-stposu.ads (Root_Storage_Pool_With_Subpools,
	Root_Subpool): Mark with Preelaborable_Initialization.
2020-06-11 05:53:38 -04:00
Javier Miranda 8c1bec899a [Ada] Crash on dispatching conditional entry call
2020-06-11  Javier Miranda  <miranda@adacore.com>

gcc/ada/

	* exp_ch9.adb (Expand_N_Conditional_Entry_Call): Replace call to
	New_Copy_List by calls to the new routine
	New_Copy_Separate_List.
	* sem_util.ads (New_Copy_Separate_List, New_Copy_Separate_Tree):
	New routines.

	* sem_util.adb (New_Copy_Separate_List, New_Copy_Separate_Tree):
	New routines.
	(New_Copy_Tree): Extend the machinery that detects syntactic
	nodes to handle lists of indentifiers with field More_Ids;
	otherwise such nodes are erroneously handled as semantic nodes.
	Copy aspect specifications attached to nodes.
	* sem_ch12.adb (Copy_Generic_Node): Protect reading attribute
	Etype.
2020-06-11 05:53:37 -04:00
Bob Duff 0dd9f1b83f [Ada] Fix unnesting crash with Predicate_Failure/no pred
2020-06-11  Bob Duff  <duff@adacore.com>

gcc/ada/

	* sem_ch13.adb (Analyze_Aspect_Specifications): Do not set the
	Has_Predicates flag when the Predicate_Failure aspect is seen.
	It is legal (but pointless) to use this aspect without a
	predicate.  If we set the flag, we generate a half-baked
	Predicate procedure, and if that procedure is nested, it causes
	unnesting to crash.
2020-06-11 05:53:36 -04:00
Bob Duff a91b983325 [Ada] Put_Image attribute
2020-06-11  Bob Duff  <duff@adacore.com>

gcc/ada/

	* exp_put_image.adb (Build_Record_Put_Image_Procedure): Remove
	special processing of protected types, because those are handled
	by Build_Protected_Put_Image_Call.
	(Enable_Put_Image): Use the switch -gnatd_z to control enabling
	of Put_Image. Disable Put_Image for types in Remote_Types
	packages.
	* debug.adb: Document -gnatd_z switch.
	* exp_imgv.adb, libgnat/a-stteou.ads, opt.ads: Minor cleanups.
2020-06-11 05:53:35 -04:00
Piotr Trojanek 99cab17e02 [Ada] Simplify iteration over formal parameters for aliasing error
2020-06-11  Piotr Trojanek  <trojanek@adacore.com>

gcc/ada/

	* sem_warn.adb (Warn_On_Overlapping_Actuals): Add label to the
	outer loop and use it in the exit statement.
2020-06-11 05:53:34 -04:00
Ghjuvan Lacambre 6593c082b9 [Ada] Generate predicate checks for on assignments in records
2020-06-11  Ghjuvan Lacambre  <lacambre@adacore.com>

gcc/ada/

	* exp_ch3.adb (Build_Assignment): Generate predicate check if
	subtype mark has predicate.
2020-06-11 05:53:33 -04:00
Justin Squirek afb885445f [Ada] Missing accessibility error on object in type conversion
2020-06-11  Justin Squirek  <squirek@adacore.com>

gcc/ada/

	* sem_util.adb (Expand_N_Attribute_Reference): Use original
	nodes where required to avoid looking at the expanded tree.
2020-06-11 05:53:33 -04:00
Arnaud Charlet 57f57ad106 [Ada] Remove aspects that were commented out
2020-06-11  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/a-catizo.ads, libgnat/a-nbnbin.ads,
	libgnat/a-nbnbre.ads, libgnat/a-nubinu.ads,
	libgnat/s-aoinar.ads, libgnat/s-aomoar.ads,
	libgnat/s-aotase.ads, libgnat/s-stopoo.ads: Remove aspects that
	we will not implement.
2020-06-11 05:53:32 -04:00
Arnaud Charlet f7823e6299 [Ada] Add fallback on Integer_Arithmetic
2020-06-11  Arnaud Charlet  <charlet@adacore.com>

gcc/ada/

	* libgnat/s-aoinar.adb (Atomic_Fetch_And_Add,
	Atomic_Fetch_And_Subtract): Add fallback using
	compare-and-exchange, in case the integer type does not map to a
	machine type.
2020-06-11 05:53:31 -04:00
Martin Liska 8cff672cb9
asan: fix RTX emission for ilp32
gcc/ChangeLog:

	PR sanitizer/95634
	* asan.c (asan_emit_stack_protection): Fix emission for ilp32
	by using Pmode instead of ptr_mode.

Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
2020-06-11 11:02:58 +02:00
Kewen Lin 37478789dc vect: Rename things related to rgroup_masks
Power supports vector memory access with length (in bytes) instructions.
Like existing fully masking for SVE, it is another approach to vectorize
the loop using partially-populated vectors.

As Richard Sandiford pointed out, we can rename the rgroup struct
rgroup_masks to rgroup_controls, rename its members mask_type to type,
masks to controls to be more generic.

Besides, this patch also renames some functions like vect_set_loop_mask
to vect_set_loop_control, release_vec_loop_masks to
release_vec_loop_controls, vect_set_loop_masks_directly to
vect_set_loop_controls_directly.

Bootstrapped/regtested on aarch64-linux-gnu.

gcc/ChangeLog:

	* tree-vect-loop-manip.c (vect_set_loop_mask): Renamed to ...
	(vect_set_loop_control): ... this.
	(vect_maybe_permute_loop_masks): Rename rgroup_masks related things.
	(vect_set_loop_masks_directly): Renamed to ...
	(vect_set_loop_controls_directly): ... this.  Also rename some
	variables with ctrl instead of mask.  Rename vect_set_loop_mask to
	vect_set_loop_control.
	(vect_set_loop_condition_masked): Rename rgroup_masks related things.
	Also rename some variables with ctrl instead of mask.
	* tree-vect-loop.c (release_vec_loop_masks): Renamed to ...
	(release_vec_loop_controls): ... this.  Rename rgroup_masks related
	things.
	(_loop_vec_info::~_loop_vec_info): Rename release_vec_loop_masks to
	release_vec_loop_controls.
	(can_produce_all_loop_masks_p): Rename rgroup_masks related things.
	(vect_get_max_nscalars_per_iter): Likewise.
	(vect_estimate_min_profitable_iters): Likewise.
	(vect_record_loop_mask): Likewise.
	(vect_get_loop_mask): Likewise.
	* tree-vectorizer.h (struct rgroup_masks): Renamed to ...
	(struct rgroup_controls): ... this.  Also rename mask_type
	to type and rename masks to controls.
2020-06-11 03:35:30 -05:00
Kewen Lin b3372425ec vect: Rename fully_masked_p to using_partial_vectors_p
Power supports vector memory access with length (in bytes) instructions.
Like existing fully masking for SVE, it is another approach to vectorize
the loop using partially-populated vectors.

As Richard Sandiford suggested, this patch is to update the existing
fully_masked_p field to using_partial_vectors_p.  Introduce one macro
LOOP_VINFO_USING_PARTIAL_VECTORS_P for partial vectorization checking
usage, update the LOOP_VINFO_FULLY_MASKED_P with
LOOP_VINFO_USING_PARTIAL_VECTORS_P && !masks.is_empty() and still use
it for mask-based partial vectors approach specific checks.

Bootstrapped/regtested on aarch64-linux-gnu.

gcc/ChangeLog:

	* tree-vect-loop-manip.c (vect_set_loop_condition): Rename
	LOOP_VINFO_FULLY_MASKED_P to LOOP_VINFO_USING_PARTIAL_VECTORS_P.
	(vect_gen_vector_loop_niters): Likewise.
	(vect_do_peeling): Likewise.
	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
	fully_masked_p to using_partial_vectors_p.
	(vect_analyze_loop_costing): Rename LOOP_VINFO_FULLY_MASKED_P to
	LOOP_VINFO_USING_PARTIAL_VECTORS_P.
	(determine_peel_for_niter): Likewise.
	(vect_estimate_min_profitable_iters): Likewise.
	(vect_transform_loop): Likewise.
	* tree-vectorizer.h (LOOP_VINFO_FULLY_MASKED_P): Updated.
	(LOOP_VINFO_USING_PARTIAL_VECTORS_P): New macro.
2020-06-11 03:26:54 -05:00
Kewen Lin 042f408297 vect: Rename can_fully_mask_p to can_use_partial_vectors_p
Power supports vector memory access with length (in bytes) instructions.
Like existing fully masking for SVE, it is another approach to vectorize
the loop using partially-populated vectors.

As Richard Sandiford pointed out, we should extend the existing flag
can_fully_mask_p to be more generic, to indicate whether we have
any chances with partial vectors for this loop.  So this patch
is to rename this flag to can_use_partial_vectors_p to be more
meaningful, also rename the macro LOOP_VINFO_CAN_FULLY_MASK_P
to LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.

Bootstrapped/regtested on aarch64-linux-gnu.

gcc/ChangeLog:

	* tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename
	can_fully_mask_p to can_use_partial_vectors_p.
	(vect_analyze_loop_2): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
	LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.  Rename saved_can_fully_mask_p
	to saved_can_use_partial_vectors_p.
	(vectorizable_reduction): Rename LOOP_VINFO_CAN_FULLY_MASK_P to
	LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P.
	(vectorizable_live_operation): Likewise.
	* tree-vect-stmts.c (permute_vec_elements): Likewise.
	(check_load_store_masking): Likewise.
	(vectorizable_operation): Likewise.
	(vectorizable_store): Likewise.
	(vectorizable_load): Likewise.
	(vectorizable_condition): Likewise.
	* tree-vectorizer.h (LOOP_VINFO_CAN_FULLY_MASK_P): Renamed to ...
	(LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P): ... this.
	(_loop_vec_info): Rename can_fully_mask_p to can_use_partial_vectors_p.
2020-06-11 03:26:42 -05:00
Martin Liska 8ff57396d6
prepare-commit-hook: Use gcc-config.diff-file.
contrib/ChangeLog:

	* prepare-commit-msg: Replace ENV variable with a git config
	value.
2020-06-11 10:09:47 +02:00
Jonathan Wakely 9aadfdd650
contrib: Avoid redundant 'git diff' in prepare-commit-msg hook
contrib/ChangeLog:

	* prepare-commit-msg: Use 'tee' to save the diff to a file
	instead of running 'git diff' twice.
2020-06-11 09:57:58 +02:00
Martin Liska 656e363bcc
Fix -Wformat-diag in options-save.c
The patch removes bunch of warnings:

options-save.c:12004:29: warning: unquoted identifier or keyword ‘global_options’ in format [-Wformat-diag]
12004 |     internal_error ("Error: global_options are modified in local context\n");

gcc/ChangeLog:

	* optc-save-gen.awk: Quote error string.
2020-06-11 09:12:25 +02:00
Alexandre Oliva 184c21bf1c slim up mem exprs to avoid line breaks in -fverbose-asm
An asm operand with a "VIEW_CONVERT_EXPR<struct {
  [...]
}>" will output the definition of the struct as asm code.  Oops.

Enable TDF_SLIM in print_mem_expr to avoid such line breaks.


for  gcc/ChangeLog

	* print-rtl.c (print_mem_expr): Enable TDF_SLIM in dump_flags.
2020-06-10 23:58:23 -03:00
Kito Cheng dcf41a4e60 RISC-V: Unify the output asm pattern between gpr_save and gpr_restore pattern.
gcc/ChangeLog:

	* config/riscv/riscv-protos.h (riscv_output_gpr_save): Remove.
	* config/riscv/riscv-sr.c (riscv_sr_match_prologue): Update
	value.
	* config/riscv/riscv.c (riscv_output_gpr_save): Remove.
	* config/riscv/riscv.md (gpr_save): Update output asm pattern.
2020-06-10 19:41:06 -07:00
Kito Cheng d0e0c1300f RISC-V: Describe correct USEs for gpr_save pattern [PR95252]
- Verified on rv32emc/rv32gc/rv64gc bare-metal target and rv32gc/rv64gc
   linux target with qemu.

gcc/ChangeLog:

	* config/riscv/predicates.md (gpr_save_operation): New.
	* config/riscv/riscv-protos.h (riscv_gen_gpr_save_insn): New.
	(riscv_gpr_save_operation_p): Ditto.
	* config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls):
	Ignore USEs for gpr_save patter.
	* config/riscv/riscv.c (gpr_save_reg_order): New.
	(riscv_expand_prologue): Use riscv_gen_gpr_save_insn to gen gpr_save.
	(riscv_gen_gpr_save_insn): New.
	(riscv_gpr_save_operation_p): Ditto.
	* config/riscv/riscv.md (S3_REGNUM): New.
	(S4_REGNUM): Ditto.
	(S5_REGNUM): Ditto.
	(S6_REGNUM): Ditto.
	(S7_REGNUM): Ditto.
	(S8_REGNUM): Ditto.
	(S9_REGNUM): Ditto.
	(S10_REGNUM): Ditto.
	(S11_REGNUM): Ditto.
	(gpr_save): Model USEs correctly.

gcc/testsuite/ChangeLog:

	* gcc.target/riscv/pr95252.c: New.
2020-06-10 19:40:59 -07:00
GCC Administrator ec6ffbb919 Daily bump. 2020-06-11 00:16:45 +00:00
Patrick Palka a73051a0ea libstdc++: Fix some ranges algos optimizations [PR95578]
ranges::copy and a number of other ranges algorithms have unwrapping
optimizations for iterators of type __normal_iterator, move_iterator and
reverse_iterator.  But in the checks that guard these optimizations we
currently only test that the iterator of the iterator/sentinel pair has
the appropriate type before proceeding with the corresponding
optimization, and do not also test the sentinel type.

This breaks the testcase in this PR because this testcase constructs via
range adaptors a range whose begin() is a __normal_iterator and whose
end() is a custom sentinel type, and then performs ranges::copy on it.
From there we bogusly perform the __normal_iterator unwrapping
optimization on this iterator/sentinel pair, which immediately leads to
a constraint failure since the custom sentinel type does not model
sentinel_for<int*>.

This patch fixes this issue by refining each of the problematic checks
to also test that the iterator and sentinel types are the same before
applying the corresponding unwrapping optimization.  Along the way, some
code simplifications are made.

libstdc++-v3/ChangeLog:

	PR libstdc++/95578
	* include/bits/ranges_algo.h (__lexicographical_compare_fn):
	Also check that the iterator and sentinel have the same type before
	applying the unwrapping optimization for __normal_iterator.
	Split the check into two, one for the first iterator/sentinel
	pair and another for second iterator/sentinel pair.  Remove uses
	of __niter_base, and remove uses of std::move on a
	__normal_iterator.
	* include/bits/ranges_algobase.h (__equal_fn): Likewise.
	(__copy_or_move): Likewise.  Perform similar adjustments for
	the reverse_iterator and move_iterator optimizations.  Inline
	the checks into the if-constexprs, and use using-declarations to
	make them less visually noisy.  Remove uses of __niter_wrap.
	(__copy_or_move_backward): Likewise.
	* testsuite/25_algorithms/copy/95578.cc: New test.
	* testsuite/25_algorithms/copy_backward/95578.cc: New test.
	* testsuite/25_algorithms/equal/95578.cc: New test.
	* testsuite/25_algorithms/lexicographical_compare/95578.cc: New test.
	* testsuite/25_algorithms/move/95578.cc: New test.
	* testsuite/25_algorithms/move_backward/95578.cc: New test.
2020-06-10 17:37:53 -04:00
Alexandre Oliva 06ef9c119c [PR51447] restore the global reg var before returning from main
A runtime system might legitimately hold in rbx a value expected to be
preserved across the call to main, but its use as a global register
variable stops main from preserving it.


for  gcc/testsuite/ChangeLog

	PR rtl-optimization/51447
	* gcc.c-torture/execute/pr51447.c (main): Preserve call-saved
	register.
2020-06-10 17:56:36 -03:00