Commit Graph

153046 Commits

Author SHA1 Message Date
Bob Duff
ca1f6b2991 sem_prag.adb (No_Return): Give an error if the pragma applies to a body.
2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (No_Return): Give an error if the pragma applies
	to a body. Specialize the error for the specless body case,
	as is done for (e.g.) pragma Convention.
	* debug.adb: Add switch -gnatd.J to disable the above legality
	checks. This is mainly for use in our test suite, to avoid
	rewriting a lot of illegal (but working) code.	It might also
	be useful to customers. Under this switch, if a pragma No_Return
	applies to a body, and the procedure raises an exception (as it
	should), the pragma has no effect. If the procedure does return,
	execution is erroneous.

2017-04-25  Bob Duff  <duff@adacore.com>

	* exp_ch6.adb (Expand_Actuals): This is the
	root of the problem. It took N as an 'in out' parameter, and in
	some cases, rewrote N, but then set N to Original_Node(N). So
	the node returned in N had no Parent. The caller continued
	processing of this orphaned node. In some cases that caused a
	crash (e.g. Remove_Side_Effects climbs up Parents in a loop,
	and trips over the Empty Parent). The solution is to make N an
	'in' parameter.  Instead of rewriting it, return the list of
	post-call actions, so the caller can do the rewriting later,
	after N has been fully processed.
	(Expand_Call_Helper): Move most of Expand_Call here. It has
	too many premature 'return' statements, and we want to do the
	rewriting on return.
	(Insert_Post_Call_Actions): New procedure to insert the post-call
	actions in the appropriate place. In the problematic case,
	that involves rewriting N as an Expression_With_Actions.
	(Expand_Call): Call the new procedures Expand_Call_Helper and
	Insert_Post_Call_Actions.

From-SVN: r247178
2017-04-25 12:39:02 +02:00
Arnaud Charlet
36357cf398 [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Inherits_Class_Wide_Pre): Cleanup code, handle
	properly type derived from generic formal types, to handle
	properly modified version of ACATS 4.1B B611017.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_unst.adb (Subp_Index): Adding missing
	support for renamings and functions that return a constrained
	array type (i.e. functions for which the frontend built a
	procedure with an extra out parameter).

2017-04-25  Pascal Obry  <obry@adacore.com>

	* s-string.adb: Minor code clean-up.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-os_lib.ads, s-os_lib.adb (Non_Blocking_Wait_Process): New
	procedure.
	* adaint.h, adaint.c (__gnat_portable_no_block_wait): C support
	function for Non_Blocking_Wait_Process.

2017-04-25  Bob Duff  <duff@adacore.com>

	* prep.adb (Preprocess): Remove incorrect
	Assert. Current character can be ASCII.CR.

From-SVN: r247177
2017-04-25 12:33:46 +02:00
Arnaud Charlet
48c8c47393 [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Set_Convention_From_Pragma): Cleanup code for
	convention Stdcall, which has a number of exceptions. Convention
	is legal on a component declaration whose type is an anonymous
	access to subprogram.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch4.adb: sem_ch4.adb Various reformattings.
	(Try_One_Prefix_Interpretation): Use the base type when dealing
	with a subtype created for purposes of constraining a private
	type with discriminants.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* einfo.ads, einfo.adb (Has_Private_Extension): new attribute.
	* warnsw.ads, warnsw.adb (All_Warnings): Set warning on late
	dispatching primitives (Restore_Warnings): Restore warning on
	late dispatching primitives (Save_Warnings): Save warning on late
	dispatching primitives (Do_Warning_Switch): Use -gnatw.j/-gnatw.J
	to enable/disable this warning.
	(WA_Warnings): Set warning on late dispatching primitives.
	* sem_ch3.adb (Analyze_Private_Extension_Declaration): Remember
	that its parent type has a private extension.
	* sem_disp.adb (Warn_On_Late_Primitive_After_Private_Extension):
	New subprogram.
	* usage.adb: Document -gnatw.j and -gnatw.J.

From-SVN: r247176
2017-04-25 12:30:55 +02:00
Arnaud Charlet
94295b2593 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch7.adb, checks.adb, sem_prag.adb, eval_fat.adb: Minor
	reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* binde.adb (Validate): Do not pass dynamic strings
	to pragma Assert, because older compilers do not support that.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-fileio.adb (Close): When a temp file is
	closed, delete it and clean up its Temp_File_Record immediately,
	rather than waiting until later.
	(Temp_File_Record): Add File
	component, so Close can know which Temp_File_Record corresponds
	to the file being closed.
	(Delete): Don't delete temp files,
	because they are deleted by Close.
	(Open): Set the File component
	of Temp_File_Record. This requires moving the creation of the
	Temp_File_Record to the end, after the AFCB has been created.

From-SVN: r247175
2017-04-25 12:26:52 +02:00
Arnaud Charlet
b0cd50fdc3 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Do not generate
	a validity check when inside a generic.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Type_Conversion): Fix bad logic.

2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* snames.ads-tmpl (Snames): More names for detecting predefined
	potentially blocking subprograms.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Analyze_Pre_Post_Condition): The rules
	concerning inheritance of class-wide preconditions do not apply
	to postconditions.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-ficobl.ads: Minor comment fix.

From-SVN: r247174
2017-04-25 12:11:06 +02:00
Yannick Moy
d8ee014f29 checks.adb (Apply_Scalar_Range_Check): Analyze precisely conversions from float to integer in GNATprove mode.
2017-04-25  Yannick Moy  <moy@adacore.com>

	* checks.adb (Apply_Scalar_Range_Check): Analyze precisely
	conversions from float to integer in GNATprove mode.
	(Apply_Type_Conversion_Checks): Make sure in GNATprove mode
	to call Apply_Type_Conversion_Checks, so that range checks
	are properly positioned when needed on conversions, including
	when converting from float to integer.	(Determine_Range): In
	GNATprove mode, take into account the possibility of conversion
	from float to integer.
	* sem_res.adb (Resolve_Type_Conversion): Only enforce range
	check on conversions from fixed-point to integer, not anymore
	on conversions from floating-point to integer, when in GNATprove
	mode.

