1. 25 Apr, 2017 40 commits
    • [ARC] Allow extension core registers to be used for addresses. · 4f9c5d5c
      gcc/
      2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.h (REGNO_OK_FOR_BASE_P): Consider also extension
      	core registers.
      	(REG_OK_FOR_INDEX_P_NONSTRICT): Likewise.
      	(REG_OK_FOR_BASE_P_NONSTRICT): Likewise.
      
      From-SVN: r247196
      Claudiu Zissulescu committed
    • [ARC] Differentiate between ARCv1 and ARCv2 'h'-reg class for ADD insns. · a0caeef6
      gcc/
      2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.c (arc_output_addsi): Check for h-register class
      	when emitting short ADD instructions.
      
      From-SVN: r247195
      Claudiu Zissulescu committed
    • [ARC] Differentiate between ARCv1 and ARCv2 'h'-reg class for CMP insns. · 0e03cebd
      gcc/
      2017-04-25  Claudiu Zissulescu  <claziss@synopsys.com>
      
      	* config/arc/arc.md (cmpsi_cc_insn_mixed): Use 'h' register
      	constraint.
      	(cmpsi_cc_c_insn): Likewise.
      	(cbranchsi4_scratch): Compute proper instruction length using
      	compact_hreg_operand.
      	* config/arc/predicates.md (compact_hreg_operand): New predicate.
      
      From-SVN: r247194
      Claudiu Zissulescu committed
    • Code clenups. · bac865a2
      From-SVN: r247193
      Arnaud Charlet committed
    • [multiple changes] · 321c24f7
      2017-04-25  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch3.adb (Add_Internal_Interface_Entities): Move
      	Has_Non_Trivial_Precondition to sem_util. for use elsewhere.
      	Improve error message on operations that inherit non-conforming
      	classwide preconditions from ancestor and progenitor.
      	* sem_util.ads, sem_util.adb (Has_Non_Trivial_Precondition):
      	moved here from sem_ch3.
      	* sem_ch8.adb (Analyze_Subprogram_Renaming): Implement legality
      	check given in RM 6.1.1 (17) concerning renamings of overriding
      	operations that inherits class-wide preconditions from ancestor
      	or progenitor.
      
      2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* exp_ch7.adb (Build_Adjust_Or_Finalize_Statements): Code cleanup.
      	(Build_Adjust_Statements): Code cleanup.
      	(Build_Finalizer): Update the initialization of
      	Exceptions_OK.
      	(Build_Finalize_Statements): Code cleanup.
      	(Build_Initialize_Statements): Code cleanup.
      	(Make_Deep_Array_Body): Update the initialization of
      	Exceptions_OK.
      	(Make_Deep_Record_Body): Update the initialization of Exceptions_OK.
      	(Process_Object_Declaration): Generate a null exception handler only
      	when exceptions are allowed.
      	(Process_Transients_In_Scope): Update the initialization of
      	Exceptions_OK.
      	* exp_util.ads, exp_util.adb (Exceptions_In_Finalization_OK): New
      	routine.
      	* sem_ch11.adb (Analyze_Exception_Handlers): Do not check any
      	restrictions when the handler is internally generated and the
      	mode is warnings.
      
      2017-04-25  Ed Schonberg  <schonberg@adacore.com>
      
      	* sem_ch3.adb (Has_Non_Trivial_Precondition): New predicate to
      	enforce legality rule on classwide preconditions inherited from
      	both an ancestor and a progenitor (RM 6.1.1 (10-13).
      	* sem_disp.adb (Check_Dispatching_Context): A call to an abstract
      	subprogram need not be dispatching if it appears in a precondition
      	for an abstract or null subprogram.
      
      2017-04-25  Gary Dismukes  <dismukes@adacore.com>
      
      	* sem_ch10.adb: Minor typo fix.
      
      From-SVN: r247192
      Arnaud Charlet committed
    • * gcc-interface/Makefile.in: Cleanup VxWorks targets. · 6948bc18
      From-SVN: r247186
      Arnaud Charlet committed
    • Minor reformatting. · cc0b3bac
      From-SVN: r247184
      Arnaud Charlet committed
    • [multiple changes] · 457cee0b
      2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
      
      	* fname.adb (Is_Internal_File_Name): Arrange for the slices to
      	have a length which is a power of 2.
      	(Is_Predefined_File_Name): Likewise. Adjust comment.
      
      2017-04-25  Bob Duff  <duff@adacore.com>
      
      	* exp_aggr.adb (Component_Count): Protect the
      	arithmetic from attempting to convert a value >= 2**31 to Int,
      	which would otherwise raise Constraint_Error.
      
      2017-04-25  Bob Duff  <duff@adacore.com>
      
      	* opt.ads (Locking_Policy): Fix incorrect documentation. The
      	first character of the policy name is not unique.
      
      2017-04-25  Bob Duff  <duff@adacore.com>
      
      	* s-fileio.adb (Name): Raise Use_Error if the file is a temp file.
      	* s-ficobl.ads (Is_Temporary_File): Remove incorrect comment
      	about this flag not being used. It was already used, and it is
      	now used more.
      
      From-SVN: r247183
      Arnaud Charlet committed
    • [multiple changes] · cf9a473e
      2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* einfo.adb Flag301 is now known as Ignore_SPARK_Mode_Pragmas.
      	(Ignore_SPARK_Mode_Pragmas): New routine.
      	(Set_Ignore_SPARK_Mode_Pragmas): New routine.
      	(Write_Entity_Flags): Add an entry for Ignore_SPARK_Mode_Pragmas.
      	* einfo.ads Add new attribute Ignore_SPARK_Mode_Pragmas and update
      	related entities.
      	(Ignore_SPARK_Mode_Pragmas): New routine
      	along with pragma Inline.
      	(Set_Ignore_SPARK_Mode_Pragmas): New routine along with pragma Inline.
      	* opt.ads Rename flag Ignore_Pragma_SPARK_Mode to
      	Ignore_SPARK_Mode_Pragmas_In_Instance.
      	* sem_ch6.adb (Analyze_Subprogram_Body_Helper):
      	Save and restore the value of global flag
      	Ignore_SPARK_Mode_Pragmas_In_Instance. Set or reinstate the value
      	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance when either
      	the corresponding spec or the body must ignore all SPARK_Mode
      	pragmas found within.
      	(Analyze_Subprogram_Declaration): Mark
      	the spec when it needs to ignore all SPARK_Mode pragmas found
      	within to allow the body to infer this property in case it is
      	instantiated or inlined later.
      	* sem_ch7.adb (Analyze_Package_Body_Helper): Save and restore the
      	value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set
      	the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance
      	when the corresponding spec also ignored all SPARK_Mode pragmas
      	found within.
      	(Analyze_Package_Declaration): Mark the spec when
      	it needs to ignore all SPARK_Mode pragmas found within to allow
      	the body to infer this property in case it is instantiated or
      	inlined later.
      	* sem_ch12.adb (Analyze_Formal_Package_Declaration):
      	Save and restore the value of flag
      	Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the
      	formal spec when it needs to ignore all SPARK_Mode
      	pragmas found within to allow the body to infer this
      	property in case it is instantiated or inlined later.
      	(Analyze_Package_Instantiation): Save and restore the value
      	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark
      	the instance spec when it needs to ignore all SPARK_Mode
      	pragmas found within to allow the body to infer this
      	property in case it is instantiated or inlined later.
      	(Analyze_Subprogram_Instantiation): Save and restore the value
      	of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Mark the
      	instance spec and anonymous package when they need to ignore
      	all SPARK_Mode pragmas found within to allow the body to infer
      	this property in case it is instantiated or inlined later.
      	(Instantiate_Package_Body): Save and restore the value of global
      	flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set the value of
      	global flag Ignore_SPARK_Mode_Pragmas_In_Instance when the
      	corresponding instance spec also ignored all SPARK_Mode pragmas
      	found within.
      	(Instantiate_Subprogram_Body): Save and restore the
      	value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance. Set
      	the value of global flag Ignore_SPARK_Mode_Pragmas_In_Instance
      	when the corresponding instance spec also ignored all SPARK_Mode
      	pragmas found within.
      	* sem_prag.adb (Analyze_Pragma): Update the reference to
      	Ignore_Pragma_SPARK_Mode.
      	* sem_util.adb (SPARK_Mode_Is_Off): A construct which ignored
      	all SPARK_Mode pragmas defined within yields mode "off".
      
      2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* bindgen.adb, exp_dbug.adb, errout.adb, fname.adb: Minor reformatting.
      
      2017-04-25  Bob Duff  <duff@adacore.com>
      
      	* exp_atag.adb (Build_CW_Membership): Add "Suppress =>
      	All_Checks" to avoid generating unnecessary checks.
      	* exp_ch4.adb (Expand_N_In, Make_Tag_Check): Add "Suppress =>
      	All_Checks".
      	* sem.ads: Fix comment.
      	* expander.ads: Fix comment.
      	* exp_atag.ads: Fix comment: "Index = 0" should be
      	"Index >= 0".
      
      2017-04-25  Gary Dismukes  <dismukes@adacore.com>
      
      	* s-taprop-linux.adb: Minor editorial fixes.
      
      From-SVN: r247182
      Arnaud Charlet committed
    • sem_util.adb (New_Copy_Tree): Put back the declarations of the hash tables at library level. · 1f0bcd44
      2017-04-25  Eric Botcazou  <ebotcazou@adacore.com>
      
      	* sem_util.adb (New_Copy_Tree): Put back the declarations of the
      	hash tables at library level.  Reinstate the NCT_Hash_Tables_Used
      	variable and set it to True whenever the main hash table is
      	populated.  Short- circuit the Assoc function if it is false
      	and add associated guards.
      
      From-SVN: r247181
      Arnaud Charlet committed
    • checks.adb (Insert_Valid_Check): Code cleanup. · 62e45e3e
      2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* checks.adb (Insert_Valid_Check): Code cleanup.
      	* exp_ch6.adb (Add_Validation_Call_By_Copy_Code): New routine.
      	(Expand_Actuals): Generate proper copy-back for a validation
      	variable when it acts as the argument of a type conversion.
      	* sem_util.adb (Is_Validation_Variable_Reference): Augment the
      	predicate to operate on type qualifications.
      
      From-SVN: r247180
      Hristian Kirtchev committed
    • sem_prag.adb, [...]: Minor reformatting. · ec40b86c
      2017-04-25  Hristian Kirtchev  <kirtchev@adacore.com>
      
      	* sem_prag.adb, exp_ch6.adb, binde.adb, sem_disp.adb, s-fileio.adb:
      	Minor reformatting.
      
      From-SVN: r247179
      Hristian Kirtchev committed
    • sem_prag.adb (No_Return): Give an error if the pragma applies to a body. · ca1f6b29
      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
      Bob Duff committed
    • [multiple changes] · 36357cf3
      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
      Arnaud Charlet committed
    • [multiple changes] · 48c8c473
      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
      Arnaud Charlet committed
    • [multiple changes] · 94295b25
      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
      Arnaud Charlet committed
    • [multiple changes] · b0cd50fd
      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
      Arnaud Charlet committed
    • checks.adb (Apply_Scalar_Range_Check): Analyze precisely conversions from float… · d8ee014f
      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
      Yannick Moy committed
    • checks.adb (Determine_Range_R): Special case type conversions from integer to… · 3c77943e
      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
      Yannick Moy committed
    • re PR bootstrap/80509 (ICE in cc1 during selftests) · 468afa1a
      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
      Richard Biener committed
    • [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