1. 25 Apr, 2017 40 commits
    • [multiple changes] · 89b6c83e
      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
      Arnaud Charlet committed
    • [multiple changes] · c6840e83
      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
      Arnaud Charlet committed
    • [multiple changes] · f2a54683
      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
      Arnaud Charlet committed
    • [multiple changes] · 2df23f66
      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
      Arnaud Charlet committed
    • [multiple changes] · d9049849
      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
      Arnaud Charlet committed
    • sem_prag.adb, [...]: Minor reformatting. · db78cb81
      2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_prag.adb, sem_prag.ads: Minor reformatting.
      
      From-SVN: r247165
      Hristian Kirtchev committed
    • Minor reformatting. · 26718854
      From-SVN: r247164
      Arnaud Charlet committed
    • sem_ch3.adb (Check_Entry_Contract): Call Preanalyze_Spec_Expression so that… · 0c85534d
      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
      Ed Schonberg committed
    • [multiple changes] · be3416c6
      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
      Arnaud Charlet committed
    • Code cleanups. · 003d46d5
      From-SVN: r247161
      Arnaud Charlet committed
    • 2017-04-25 Arnaud Charlet <charlet@adacore.com trojanek> · f4f5851e
      	* 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
      Arnaud Charlet committed
    • re PR tree-optimization/79201 (missed optimization: sinking doesn't handle… · 2700fbd6
      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
      Richard Biener committed
    • Code clean ups. · bfda9ccd
      From-SVN: r247158
      Arnaud Charlet committed
    • [multiple changes] · ded462b0
      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
      Arnaud Charlet committed
    • [multiple changes] · d1eb8a82
      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
      Arnaud Charlet committed
    • [multiple changes] · 820f1162
      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
      Arnaud Charlet committed
    • [multiple changes] · 998429d6
      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
      Arnaud Charlet committed
    • [multiple changes] · 94d3a18d
      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
      Arnaud Charlet committed
    • [multiple changes] · 51148dda
      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
      Arnaud Charlet committed
    • [multiple changes] · b043ae01
      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
      Arnaud Charlet committed
    • [multiple changes] · b6e6a4e3
      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
      Arnaud Charlet committed
    • [multiple changes] · f8a21934
      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
      Arnaud Charlet committed
    • [multiple changes] · b619c88e
      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
      Arnaud Charlet committed
    • [multiple changes] · 2bb988bb
      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
      Arnaud Charlet committed
    • [multiple changes] · b03d3f73
      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
      Arnaud Charlet committed
    • New file. · 18e82947
      From-SVN: r247145
      Arnaud Charlet committed
    • uintp.adb (Most_Sig_2_Digits): In case Direct (Right)... · f607cacf
      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
      Bob Duff committed
    • exp_util.adb, [...]: Revert previous changes. · 28ad2460
      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
      Hristian Kirtchev committed
    • [multiple changes] · b41c731f
      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
      Arnaud Charlet committed
    • [multiple changes] · b5360737
      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
      Arnaud Charlet committed
    • [multiple changes] · a187206c
      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
      Arnaud Charlet committed
    • [multiple changes] · 15fc8cb7
      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
      Arnaud Charlet committed
    • Minor reformatting. · 611d5e3c
      From-SVN: r247138
      Arnaud Charlet committed
    • sem_ch9.adb, [...]: Minor reformatting and typo fixes. · 605afee8
      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
      Gary Dismukes committed
    • [multiple changes] · b912db16
      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
      Arnaud Charlet committed
    • Add missing changelog entries for last commit. · e57136da
      From-SVN: r247135
      Andreas Krebbel committed
    • S/390: PR80464: Split MEM->GPR vector moves · 854dbb3c
      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
      Andreas Krebbel committed
    • S/390: PR79895: Fix TImode constant handling · 3cb9ee2f
      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
      Andreas Krebbel committed
    • S/390: PR80080: Optimize atomic patterns. · 03db9ab5
      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
      Dominik Vogt committed
    • S/390: Load and test peephole. · 97160c9b
      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
      Dominik Vogt committed