From-SVN: r247173
2017-04-25 12:09:31 +02:00
Yannick Moy
3c77943ebf checks.adb (Determine_Range_R): Special case type conversions from integer to float in order to get bounds in...
2017-04-25  Yannick Moy  <moy@adacore.com>

	* checks.adb (Determine_Range_R): Special case type conversions
	from integer to float in order to get bounds in that case too.
	* eval_fat.adb (Machine): Avoid issuing warnings in GNATprove
	mode, for computations involved in interval checking.

From-SVN: r247172
2017-04-25 12:08:00 +02:00
Richard Biener
468afa1ada re PR bootstrap/80509 (ICE in cc1 during selftests)
2017-04-25  Richard Biener  <rguenther@suse.de>

	PR middle-end/80509
	* passes.c (pass_manager::pass_manager): Initialize
	m_name_to_pass_map.

From-SVN: r247171
2017-04-25 10:07:58 +00:00
Arnaud Charlet
89b6c83e25 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Partially reimplement validity
	checks.
	* einfo.adb Node36 is now used as Validated_Object.
	(Validated_Object): New routine.
	(Set_Validated_Object): New routine.
	(Write_Field36_Name): Add an entry for Validated_Object.
	* einfo.ads Add new attribute Validated_Object along with
	usage in entities.
	(Validated_Object): New routine along with pragma Inline.
	(Set_Validated_Object): New routine along with pragma Inline.
	* exp_attr.adb (Make_Range_Test): Add processing for validation
	variables to avoid extra reads and copies of the prefix.
	* exp_ch6.adb (Expand_Actuals): Add copy-back for validation
	variables in order to reflect any changes done in the variable
	back into the original object.
	* sem_util.adb (Is_Validation_Variable_Reference): New routine.
	* sem_util.ads (Is_Validation_Variable_Reference): New routine.

2017-04-25  Steve Baird  <baird@adacore.com>

	* exp_ch7.adb (Build_Array_Deep_Procs,
	Build_Record_Deep_Procs, Make_Finalize_Address_Body): Don't
	generate Finalize_Address routines for CodePeer.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_prag.adb (Inherits_Class_Wide_Pre): subsidiary of
	Analyze_Pre_Post_Condition, to implement the legality checks
	mandated by AI12-0131: Pre'Class shall not be specified for an
	overriding primitive subprogram of a tagged type T unless the
	Pre'Class aspect is specified for the corresponding primitive
	subprogram of some ancestor of T.

From-SVN: r247170
2017-04-25 12:03:40 +02:00
Arnaud Charlet
c6840e83cc [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_ch8.adb (Use_One_Type): If a use_type_clause
	is redundant, set its Used_Operations to empty. This is only
	necessary for use clauses that appear in the parent of a generic
	child unit, because those use clauses get reanalyzed when we
	instantiate the generic, and we don't want the Used_Operations
	carried over from the original context (where it was probably
	not redundant).

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch6.adb: Minor reformatting.

From-SVN: r247169
2017-04-25 11:47:33 +02:00
Arnaud Charlet
f2a54683c6 [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
	Use Source_Index (Current_Sem_Unit) to find the correct casing.
	* exp_prag.adb (Expand_Pragma_Check): Use Source_Index
	(Current_Sem_Unit) to find the correct casing.
	* par.adb (Par): Null out Current_Source_File, to ensure that
	the above bugs won't rear their ugly heads again.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch8.adb (Find_Type): For an attribute reference
	'Class, if prefix type is synchronized and previous errors
	have suppressed the creation of the corresponding record type,
	create a spurious class-wide for the synchonized type itself,
	to catch other misuses of the attribute

2017-04-25  Steve Baird  <baird@adacore.com>

	* exp_ch6.adb (Expand_Simple_Function_Return): if CodePeer_Mode
	is True, then don't generate the accessibility check for the
	tag of a tagged result.
	* exp_intr.adb (Expand_Dispatching_Constructor_Call):
	if CodePeer_Mode is True, then don't generate the
	tag checks for the result of call to an instance of
	Ada.Tags.Generic_Dispatching_Constructor (i.e., both the "is a
	descendant of" check and the accessibility check).

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch13.adb: Code cleanups.
	* a-strbou.ads: minor whitespace fix in Trim for bounded strings.
	* sem_ch8.ads: Minor comment fix.

From-SVN: r247168
2017-04-25 11:46:05 +02:00
Arnaud Charlet
2df23f66e2 [multiple changes]
2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* exp_ch4.adb (Library_Level_Target): New function.
	(Expand_Concatenate): When optimization is enabled, also expand
	the operation out-of-line if the concatenation is present within
	the expression of the declaration of a library-level object and
	not only if it is the expression of the declaration.

2017-04-25  Bob Duff  <duff@adacore.com>

	* freeze.adb (Freeze_Object_Declaration): Do
	not Remove_Side_Effects if there is a pragma Linker_Section,
	because in that case we want static initialization in the
	appropriate section.

2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* exp_dbug.adb: Minor rewording and reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Statically_Denotes_Object): New predicate, to
	handle the proposed changes to rules concerning potentially
	unevaluated expressions, to include selected components that
	do not depend on discriminants, and indexed components with
	static indices.
	* sem_util.adb (Is_Potentially_Unevaluated): Add check for
	predicate in quantified expression, and fix bugs in the handling
	of case expressions and membership test.
	(Analyze_Attribute_Old_Result): use new predicate.
	(Analyze_Attribute, case Loop_Entry): ditto.

From-SVN: r247167
2017-04-25 11:42:56 +02:00
Arnaud Charlet
d9049849d0 [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* s-secsta.adb (SS_Info): Add a comment
	explaining why we don't need to walk all the chunks in order to
	compute the total size.

2017-04-25  Bob Duff  <duff@adacore.com>

	* namet.ads, namet.adb (Global_Name_Buffer): Increase the length
	of the global name buffer to 4*Max_Line_Length.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_ch8.adb (Expand_N_Object_Renaming_Declaration): When creating a
	renaming entity for debug information, mark the entity as needing debug
	info if it comes from sources.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch13.adb (Analyze_Attribute_Definition_Clause): Remove the
	restriction converning the use of 'Address where the prefix is
	of a controlled type.

2017-04-25  Pierre-Marie de Rodat  <derodat@adacore.com>

	* exp_dbug.adb: In Debug_Renaming_Declaration,
	skip slices that are made redundant by an indexed component
	access.
	* atree.h: New definition for Original_Node.

From-SVN: r247166
2017-04-25 11:40:48 +02:00
Hristian Kirtchev
db78cb8134 sem_prag.adb, [...]: Minor reformatting.
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_prag.adb, sem_prag.ads: Minor reformatting.

From-SVN: r247165
2017-04-25 11:37:51 +02:00
Arnaud Charlet
2671885430 Minor reformatting.
From-SVN: r247164
2017-04-25 11:37:00 +02:00
Ed Schonberg
0c85534d6f sem_ch3.adb (Check_Entry_Contract): Call Preanalyze_Spec_Expression so that resolution takes place as well.
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Check_Entry_Contract): Call
	Preanalyze_Spec_Expression so that resolution takes place as well.
	* sem_util.adb (Check_Internal_Protected_Use): Reject properly
	internal calls that appear in preconditions of protected
	operations, in default values for same, and in contract guards
	for contract cases in SPARK.

From-SVN: r247163
2017-04-25 11:36:51 +02:00
Arnaud Charlet
be3416c681 [multiple changes]
2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* a-numaux.ads: Fix description of a-numaux-darwin
	and a-numaux-x86.
	(Double): Define to Long_Float.
	* a-numaux-vxworks.ads (Double): Likewise.
	* a-numaux-darwin.ads
	(Double): Likewise.
	* a-numaux-libc-x86.ads (Double): Define to Long_Long_Float.
	* a-numaux-x86.ads: Fix package description.
	* a-numaux-x86.adb (Is_Nan): Minor tweak.
	(Reduce): Adjust and complete description. Call Is_Nan instead of
	testing manually. Use an integer temporary to hold rounded value.
	* a-numaux-darwin.adb (Reduce): Likewise.
	(Is_Nan): New function.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Additional refinement
	on analysis of prefix whose type is a current instance of a
	synchronized type, but where the prefix itself is an entity that
	is an object.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_ch5.adb (Replace_Target): When rewriting the RHS, preserve
	the identity of callable entities therein, because they have been
	properly resolved, and prefixed calls may have been rewritten
	as normal calls.

2017-04-25  Patrick Bernardi  <bernardi@adacore.com>

	* exp_ch3.adb (Build_Init_Statements): Convert
	the expression of the pragma/aspect Secondary_Stack_Size to
	internal type System.Parameters.Size_Type before assigning
	it to the Secondary_Stack_Size component of the task type's
	corresponding record.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* sem_eval.adb (Compile_Time_Compare): Reinstate the expr+literal
	(etc) optimizations when the type is modular and the offsets
	are equal.

2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>

	* s-osinte-freebsd.ads: Minor comment tweaks

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* urealp.adb (UR_Write): Reverse previous patch
	adding documentation on why we generate multiplications instead
	of divisions (needed to avoid expressions whose computation with
	large numbers may cause division by 0).

2017-04-25  Bob Duff  <duff@adacore.com>

	* erroutc.adb (Set_Specific_Warning_Off,
	Set_Warnings_Mode_Off): Use the correct source file for
	Stop. Was using Current_Source_File, which is only valid during
	parsing. Current_Source_File will have a leftover value from
	whatever file happened to be parsed last, because of a with_clause
	or something.

2017-04-25  Bob Duff  <duff@adacore.com>

	* lib.ads, lib.adb (In_Internal_Unit): New functions similar
	to In_Predefined_Unit, but including GNAT units.
	* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): Replace
	with Should_Ignore_Pragma_Par and Should_Ignore_Pragma_Sem,
	because Should_Ignore_Pragma was not working reliably outside
	the parser, because Current_Source_File is not valid.
	* sem_prag.adb, exp_prag.adb: Call Should_Ignore_Pragma_Sem.
	* par-prag.adb: Call Should_Ignore_Pragma_Par.

From-SVN: r247162
2017-04-25 11:35:46 +02:00
Arnaud Charlet
003d46d5f3 Code cleanups.
From-SVN: r247161
2017-04-25 11:29:17 +02:00
Arnaud Charlet
f4f5851ea3 2017-04-25 Arnaud Charlet <charlet@adacore.com trojanek>
* gnat1drv.adb (Gnat1Drv): Disable Generate_Processed_File in
	codepeer mode.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* urealp.adb (UR_Write): Fix output of constants with a base other
	that 10.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* sem_ch13.adb (Get_Interfacing_Aspects): Moved to sem_util.adb.
	* sem_prag.adb (Analyze_Pragma, Process_Import_Or_Interface):
	Add extra parameter for Process_Interface_Name.
	(Process_Interface_Name): Add parameter for pragma to analyze
	corresponding aspect.
	* sem_util.ads, sem_util.adb (Get_Interfacing_Aspects): Added
	from sem_ch13.adb

From-SVN: r247160
2017-04-25 11:28:49 +02:00
Richard Biener
2700fbd655 re PR tree-optimization/79201 (missed optimization: sinking doesn't handle calls, swap PRE and sinking)
2017-04-25  Richard Biener  <rguenther@suse.de>

	PR tree-optimization/79201
	* tree-ssa-sink.c (statement_sink_location): Handle calls.

	* gcc.dg/tree-ssa/ssa-sink-16.c: New testcase.
	* gcc.target/i386/pr22152.c: Disable sinking.

From-SVN: r247159
2017-04-25 09:26:37 +00:00
Arnaud Charlet
bfda9ccde6 Code clean ups.
From-SVN: r247158
2017-04-25 11:25:55 +02:00
Arnaud Charlet
ded462b0de [multiple changes]
2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* exp_ch7.adb, einfo.ads, sem_prag.adb: Minor reformatting and typo
	correction.

2017-04-25  Yannick Moy  <moy@adacore.com>

	* sem_res.adb (Resolve_Comparison_Op): Do not
	attempt evaluation of relational operations inside assertions.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* exp_util.adb (Add_Interface_Invariants):
	Restored, code moved back from Build_Invariant_Procedure_Body.
	(Add_Parent_Invariants): Restored, code moved back from
	Build_Invariant_Procedure_Body.
	(Build_Invariant_Procedure_Body):
	Remove refactored calls and integrated code from
	Add_Parent_Invariants and Add_Interface_Invariants.

2017-04-25  Johannes Kanig  <kanig@adacore.com>

	* errout.adb (Output_Messages): Adjust computation of total
	errors
	* erroutc.adb (Error_Msg): In statistics counts, deal
	correctly with informational messages that are not warnings.
	* errutil.adb (Finalize): adjust computation of total errors.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* terminals.c (__gnat_terminate_pid): New.
	* g-exptty.ads (Terminate_Process): New. Update comments.

From-SVN: r247157
2017-04-25 11:25:40 +02:00
Arnaud Charlet
d1eb8a82b2 [multiple changes]
2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* a-cfinve.ads, a-cofove.ads (Empty_Vector): add Global contract.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Minor
	correction to comments, move out large conditional and scope
	traversal into a predicate.
	(Uses_Unseen_Lib_Unit_Priv): Predicate function made from extracted
	logic.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch4.adb (Analyze_Selected_Component): Refine analysis
	of prefix whose type is a current instance of a synchronized
	type. If the prefix is an object this is an external call (or
	requeue) that can only access public operations of the object. The
	previous predicate was too restrictive, and did not allow public
	protected operations, only task entries.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch5.adb, fname.adb: Minor reformatting.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* einfo.adb (Is_Anonymous_Access_Type): New routine.
	* einfo.ads Update the placement of
	E_Anonymous_Access_Subprogram_Type along with all subtypes that
	mention the ekind.
	(Is_Anonymous_Access_Type): New routine.
	* exp_ch7.adb (Allows_Finalization_Master): Do not generate a
	master for an access type subject to pragma No_Heap_Finalization.
	* exp_util.adb (Build_Allocate_Deallocate_Proc): An object being
	allocated or deallocated does not finalization actions if the
	associated access type is subject to pragma No_Heap_Finalization.
	* opt.ads Add new global variable No_Heap_Finalization_Pragma.
	* par-prag.adb Pragma No_Heap_Finalization does not need special
	processing from the parser.
	* sem_ch6.adb (Check_Return_Subtype_Indication): Remove ancient
	??? comments. Use the new predicate Is_Anonymous_Access_Type.
	* sem_prag.adb Add an entry in table Sig_Flags for pragma
	No_Heap_Finalization.
	(Analyze_Pragma): Add processing for
	pragma No_Heap_Finalization. Update various error messages to
	use Duplication_Error.
	* sem_util.ads, sem_util.adb (No_Heap_Finalization): New routine.
	* snames.ads-tmpl: Add new predefined name No_Heap_Finalization
	and corresponding pragma id.

From-SVN: r247156
2017-04-25 11:22:43 +02:00
Arnaud Charlet
820f11620e [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* freeze.adb (Freeze_Record_Type): Use the
	underlying type of the component type to determine whether it's
	elementary. For representation clause purposes, a private type
	should behave the same as its full type.
	* fname.ads, fname.adb (Is_Predefined_File_Name):
	Make sure things like "system.ali" are recognized as predefined.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* debug.adb: Update documentation of -gnatd.6.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Preanalyze_Range): Handle properly an Ada2012
	element iterator when the name is an overloaded function call,
	one of whose interpretations yields an array.

From-SVN: r247155
2017-04-25 11:19:34 +02:00
Arnaud Charlet
998429d6f2 [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* uname.ads, uname.adb (Is_Predefined_Unit_Name,
	Is_Internal_Unit_Name): New functions for operating on unit
	names, as opposed to file names. There's some duplicated code
	with fname.adb, which is unfortunate, but it seems like we don't
	want to add dependencies here.
	* fname-uf.adb (Get_File_Name): Change Is_Predefined_File_Name
	to Is_Predefined_Unit_Name; the former was wrong, because Uname
	is not a file name at all.
	* fname.ads, fname.adb: Document the fact that
	Is_Predefined_File_Name and Is_Internal_File_Name can be called
	for ALI files, and fix the code so it works properly for ALI
	files. E.g. these should return True for "system.ali".

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* exp_util.adb (Add_Invariant): Removed,
	code moved to Add_Invariant_Check, Add_Inherited_Invariant,
	and Add_Own_Invariant.	(Add_Invariant_Check): Used
	for adding runtime checks from any kind of invariant.
	(Add_Inherited_Invariant): Generates invariant checks for
	class-wide invariants (Add_Interface_Invariants): Removed, code
	moved to Build_Invariant_Procedure_Body (Add_Own_Invariant):
	Create a types own invariant procedure (Add_Parent_Invariants):
	Removed, code moved to Build_Invariant_Procedure_Body
	(Build_Invariant_Procedure_Body): Add refactored calls
	and integrated code from Add_Parent_Invariants and
	Add_Interface_Invariants.
	(Process_Type): Removed, the
	relavant code was inlined into both Add_Own_Invariant and
	Add_Inherited_Invariant.

From-SVN: r247154
2017-04-25 11:14:07 +02:00
Arnaud Charlet
94d3a18d33 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* make.adb, par-ch2.adb, sem_util.adb, scans.ads, sem_ch8.adb,
	scn.adb, osint.adb, fname.adb: Minor reformatting.

2017-04-25  Pascal Obry  <obry@adacore.com>

	* s-taprop-mingw.adb: Do not check for CloseHandle in
	Finalize_TCB.

From-SVN: r247153
2017-04-25 11:12:31 +02:00
Arnaud Charlet
51148ddab1 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_util.adb (Check_Part_Of_Reference):
	Continue to examine the context if the reference appears within
	an expression function.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* exp_ch7.adb, exp_ch7.ads Remove Build_Invariant_Procedure_Body
	and Build_Invariant_Procedure_Declaration.
	* exp_util.ads, exp_util.adb Add Build_Invariant_Procedure_Body
	and Build_Invariant_Procedure_Declaration from exp_ch7
	and break-out Is_Untagged_Private_Derivation from
	Build_Invariant_Procedure_Body.
	(Replace_Type_References):
	Append an extra parameter to allow for dispatching replacements
	and add the corrasponding logic.
	(Type_Invariant): Remove
	Replace_Typ_Refs and replace its references with calls to
	Replace_Type_References.
	* sem_ch3.adb, sem_prag.adb: Remove with and use of exp_ch7.

From-SVN: r247152
2017-04-25 11:06:09 +02:00
Arnaud Charlet
b043ae0111 [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_util.ads, sem_util.adb (Should_Ignore_Pragma): New function
	that returns True when appropriate.
	* par-prag.adb, exp_prag.adb, sem_prag.adb: Do not ignore pragmas
	when compiling predefined files.
	* fname.ads, fname.adb (Is_Predefined_File_Name): Fix bug:
	"gnat.adc" should not be considered a predefined file name.
	That required (or at least encouraged) a lot of cleanup of global
	variable usage. We shouldn't be communicating information via
	the global name buffer.
	* bindgen.adb, errout.adb, fname-uf.adb, lib-load.adb, make.adb,
	* restrict.adb, sem_ch10.adb, sem_ch6.adb, sem_ch8.adb: Changes
	required by the above-mentioned cleanup.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* osint.adb (Find_File): Handle properly a request for a
	configuration file whose name is a directory.

From-SVN: r247151
2017-04-25 11:00:45 +02:00
Arnaud Charlet
b6e6a4e380 [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_attr.adb, sem_ch5.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* types.ads: Minor: Fix '???' comment.
	* sem_ch8.adb: Minor comment fix.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_prag.adb: Remove suspicious uses of Name_Buf.
	* stringt.ads, stringt.adb, exp_dbug.adb, sem_dim.adb: Remove
	Add_String_To_Name_Buffer, to avoid using the global Name_Buf.
	Add String_To_Name with no side effects.

2017-04-25  Justin Squirek  <squirek@adacore.com>

	* sem_ch3.adb (Analyze_Declarations): Add
	additional condition for edge case.

2017-04-25  Bob Duff  <duff@adacore.com>

	* par-ch2.adb, scans.ads, scn.adb: Do not give an error for
	reserved words inside pragmas. This is necessary to allow the
	pragma name Interface to be used in pragma Ignore_Pragma.
	* par.adb: Minor comment fix.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* a-tags.ads, a-tags.adb (Type_Is_Abstract): Renamed as Is_Abstract.
	* rtsfind.ads (RE_Type_Is_Abstract): Renamed as Is_Abstract.
	* exp_disp.adb (Make_DT): Update occurrences of RE_Type_Is_Abstract.
	* exp_intr.adb (Expand_Dispatching_Constructor_Call): Update
	occurrences of RE_Type_Is_Abstract

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb (Build_Chain): Account for ancestor
	subtypes while traversing the derivation chain.

From-SVN: r247150
2017-04-25 10:56:41 +02:00
Arnaud Charlet
f8a219349a [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb: minor reformatting.

2017-04-25  Doug Rupp  <rupp@adacore.com>

	* sigtramp-vxworks-target.inc [PPC64]: Add a .localentry pseudo-op.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch5.adb (Analyze_Assignment): Reset Full_Analysis flag on
	the first pass over an assignment statement with target names,
	to prevent the generation of subtypes (such as discriminated
	record components)that may carry the target name outside of the
	tree for the assignment. The subtypes will be generated when
	the assignment is reanalyzed in full.
	(Analyze_Target_Name): Handle properly class-wide types.

From-SVN: r247149
2017-04-25 10:52:22 +02:00
Arnaud Charlet
b619c88eba [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* elists.ads, elists.adb (Prepend_Unique_Elmt): New routine.
	* exp_ch3.adb (Freeze_Type): Signal the DIC body is created for
	the purposes of freezing.
	* exp_util.adb Update the documentation and structure of the
	type map used in class-wide semantics of assertion expressions.
	(Add_Inherited_Tagged_DIC): There is really no need to preanalyze
	and resolve the triaged expression because all substitutions
	refer to the proper entities.  Update the replacement of
	references.
	(Build_DIC_Procedure_Body): Add formal parameter
	For_Freeze. Add local variable Build_Body. Inherited DIC pragmas
	are now only processed when freezing occurs.  Build a body only
	when one is needed.
	(Entity_Hash): Removed.
	(Map_Types): New routine.
	(Replace_Object_And_Primitive_References): Removed.
	(Replace_References): New routine.
	(Replace_Type_References): Moved to the library level of Exp_Util.
	(Type_Map_Hash): New routine.
	(Update_Primitives_Mapping): Update the mapping call.
	(Update_Primitives_Mapping_Of_Types): Removed.
	* exp_util.ads (Build_DIC_Procedure_Body): Add formal
	parameter For_Freeze and update the comment on usage.
	(Map_Types): New routine.
	(Replace_References): New routine.
	(Replace_Type_References): Moved to the library level of Exp_Util.
	(Update_Primitives_Mapping_Of_Types): Removed.
	* sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC
	properties of the private type to the full view in case the full
	view derives from a parent type and inherits a DIC pragma.
	* sem_prag.adb (Analyze_Pragma): Guard against a case where a
	DIC pragma is placed at the top of a declarative region.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* a-tasatt.adb: Complete previous change and use an unsigned
	int to avoid overflow checks.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_attr.adb (Analyze_Attribute, case 'Access): Specialize
	the error message when the attribute reference is an actual in
	a call to a subprogram inherited from a generic formal type with
	unknown discriminants, which makes the subprogram and its formal
	parameters intrinsic (see RM 6.3.1 (8) and (13)).

From-SVN: r247148
2017-04-25 10:37:09 +02:00
Arnaud Charlet
2bb988bb1c [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_aggr.adb, inline.adb, einfo.adb, einfo.ads, scng.adb,
	sem_prag.adb: Minor reformatting.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_attr.adb (Type_Key): Add code in the
	recursive Compute_Type_Key to protect against fetching the source
	code for Standard, in case a component of the type is declared
	in Standard. There was already code to do this for the original
	type, but not for its components.

From-SVN: r247147
2017-04-25 10:33:18 +02:00
Arnaud Charlet
b03d3f7390 [multiple changes]
2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_ch3.adb (Build_Initialization_Call): Handle
	subtypes of private types when searching for the underlying full
	view of a private type.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* sem_res.adb (Set_Mixed_Mode_Operand): A universal
	real conditional expression can appear in a fixed-type context
	and must be resolved with that context to facilitate the code
	generation to the backend.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* einfo.adb, einfo.ads (Body_Needed_For_Inlining): New flag,
	to indicate whether during inline processing, when some unit U1
	appears in the context of a unit U2 compiled for instantiation
	or inlining purposes, the body of U1 needs to be compiled as well.
	* sem_prag.adb (Process_Inline): Set Body_Needed_For_Inlining if
	context is a package declaration.
	* sem_ch12.adb (Analyze_Generic_Subprogram_Declaration,
	Analyze_Generic_Package_Declaration): ditto.
	* inline.adb (Analyze_Inlined_Bodies): Check
	Body_Needed_For_Inlining.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* par.adb (Current_Assign_Node): Global variable use to record
	the presence of a target_name in the right hand side of the
	assignment being parsed.
	* par-ch4.adb (P_Name): If the name is a target_name, mark the
	enclosing assignment node accordingly.
	* par-ch5.adb (P_Assignment_Statement): Set Current_Assign_Node
	appropriately.
	* sem_ch5.adb (Analyze_Assignment): Disable expansion before
	analyzing RHS if the statement has target_names.
	* sem_aggr.adb (Resolve_Iterated_Component_Association): Handle
	properly choices that are subtype marks.
	* exp_ch5.adb: Code cleanup.

2017-04-25  Bob Duff  <duff@adacore.com>

	* s-memory.adb: Add a comment regarding efficiency.
	* atree.adb: Fix the assertion, and combine 2 assertions into one,
	"the source has an extension if and only if the destination does."
	* sem_ch3.adb, sem_ch13.adb: Address ??? comments.

2017-04-25  Arnaud Charlet  <charlet@adacore.com trojanek>

	* a-tasatt.adb (Set_Value): Fix handling of 32bits -> 64bits
	conversion.

2017-04-25  Doug Rupp  <rupp@adacore.com>

	* init.c (__gnat_error_handler) [vxworks]: Turn on sigtramp
	handling for ppc64-vx7.
	* sigtramp-vxworks-target.inc
	[SIGTRAMP_BODY]: Add section for ppc64-vx7.

From-SVN: r247146
2017-04-25 10:29:46 +02:00
Arnaud Charlet
18e829474c New file.
From-SVN: r247145
2017-04-25 10:25:29 +02:00
Bob Duff
f607cacf5d uintp.adb (Most_Sig_2_Digits): In case Direct (Right)...
2017-04-25  Bob Duff  <duff@adacore.com>

	* uintp.adb (Most_Sig_2_Digits): In case Direct (Right), fetch
	Direct_Val (Right), instead of the incorrect Direct_Val (Left).
	(UI_GCD): Remove ??? comment involving possible efficiency
	improvements. This just isn't important after all these years.
	Also minor cleanup.
	* uintp.ads: Minor cleanup.

From-SVN: r247144
2017-04-25 10:23:06 +02:00
Hristian Kirtchev
28ad2460d2 exp_util.adb, [...]: Revert previous changes.
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_util.adb, exp_util.ads, sem_ch7.adb, sem_prag.adb, exp_ch3.adb:
	Revert previous changes.
	* scng.adb: Minor reformatting.
	* s-stratt.ads: Fix unbalanced parens in comment.

From-SVN: r247143
2017-04-25 10:21:44 +02:00
Arnaud Charlet
b41c731f0a [multiple changes]
2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* sem_ch3.adb, exp_util.adb, sem_prag.adb, freeze.adb, sem_util.adb:
	Minor reformatting.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* scng.adb (Scan): Handle '@' appropriately.
	* sem_ch5.adb: Code cleanup.

From-SVN: r247142
2017-04-25 10:19:33 +02:00
Arnaud Charlet
b536073728 [multiple changes]
2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* freeze.adb (Check_Expression_Function): Do not check for the
	use of deferred constants if the freezing of the expression
	function is triggered by its generated body, rather than a
	premature use.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* exp_attr.adb (Rewrite_Stream_Proc_Call): Handle
	subtypes of private types when performing the view conversion.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* exp_ch3.adb (Freeze_Type): Signal the DIC body is created for
	the purposes of freezing.
	* exp_util.adb Update the documentation and structure of the
	type map used in class-wide semantics of assertion expressions.
	(Add_Inherited_Tagged_DIC): There is really no need to preanalyze
	and resolve the triaged expression because all substitutions
	refer to the proper entities.  Update the replacement of
	references.
	(Build_DIC_Procedure_Body): Add formal parameter
	For_Freeze. Add local variable Build_Body. Inherited DIC pragmas
	are now only processed when freezing occurs.  Build a body only
	when one is needed.
	(Entity_Hash): Removed.
	(Map_Types): New routine.
	(Replace_Object_And_Primitive_References): Removed.
	(Replace_References): New routine.
	(Replace_Type_References): Moved to the library level of Exp_Util.
	(Type_Map_Hash): New routine.
	(Update_Primitives_Mapping): Update the mapping call.
	(Update_Primitives_Mapping_Of_Types): Removed.
	* exp_util.ads (Build_DIC_Procedure_Body): Add formal
	parameter For_Freeze and update the comment on usage.
	(Map_Types): New routine.
	(Replace_References): New routine.
	(Replace_Type_References): Moved to the library level of Exp_Util.
	(Update_Primitives_Mapping_Of_Types): Removed.
	* sem_ch7.adb (Preserve_Full_Attributes): Propagate the DIC
	properties of the private type to the full view in case the full
	view derives from a parent type and inherits a DIC pragma.
	* sem_prag.adb (Analyze_Pragma): Guard against a case where a
	DIC pragma is placed at the top of a declarative region.

From-SVN: r247141
2017-04-25 10:12:31 +02:00
Arnaud Charlet
a187206c14 [multiple changes]
2017-04-25  Tristan Gingold  <gingold@adacore.com>

	* s-mmap.ads (Data): Add pragma Inline.

2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>

	* checks.adb (Insert_Valid_Check): Do not use
	a renaming to alias a volatile name because this will lead to
	multiple evaluations of the volatile name. Use a constant to
	capture the value instead.

2017-04-25  Doug Rupp  <rupp@adacore.com>

	* init.c [VxWorks Section]: Disable sigtramp for ppc64-vx7.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* exp_util.adb, exp_util.ads (Build_Class_Wide_Expression):
	Add out parameter to indicate to caller that a wrapper must
	be constructed for an inherited primitive whose inherited
	pre/postcondition has called to overridden primitives.
	* freeze.adb (Check_Inherited_Conditions): Build wrapper body
	for inherited primitive that requires it.
	* sem_disp.adb (Check_Dispatching_Operation): Such wrappers are
	legal primitive operations and belong to the list of bodies
	generated after the freeze point of a type.
	* sem_prag.adb (Build_Pragma_Check_Equivalent): Use new signature
	of Build_Class_Wide_Expression.
	* sem_util.adb, sem_util.ads (Build_Overriding_Spec): New procedure
	to construct the specification of the wrapper subprogram created
	for an inherited operation.

From-SVN: r247140
2017-04-25 10:07:38 +02:00
Arnaud Charlet
15fc8cb7ee [multiple changes]
2017-04-25  Bob Duff  <duff@adacore.com>

	* s-osinte-linux.ads (pthread_mutexattr_setprotocol,
	pthread_mutexattr_setprioceiling): Add new interfaces for these
	pthread operations.
	* s-taprop-linux.adb (Initialize_Lock, Initialize_TCB): Set
	protocols as appropriate for Locking_Policy 'C' and 'I'.
	* s-taprop-posix.adb: Minor reformatting to make it more similar
	to s-taprop-linux.adb.

2017-04-25  Ed Schonberg  <schonberg@adacore.com>

	* sem_ch3.adb (Get_Discriminant_Value, Search_Derivation_Levels):
	Handle properly a multi- level derivation involving both renamed
	and constrained parent discriminants, when the type to be
	constrained has fewer discriminants that the ultimate ancestor.

2017-04-25  Bob Duff  <duff@adacore.com>

	* sem_util.adb (Is_Object_Reference): In the
	case of N_Explicit_Dereference, return False if it came from a
	conditional expression.

2017-04-25  Bob Duff  <duff@adacore.com>

	* par-ch4.adb (P_Case_Expression): If a semicolon
	is followed by "when", assume that ";" was meant to be ",".

From-SVN: r247139
2017-04-25 10:04:26 +02:00
Arnaud Charlet
611d5e3c82 Minor reformatting.
From-SVN: r247138
2017-04-25 09:58:18 +02:00
Gary Dismukes
605afee8d5 sem_ch9.adb, [...]: Minor reformatting and typo fixes.
2017-04-25  Gary Dismukes  <dismukes@adacore.com>

	* sem_ch9.adb, sem_ch10.adb, sem_util.adb: Minor reformatting and typo
	fixes.

From-SVN: r247137
2017-04-25 09:58:01 +02:00
Arnaud Charlet
b912db1617 [multiple changes]
2017-04-25  Arnaud Charlet  <charlet@adacore.com>

	* rtsfind.ads (SPARK_Implicit_Load): New procedure for forced
	loading of an entity.
	* rtsfind.adb (SPARK_Implicit_Load): Body with a pattern
	previously repeated in the analysis.
	* sem_ch9.adb (Analyze_Protected_Type_Declaration): use new
	procedure SPARK_Implicit_Load.	(Analyze_Task_Type_Declaration):
	use new procedure SPARK_Implicit_Load.
	* sem_ch10.adb (Analyze_Compilation_Unit): Use new procedure
	SPARK_Implicit_Load.

2017-04-25  Javier Miranda  <miranda@adacore.com>

	* sem_util.adb (New_Copy_Tree): By default
	copying of defining identifiers is prohibited because
	this would introduce an entirely new entity into the
	tree. This patch introduces an exception to this general
	rule: the declaration of constants and variables located in
	Expression_With_Action nodes.
	(Copy_Itype_With_Replacement): Renamed as Copy_Entity_With_Replacement.
	(In_Map): New subprogram.
	(Visit_Entity): New subprogram.
	(Visit_Node): Handle EWA_Level,
	EWA_Inner_Scope_Level, and take care of defining entities defined
	in Expression_With_Action nodes.

2017-04-25  Thomas Quinot  <quinot@adacore.com>

	* exp_ch6.adb: minor comment edit.
	* sinfo.ads, sinfo.adb: New Null_Statement attribute for null
	procedure specifications that come from source.
	* par-ch6.adb (P_Subprogram, case of a null procedure): Set new
	Null_Statement attribute.
	* par_sco.adb (Traverse_Declarations_Or_Statements): For a null
	procedure, generate statement SCO for the generated NULL statement.
	* sem_ch6.adb (Analyze_Null_Procedure): Use null statement from
	parser, if available.

From-SVN: r247136
2017-04-25 09:56:05 +02:00
Andreas Krebbel
e57136da2f Add missing changelog entries for last commit.
From-SVN: r247135
2017-04-25 07:45:41 +00:00
Andreas Krebbel
854dbb3cb1 S/390: PR80464: Split MEM->GPR vector moves
We do this already for TImode values but it was missing for vector
modes.

gcc/ChangeLog:

2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/80464
	* config/s390/vector.md: Split MEM->GPR vector moves for
	non-s_operand addresses.

gcc/testsuite/ChangeLog:

2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/80464
	* gfortran.fortran-torture/compile/pr80464.f90: New test.

From-SVN: r247134
2017-04-25 07:43:49 +00:00
Andreas Krebbel
3cb9ee2f9c S/390: PR79895: Fix TImode constant handling
The P constraint letter is supposed to match every constant which is
acceptable during reload.  However, constraints do not appear to be
able to handle const_wide_int yet.  It works with predicates so the
alternative is modelled with a new predicate now.

gcc/ChangeLog:

2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/79895
	* config/s390/predicates.md (reload_const_wide_int_operand): New
	predicate.
	* config/s390/s390.md ("movti"): Remove d/P alternative.
	("movti_bigconst"): New pattern definition.

gcc/testsuite/ChangeLog:

2017-04-25  Andreas Krebbel  <krebbel@linux.vnet.ibm.com>

	PR target/79895
	* gcc.target/s390/pr79895.c: New test.

From-SVN: r247133
2017-04-25 07:41:41 +00:00
Dominik Vogt
03db9ab594 S/390: PR80080: Optimize atomic patterns.
The attached patch optimizes the atomic_exchange and atomic_compare
patterns on s390 and s390x (mostly limited to SImode and DImode).
Among general optimizaation, the changes fix most of the problems
reported in PR 80080:
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80080

gcc/ChangeLog:

2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	PR target/80080
	* s390-protos.h (s390_expand_cs_hqi): Removed.
	(s390_expand_cs, s390_expand_atomic_exchange_tdsi): New prototypes.
	* config/s390/s390.c (s390_emit_compare_and_swap): Handle all integer
	modes as well as CCZ1mode and CCZmode.
	(s390_expand_atomic_exchange_tdsi, s390_expand_atomic): Adapt to new
	signature of s390_emit_compare_and_swap.
	(s390_expand_cs_hqi): Likewise, make static.
	(s390_expand_cs_tdsi): Generate an explicit compare before trying
	compare-and-swap, in some cases.
	(s390_expand_cs): Wrapper function.
	(s390_expand_atomic_exchange_tdsi): New backend specific expander for
	atomic_exchange.
	(s390_match_ccmode_set): Allow CCZmode <-> CCZ1 mode.
	* config/s390/s390.md ("atomic_compare_and_swap<mode>"): Merge the
	patterns for small and large integers.  Forbid symref memory operands.
	Move expander to s390.c.  Require cc register.
	("atomic_compare_and_swap<DGPR:mode><CCZZ1:mode>_internal")
	("*atomic_compare_and_swap<TDI:mode><CCZZ1:mode>_1")
	("*atomic_compare_and_swapdi<CCZZ1:mode>_2")
	("*atomic_compare_and_swapsi<CCZZ1:mode>_3"): Use s_operand to forbid
	symref memory operands.  Remove CC mode and call s390_match_ccmode
	instead.
	("atomic_exchange<mode>"): Allow and implement all integer modes.

gcc/testsuite/ChangeLog:

2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	PR target/80080
	* gcc.target/s390/md/atomic_compare_exchange-1.c: New test.
	* gcc.target/s390/md/atomic_compare_exchange-1.inc: New test.
	* gcc.target/s390/md/atomic_exchange-1.inc: New test.

From-SVN: r247132
2017-04-25 07:37:50 +00:00
Dominik Vogt
97160c9b3b S/390: Load and test peephole.
gcc/ChangeLog:

2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* config/s390/s390.md (define_peephole2): New peephole to help
	combining the load-and-test pattern with volatile memory.

From-SVN: r247131
2017-04-25 07:33:05 +00:00
Dominik Vogt
3ea685e75a S/390: Use load-on-condition in cstorecc4
gcc/ChangeLog:

2017-04-25  Dominik Vogt  <vogt@linux.vnet.ibm.com>

	* config/s390/s390.md ("cstorecc4"): Use load-on-condition and deal
	with CCZmode for TARGET_Z196.

From-SVN: r247130
2017-04-25 07:31:22 +00:00
Jakub Jelinek
ba5d69f3f2 re PR rtl-optimization/80501 (Wrong code w/ a signed char, a shift, and a conversion to int)
PR rtl-optimization/80501
	* combine.c (make_compound_operation_int): Set subreg_code to SET
	even for AND with mask of the sign bit of mode.

	* gcc.c-torture/execute/pr80501.c: New test.

From-SVN: r247128
2017-04-25 09:28:43 +02:00