exp_spark.adb (Expand_SPARK_Attribute_Reference): For attributes which return Univers...
[gcc.git] / gcc / ada / ChangeLog
index 549ee1ab08b2cbdd476ed3fa35cf8c731ea7d8b7..cc26c9f3793db8fa8fa982b6e60665f8902198e1 100644 (file)
@@ -1,3 +1,905 @@
+2017-01-23  Claire Dross  <dross@adacore.com>
+
+       * exp_spark.adb (Expand_SPARK_Attribute_Reference): For attributes
+       which return Universal_Integer, force the overflow check flag for
+       Length and Range_Length for types as big as Long_Long_Integer.
+
+2017-01-23  Claire Dross  <dross@adacore.com>
+
+       * exp_spark.adb (Expand_SPARK_Attribute_Reference):  For
+       attributes which return Universal_Integer, introduce a conversion
+       to the expected type with the appropriate check flags set.
+       * sem_res.adb (Resolve_Range): The higher bound can be in Typ's
+       base type if the range is null. It may still be invalid if it
+       is higher than the lower bound. This is checked later in the
+       context in which the range appears.
+
+2017-01-23  Pierre-Marie de Rodat  <derodat@adacore.com>
+
+       * scos.ads: Introduce a constant to represent ignored
+       dependencies in SCO_Unit_Table_Entry.
+
+2017-01-23  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * exp_ch9.adb (Expand_N_Protected_Type_Declaration): Remove extra
+       spaces from error messages.
+
+2017-01-23  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_ch3.adb (Check_Large_Modular_Array): New procedure,
+       subsidiary to Expand_N_Object_ Declaration, to compute a guard on
+       an object declaration for an array type with a modular index type
+       with the size of Long_Long_Integer. Special processing is needed
+       in this case to compute reliably the size of the object, and
+       eventually  to raise Storage_Error, when wrap-around arithmetic
+       might compute a meangingless size for the object.
+
+2017-01-23  Justin Squirek  <squirek@adacore.com>
+
+       * a-wtenau.adb, par-endh.adb, sem_prag.adb,
+       sem_type.adb: Code cleanups.
+
+2017-01-23  Bob Duff  <duff@adacore.com>
+
+       * sem_res.adb (Resolve_Call): In the part of the code where
+       it is deciding whether to turn the call into an indexed
+       component, avoid doing so if the call is to an instance of
+       Unchecked_Conversion. Otherwise, the compiler turns it into an
+       indexed component, and resolution of that turns it back into a
+       function call, and so on, resulting in infinite recursion.
+       * sem_util.adb (Needs_One_Actual): If the first formal has a
+       default, then return False.
+
+2017-01-21  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-01-20  Thomas Quinot  <quinot@adacore.com>
+
+       * sem_warn.adb (Warn_On_Useless_Assignment): Adjust wording of warning
+       message.
+
+2017-01-20  Nicolas Roche  <roche@adacore.com>
+
+       * terminals.c: Ignore failures on setpgid and tcsetpgrp commands.
+
+2017-01-20  Bob Duff  <duff@adacore.com>
+
+       * sem_eval.adb (Compile_Time_Compare): Disable the expr+literal
+       (etc) optimizations when the type is modular.
+
+2017-01-20  Yannick Moy  <moy@adacore.com>
+
+       * sem_ch6.adb (Move_Pragmas): move some pragmas,
+       but copy the SPARK_Mode pragma instead of moving it.
+       (Build_Subprogram_Declaration): Ensure that the generated spec
+       and original body share the same SPARK_Pragma aspect/pragma.
+       * sem_util.adb, sem_util.ads (Copy_SPARK_Mode_Aspect): New
+       procedure to copy SPARK_Mode aspect.
+
+2017-01-20  Bob Duff  <duff@adacore.com>
+
+       * sem_ch3.adb (Analyze_Declarations): Disable Resolve_Aspects
+       even in ASIS mode.
+       * sem_ch13.adb (Resolve_Name): Enable setting the entity to
+       Empty even in ASIS mode.
+
+2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * exp_ch9.adb: minor style fixes in comments.
+       * sem_ch9.adb (Analyze_Delay_Relative): in GNATprove mode a delay
+       relative statement introduces an implicit dependency on
+       Ada.Real_Time.Clock_Time.
+       * sem_util.adb: Minor reformatting.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch13.adb (Analyze_Aspect_Specifications): Aspect Alignment
+       must be treated as delayed aspect even if the expression is
+       a literal, because the aspect affects the freezing and the
+       elaboration of the object to which it applies.
+
+2017-01-20  Tristan Gingold  <gingold@adacore.com>
+
+       * s-osinte-vxworks.ads (Interrup_Range): New subtype.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * lib-xref.adb (Generate_Reference): Do not warn about the
+       presence of a pragma Unreferenced if the entity appears as the
+       actual in a procedure call that does not come from source.
+
+2017-01-20  Pascal Obry  <obry@adacore.com>
+
+       * expect.c, terminals.c: Fix some warnings about unused variables.
+       * gsocket.h, adaint.c, adaint.h: Fix some more warnings in the C part
+       of the runtime.
+
+2017-01-20  Bob Duff  <duff@adacore.com>
+
+       * exp_attr.adb (Constrained): Apply an access check (check that
+       the prefix is not null) when the prefix denotes an object of an
+       access type; that is, when there is an implicit dereference.
+
+2017-01-20  Gary Dismukes  <dismukes@adacore.com>
+
+       * s-rident.ads (constant Profile_Info): Remove
+       No_Calendar from GNAT_Extended_Ravenscar restrictions.
+
+2017-01-20  Tristan Gingold  <gingold@adacore.com>
+
+       *  s-maccod.ads: Add pragma No_Elaboration_Code_All
+
+2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * ghost.adb (Mark_Ghost_Clause): New routine.
+       (Prune_Node): Do not prune compilation unit nodes.
+       (Remove_Ignored_Ghost_Code): Prune the compilation unit node directly.
+       This does not touch the node itself, but does prune all its fields.
+       * ghost.ads (Mark_Ghost_Clause): New routine.
+       * sem_ch8.adb (Analyze_Use_Package): Emit an error when a use
+       package clause mentions Ghost and non-Ghost packages. Mark a
+       use package clause as Ghost when it mentions a Ghost package.
+       (Analyze_Use_Type): Emit an error when a use type clause mentions
+       Ghost and non-Ghost types. Mark a use type clause as Ghost when
+       it mentions a Ghost type.
+       * sem_ch10.adb (Analyze_With_Clause): Mark a with clause as
+       Ghost when it withs a Ghost unit.
+
+2017-01-20  Javier Miranda  <miranda@adacore.com>
+
+       * sem_res.adb (Resolve_Call): If a function call
+       returns a limited view of a type and at the point of the call the
+       function is not declared in the extended main unit then replace
+       it with the non-limited view, which must be available. If the
+       called function is in the extended main unit then no action is
+       needed since the back-end handles this case.
+
+2017-01-20  Eric Botcazou  <ebotcazou@adacore.com>
+
+       * sem_ch7.adb (Contains_Subp_Or_Const_Refs): Rename into...
+       (Contains_Subprograms_Refs): ...this.  Adjust comment
+       for constants.  (Is_Subp_Or_Const_Ref): Rename into...
+       (Is_Subprogram_Ref): ...this.
+       (Has_Referencer): Rename Has_Non_Subp_Const_Referencer variable into
+       Has_Non_Subprograms_Referencer and adjust comment.  Remove
+       incorrect shortcut for package declarations and bodies.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch3.adb (Complete_Private_Subtype): If the scope of the
+       base type differs from that of the completion and the private
+       subtype is an itype (created for a constraint on an access
+       type e.g.), set Delayed_Freeze on both to prevent out-of-scope
+       anomalies in gigi.
+
+2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_ch6.adb (Analyze_Subprogram_Body_Helper):
+       When inheriting the SPARK_Mode of a prior expression function,
+       look at the properly resolved entity rather than the initial
+       candidate which may denote a homonym.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_prag.adb (Rewrite_Assertion_Kind): If the name is
+       Precondition or Postcondition, and the context is pragma
+       Check_Policy, indicate that this Pre-Ada2012 usage is deprecated
+       and suggest the standard names Assertion_Policy /Pre /Post
+       instead.
+
+2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_ch10.adb, sem_cat.adb: Minor reformatting.
+
+2017-01-20  Javier Miranda  <miranda@adacore.com>
+
+       * sem_ch3.adb (Access_Type_Declaration): Protect access to the
+       Entity attribute.
+       * sem_ch10.adb (Install_Siblings): Skip processing malformed trees.
+       * sem_cat.adb (Validate_Categoriztion_Dependency): Skip processing
+       malformed trees.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch13.adb (Analyze_Aspect_Specification, case
+       Dynamic_Predicate): If the entity E is a subtype that inherits
+       a static predicate for its parent P,, the inherited and the
+       new predicate combine in the generated predicate function,
+       and E only has a dynamic predicate.
+
+2017-01-20  Tristan Gingold  <gingold@adacore.com>
+
+       * s-boustr.ads, s-boustr.adb: New package.
+       * Makefile.rtl: Add s-boustr.
+
+2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * inline.adb (Process_Formals): Qualify the
+       expression of a return statement when it yields a universal type.
+
+2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * freeze.adb (Freeze_All): Freeze the default
+       expressions of all eligible formal parameters that appear in
+       entries, entry families, and protected subprograms.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch3.adb (Check_Nonoverridable_Aspects); Refine check
+       for illegal inherited Implicit_Dereference aspects with renamed
+       discriminants.
+
+2017-01-20  Javier Miranda  <miranda@adacore.com>
+
+       * debug.adb (switch d.6): do not avoid declaring unreferenced itypes.
+       * nlists.ads (Lock_Lists, Unlock_Lists): New subprograms.
+       * nlists.adb (Lock_Lists, Unlock_Lists): New subprograms.
+       (Set_First, Set_Last, Set_List_Link, Set_Next, Set_Parent,
+       Set_Prev, Tree_Read): Adding assertion.
+       * atree.ads (Lock_Nodes, Unlock_Nodes): New subprograms.
+       * atree.adb (Lock_Nodes, Unlock_Nodes): New subprograms.
+       (Set_Analyzed, Set_Check_Actuals, Set_Comes_From_Source,
+       Set_Ekind, Set_Error_Posted, Set_Has_Aspects,
+       Set_Is_Ignored_Ghost_Node, Set_Original_Node, Set_Paren_Count,
+       Set_Parent, Set_Sloc, Set_Nkind, Set_FieldNN, Set_NodeNN,
+       Set_ListNN, Set_ElistNN, Set_NameN, Set_StrN, Set_UintNN,
+       Set_UrealNN, Set_FlagNNN, Set_NodeN_With_Parent,
+       Set_ListN_With_Parent): Adding assertion.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_prag.adb (Process_Convention): Diagnose properly a pragma
+       import that applies to several homograph subprograms. when one
+       of them is declared by a subprogram body.
+
+2017-01-20  Justin Squirek  <squirek@adacore.com>
+
+       * exp_ch6.adb (Expand_Call): Remove optimization
+       that nulls out calls to null procedures.
+
+2017-01-20  Yannick Moy  <moy@adacore.com>
+
+       * inline.adb (Expand_Inlined_Call): Keep more
+       precise type of actual for inlining whenever possible. In
+       particular, do not switch to the formal type in GNATprove mode in
+       some case where the GNAT backend might require it for visibility.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch3.adb (Check_Non_Overridable_Aspects): An inherited
+       aspect Implicit_Dereference can be inherited by a full view if
+       the partial view has no discriminants, because there is no way
+       to apply the aspect to the partial view.
+       (Build_Derived_Record_Type): If derived type renames discriminants
+       of the parent, the new discriminant inherits the aspect from
+       the old one.
+       * sem_ch4.adb (Analyze_Call): Handle properly a parameterless
+       call through an access discriminant designating a subprogram.
+       * sem_ch5.adb (Analyze_Assignment): (Analyze_Call): Handle
+       properly a parameterless call through an access discriminant on
+       the left-hand side of an assignment.
+       * sem_res.adb (resolve): If an interpreation involves a
+       discriminant with an implicit dereference and the expression is an
+       entity, resolution takes place later in the appropriate routine.
+       * sem_ch13.adb (Analyze_Aspect_Implicit_Dereference): Recognize
+       access discriminants that designate a subprogram type.
+
+2017-01-20  Pascal Obry  <obry@adacore.com>
+
+       * a-locale.adb, a-locale.ads: Update Ada.Locales for RM 2012 COR:1:2016
+
+2017-01-20  Yannick Moy  <moy@adacore.com>
+
+       * sem_ch10.adb (Check_No_Elab_Code_All): Do not issue an error
+       on implicitly with'ed units in GNATprove mode.
+       * sinfo.ads (Implicit_With): Document use of flag for implicitly
+       with'ed units in GNATprove mode.
+
+2017-01-20  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_cat.adb (Validate_Static_Object_Name): In a preelaborated
+       unit Do not report an error on a non-static entity that appears
+       in the context of a spec expression, such as an aspect expression.
+
+2017-01-20  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * einfo.adb: Flag298 now denotes Is_Underlying_Full_View.
+       (Is_Underlying_Full_View): New routine.
+       (Set_Is_Underlying_Full_View): New routine.
+       (Write_Entity_Flags): Add an entry for Is_Underlying_Full_View.
+       * einfo.ads Add new attribute Is_Underlying_Full_View.
+       (Is_Underlying_Full_View): New routine along with pragma Inline.
+       (Set_Is_Underlying_Full_View): New routine along with pragma Inline.
+       * exp_util.adb (Build_DIC_Procedure_Body): Do not consider
+       class-wide types and underlying full views. The first subtype
+       is used as the working type for all Itypes, not just array base types.
+       (Build_DIC_Procedure_Declaration): Do not consider
+       class-wide types and underlying full views. The first subtype
+       is used as the working type for all Itypes, not just array
+       base types.
+       * freeze.adb (Freeze_Entity): Inherit the freeze node of a full
+       view or an underlying full view without clobbering the attributes
+       of a previous freeze node.
+       (Inherit_Freeze_Node): New routine.
+       * sem_ch3.adb (Build_Derived_Private_Type): Mark an underlying
+       full view as such.
+       (Build_Underlying_Full_View): Mark an underlying full view as such.
+       * sem_ch7.adb (Install_Private_Declarations): Mark an underlying
+       full view as such.
+
+2017-01-20  Yannick Moy  <moy@adacore.com>
+
+       * sinfo.ads: Document lack of Do_Division_Check flag
+       on float exponentiation.
+
+2017-01-19  Javier Miranda  <miranda@adacore.com>
+
+       * ghost.adb (Propagate_Ignored_Ghost_Code): Protect access to the
+       identifier attribute of a block-statement node. Required to avoid
+       assertion failure when building the new containers library.
+
+2017-01-19  Bob Duff  <duff@adacore.com>
+
+       * exp_ch3.adb: Update comment.
+
+2017-01-19  Vincent Celier  <celier@adacore.com>
+
+       * gprep.adb (Gnatprep): Parse the definition file without
+       "replace in comments" even when switch -C is used.
+
+2017-01-19  Justin Squirek  <squirek@adacore.com>
+
+       * exp_ch9.adb (Is_Pure_Barrier): Create function
+       Is_Count_Attribute to identify an expansion of the 'Count
+       attribute.
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch5.adb (Analyze_Loop_Statement): In GNATprove mode the
+       statements within an element iterator loop are only analyzed
+       agter the loop is rewritten. Within a generic the analysis must
+       be performed in any case to complete name capture.
+
+2017-01-19  Bob Duff  <duff@adacore.com>
+
+       * sem_prag.adb (Analyze_Pragma): Check for ignored pragmas first,
+       before checking for unrecognized pragmas.
+       Initialize Pname on its declarations; that's always good style.
+
+2017-01-19  Claire Dross  <dross@adacore.com>
+
+       * exp_ch7.adb (Build_Invariant_Procedure_Body): Semi-insert the
+       body into the tree for GNATprove by setting its Parent field. The
+       components invariants of composite types are not checked by
+       the composite type's invariant procedure in GNATprove mode.
+       (Build_Invariant_Procedure_Declaration): Semi-insert the
+       declaration into the tree for GNATprove by setting its Parent
+       field.
+       * freeze.adb (Freeze_Arry_Type):In GNATprove mode, do not add
+       the component invariants to the array type  invariant procedure
+       so that the procedure can be used to  check the array type
+       invariants if any.
+       (Freeze_Record_Type): In GNATprove mode, do
+       not add the component invariants to the record type  invariant
+       procedure so that the procedure can be used to  check the record
+       type invariants if any.
+
+2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * lib-xref-spark_specific.adb: Minor reformatting.
+       * exp_ch7.adb (Add_Parent_Invariants): Do not process array types.
+
+2017-01-19  Javier Miranda  <miranda@adacore.com>
+
+       * exp_aggr.adb (Pass_Aggregate_To_Back_End): Renamed as
+       Build_Back_End_Aggregate.
+       (Generate_Aggregate_For_Derived_Type): Code cleanup.
+       (Prepend_Stored_Values): Code cleanup.
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch6.adb (Analyze_Expression_Function): Check for an
+       incomplete return type after attempting to freeze it, so that
+       other freeze actiona are generated in the proper order.
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_aggr.adb (Resolve_Aggregate): If the type is a string
+       type, ie. a type whose component is a character type, and the
+       aggregate is positional, do not convert into a string literal
+       if the index type is not an integer type, because the original
+       type may be required in an enclosing operation.
+
+2017-01-19  Bob Duff  <duff@adacore.com>
+
+       * binde.adb, debug.adb: Enable new elaboration order algorithm
+       by default. -dp switch reverts to the old algorithm.
+
+2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_ch3.adb Add with and use clauses for Exp_Ch7.
+       (Analyze_Declarations): Create the DIC and Invariant
+       procedure bodies s after all freezing has taken place.
+       (Build_Assertion_Bodies): New routine.
+       * sem_ch7.adb Remove the with and use clauses for Exp_Ch7
+       and Exp_Util.
+       (Analyze_Package_Specification): Remove the
+       generation of the DIC and Invariant procedure bodies. This is
+       now done by Analyze_Declarations.
+       * sem_disp.adb (Check_Dispatching_Operation): DIC and Invariant
+       procedures are never treated as primitives.
+
+2017-01-19  Yannick Moy  <moy@adacore.com>
+
+       * frontend.adb: Analyze inlined bodies and check elaboration
+       rules in GNATprove mode too.
+       * sem_elab.adb (Delay_Element): Add Boolean component to save
+       indication that call is in SPARK code.  (Check_Elab_Calls):
+       Check elaboration rules in GNATprove mode, and correctly set
+       the current value of SPARK_Mode.
+       * lib-xref-spark_specific.adb
+       (Add_SPARK_Xrefs): Simplify iteration over dereferences.
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * exp_ch4.adb (Expand_Concatenate): Do no enable overflow
+       checks on the expression for the high bound of concatenation
+       when checks are disabled, to suppress warnings about potential
+       constraint errors in restricted runtimes.
+
+2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * exp_ch3.adb (Expand_Freeze_Enumeration_Type): Mark the
+       representation-to-position function as inlined.
+       * sem_cat.adb (Set_Categorization_From_Scope): Do not modify
+       the purity of an internally generated entity if it has been
+       explicitly marked as pure for optimization purposes.
+       * exp_aggr.adb: Minor reformatting.
+
+2017-01-19  Javier Miranda  <miranda@adacore.com>
+
+       * exp_ch6.adb (Expand_Call): Remove side effects on
+       actuals that are allocators with qualified expression since the
+       initialization of the object is performed by means of individual
+       statements (and hence it must be done before the call).
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch3.adb (Analyze_Declarations): Minor reformatting.
+       (Build_Derived_Enumeration_Type): If the derived type inherits a
+       dynamic predicate from its parent, the bounds of the type must
+       freeze because an explicit constraint is constructed for the
+       type and the corresponding range is elaborated now.
+
+2017-01-19  Arnaud Charlet  <charlet@adacore.com>
+
+       * sem_attr.ads: minor fix of inconsistent casing in comment
+       * lib-writ.ads: minor align comments in columns
+       * sem_ch3.adb: Minor reformatting.
+       * spark_xrefs.ads: minor fix typo in SPARK-related comment
+       * table.ads: minor style fix in comment
+       * lib-xref-spark_specific.adb
+       (Add_SPARK_Xrefs): simplify processing of SPARK cross-references.
+       * sem_ch12.adb: minor whitespace fix
+       * freeze.adb: Add comment.
+       * sem_util.adb (Unique_Name): for instances of
+       generic subprograms ignore the name of the wrapper package.
+
+2017-01-19  Javier Miranda  <miranda@adacore.com>
+
+       * exp_aggr.adb (Resolve_Record_Aggregate):
+       Factorize code needed for aggregates of limited and unlimited
+       types in a new routine.
+       (Pass_Aggregate_To_Back_End): New subprogram.
+
+2017-01-19  Yannick Moy  <moy@adacore.com>
+
+       * sinfo.adb (Pragma_Name): Only access up to Last_Pair of Pragma_Map.
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch4.ads, sem_ch4.adb (Try_Object_Operation): Make subprogram
+       public, for use elsewhere.
+       * sem_ch6.adb (Analyze_Procedure_Call): In SPARK_Mode and within
+       an Inlined_body, recognize a call that uses object notation
+       and has not been rewritten as a regular call because regular
+       expansion has not taken place.
+
+2017-01-19  Bob Duff  <duff@adacore.com>
+
+       * checks.adb (Apply_Type_Conversion_Checks): Disable small optimization
+       in case of generic formal discrete types, because it causes crashes in
+       the compiler when built with assertions on.
+
+2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * lib-xref-spark_specific.adb, sem_util.adb, sem_util.ads,
+       sem_ch4.adb, sem_ch8.adb, lib-xref.ads: Minor reformatting.
+
+2017-01-19  Bob Duff  <duff@adacore.com>
+
+       * bcheck.adb (Check_Consistent_Dynamic_Elaboration_Checking):
+       Increment Warnings_Detected.  It was decrementing, which is
+       wrong since we just issued a warning message.
+       * binderr.ads (Errors_Detected, Warnings_Detected): Declare
+       these variables to be of subtype Nat instead of Int, because
+       they should never be negative.
+
+2017-01-19  Javier Miranda  <miranda@adacore.com>
+
+       * contracts.adb (Build_Postconditions_Procedure): Replace
+       Generate_C_Code by Modify_Tree_For_C.
+       * exp_aggr.adb (Build_Record_Aggr_Code, Expand_Array_Aggregate):
+       Replace Generate_C_Code by Modify_Tree_For_C.
+       * exp_attr.adb (Float_Valid, Is_GCC_Target): Replace Generate_C_Code by
+       Modify_Tree_For_C.
+       * exp_ch11.adb (Expand_N_Exception_Declaration): Replace
+       Generate_C_Code by Modify_Tree_For_C.
+       * exp_ch4.adb (Expand_Allocator_Expression): Replace
+       Generate_C_Code by Modify_Tree_For_C.
+       * exp_dbug.adb (Qualify_Entity_Name): Replace Generate_C_Code
+       by Modify_Tree_For_C.
+       * exp_util.adb (Remove_Side_Effects, Side_Effect_Free): Replace
+       Generate_C_Code by Modify_Tree_For_C.
+       * sem_res.adb (Resolve_Type_Conversion): Replace Generate_C_Code
+       by Modify_Tree_For_C.
+       * sinfo.ads (Modify_Tree_For_C): Adding documentation.
+
+2017-01-19  Javier Miranda  <miranda@adacore.com>
+
+       * sem_util.ads, sem_util.adb (Expression_Of_Expression_Function): New
+       subprogram.
+       (Is_Inlinable_Expression_Function): New subprogram.
+       * exp_ch6.ads, exp_ch6.adb (Expression_Of_Expression_Function): Moved
+       to Sem_Util.
+       (Is_Inlinable_Expression_Function): Moved to Sem_Util.
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch4.adb (Diagnose_Call): Improve error message when a
+       selected component has a prefix that might be interpreted
+       as a parameterless function call, but none of the candidate
+       interpretations is parameterless, and there is a hidden homonym
+       of the prefix that is a package.
+       * sem_ch8.adb (Find_Selected_Component): If the prefix might be
+       interpreted as a parameterless function call and its analysis
+       fails, do not call Analyze_Selected_Component.
+
+2017-01-19  Steve Baird  <baird@adacore.com>
+
+       * sem_util.ads: Add new Use_Full_View Boolean parameter to
+       Get_Index_Bounds.
+       * sem_util.adb (Get_Index_Bounds): replace calls to Scalar_Range with
+       calls to a newly-defined Scalar_Range_Of_Right_View function.
+
+2017-01-19  Arnaud Charlet  <charlet@adacore.com>
+
+       * gnat1drv.adb: minor fix of unbalanced parens in comment
+       * lib-xref.ads (Traverse_Compilation_Unit): declaration moved
+       to visible part of the package to allow re-use in GNATprove.
+       * lib-xref-spark_specific.adb (Traverse_Stub): routine refactored
+       from repeated code of Traverse_Compilation_Unit.
+       (Traverse_Declaration_Or_Statement): fixed detection of
+       generic subprograms and packages; also, iteration over case
+       statement alternatives rewritten to avoid testing if the first
+       alternative is present (since it must be present due to Ada
+       syntax restrictions).
+
+2017-01-19  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * exp_ch6.adb (Expand_N_Subprogram_Body): Mark the spec as
+       returning by reference not just for subprogram body stubs,
+       but for all subprogram cases.
+       * sem_util.adb: Code reformatting.
+       (Requires_Transient_Scope): Update the call to Results_Differ.
+       (Results_Differ): Update the parameter profile and the associated
+       comment on usage.
+
+2017-01-19  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_dim.adb (Analyze_Dimension): Analyze object declaration and
+       identifier nodes that do not come from source, to handle properly
+       dimensionality check within an inlined body which inclddes both
+       original operands and rewritten operands. This removes spurious
+       dimensionality errors in the presence of front-end inlining,
+       as well as in SPARK mode.
+
+2017-01-16  Jakub Jelinek  <jakub@redhat.com>
+
+       PR driver/49726
+       * gcc-interface/lang.opt (gant, gnatO, gnat): Add Driver flag.
+
+2017-01-13  Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
+
+       * gcc-interface/Makefile.in (SPARC/Solaris): Fix typo.
+
+2017-01-13  Arnaud Charlet  <charlet@adacore.com>
+
+       * doc/gnat_ugn/getting_started_with_gnat.rst,
+       doc/gnat_ugn/inline_assembler.rst,
+       doc/gnat_ugn/building_executable_programs_with_gnat.rst,
+       doc/gnat_ugn/elaboration_order_handling_in_gnat.rst,
+       doc/gnat_ugn/about_this_guide.rst,
+       doc/gnat_ugn/platform_specific_information.rst,
+       doc/gnat_ugn/example_of_binder_output.rst,
+       doc/gnat_ugn/gnat_and_program_execution.rst,
+       doc/gnat_ugn/gnat_utility_programs.rst,
+       doc/gnat_ugn/the_gnat_compilation_model.rst,
+       doc/gnat_rm/implementation_defined_attributes.rst,
+       doc/gnat_rm/compatibility_and_porting_guide.rst,
+       doc/gnat_rm/standard_library_routines.rst,
+       doc/gnat_rm/standard_and_implementation_defined_restrictions.rst,
+       doc/gnat_rm/implementation_defined_pragmas.rst,
+       doc/gnat_rm/the_gnat_library.rst,
+       doc/gnat_rm/obsolescent_features.rst,
+       doc/gnat_rm/about_this_guide.rst,
+       doc/gnat_rm/the_implementation_of_standard_i_o.rst,
+       doc/gnat_rm/implementation_of_ada_2012_features.rst,
+       doc/gnat_rm/interfacing_to_other_languages.rst,
+       doc/gnat_rm/implementation_defined_aspects.rst,
+       doc/gnat_rm.rst: Update documentation.
+       * gnat_rm.texi, gnat_ugn.texi: Regenerated.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * einfo.ads: minor grammar fixes in comment of Normalized_Position_Max.
+       * scil_ll.adb: Minor style fix in comment.
+       * sem_ch8.adb (Analyze_Expanded_Name): Perform dimension analysis
+       even if entity is already set, because the node may be renalyzed
+       after inlining transformations.
+
+2017-01-13  Javier Miranda  <miranda@adacore.com>
+
+       * sem_res.adb (Resolve_Call): Do not establish a transient scope
+       for a call to inlinable expression function (since the call will
+       be replaced by its returned object).
+       * exp_ch6.ads (Is_Inlinable_Expression_Function): New subprogram.
+       * exp_ch6.adb (Expression_Of_Expression_Function): New subprogram.
+       (Expand_Call): For inlinable expression function call replace the
+       call by its returned object.
+       (Is_Inlinable_Expression_Function): New subprogram.
+
+2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+
+       * checks.adb: Minor typo fix and reformatting.
+
+2017-01-13  Javier Miranda  <miranda@adacore.com>
+
+       * contracts.adb (Contract_Only_Subprograms): Remove formal.
+       (Copy_Original_Specification): Removed.
+       (Skip_Contract_Only_Subprogram): Move here checks previously
+       located in the caller of this routine (to leave the code more clean).
+       (Build_Contract_Only_Subprogram): Code cleanup.
+       * scil_ll.ads, scil_ll.adb (Get_Contract_Only_Body_Name): Removed.
+       (Get_Contract_Only_Missing_Body_Name): Removed.
+
+2017-01-13  Javier Miranda  <miranda@adacore.com>
+
+       * sem_ch6.adb (Cloned_Expression): New subprogram.
+       (Freeze_Expr_Types): Complete previous patch since the expression
+       of an expression-function may have iterators and loops with
+       defining identifiers which, as part of the preanalysis of the
+       expression, may be left decorated with itypes that will not be
+       available in the tree passed to the backend.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * checks.adb (Apply_Type_Conversion_Checks): Optimize a type
+       conversion to Integer of an expression that is an attribute
+       reference 'Pos on an enumeration type.
+
+2017-01-13  Bob Duff  <duff@adacore.com>
+
+       * atree.ads: Minor comment fix.
+
+2017-01-13  Justin Squirek  <squirek@adacore.com>
+
+       * sem_ch6.adb (Check_Aggregate_Accessibility): Ignore function
+       calls in accessibility check on return statement.
+
+2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_ch6.adb (Analyze_Subprogram_Body_Helper):
+       Ensure that the input body is a subprogram body before trying to
+       determine whether it denoted an expression function.  Note that
+       subprogram body stubs cannot denote expression functions.
+
+2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+
+       * bindgen.adb, sem_ch6.adb, binde.adb, exp_ch3.adb: Minor reformatting
+       and typo fixes.
+
+2017-01-13  Javier Miranda  <miranda@adacore.com>
+
+       * einfo.ads (Component_Bit_Offset): Fix documentation.
+       * sem_ch13.adb (Check_Record_Representation_Clause): Skip check
+       on record holes for components with unknown compile-time offsets.
+
+2017-01-13  Bob Duff  <duff@adacore.com>
+
+       * ali.ads, ali.adb (Static_Elaboration_Model_Used): Remove unused flag.
+       * g-locfil.ads: Minor comment fix.
+
+2017-01-13  Bob Duff  <duff@adacore.com>
+
+       * binde.adb (Elab_New): New elaboration order algorithm
+       that is expected to cause fewer ABE issues. This is a work in
+       progress. The new algorithm is currently disabled, and can be
+       enable by the -dp switch, or by modifying the Do_Old and Do_New
+       etc. flags and rebuilding. Experimental code is included to
+       compare the results of the old and new algorithms.
+       * binde.ads: Use GNAT.Dynamic_Tables instead of Table, so we
+       can have multiple of these tables, so the old and new algorithms
+       can coexist.
+       * bindgen.ads (Gen_Output_File): Pass Elab_Order as an 'in'
+       parameter of type array. This avoids the global variable, and
+       allows bounds checking (which is normally defeated by the tables
+       packages). It also ensures that the Elab_Order is read-only
+       to Bindgen.
+       * bindgen.adb: Pass Elab_Order as an 'in' parameter to all
+       subprograms that need it, as above.
+       * debug.adb: Document new -dp switch. Modify doc of old -do
+       switch.
+       * gnatbind.adb (Gnatbind): Make use of new interfaces to Binde
+       and Bindgen.  Move writing of closure (-R and -Ra switches)
+       to Binde; that's more convenient.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch6.adb (Analyze_Expression_Function): If the expression
+       function is a completion, all entities referenced in the
+       expression are frozen. As a consequence, a reference to an
+       uncompleted private type from an enclosing scope is illegal.
+
+2017-01-13  Javier Miranda  <miranda@adacore.com>
+
+       * sem_ch6.adb (Freeze_Expr_Types): New subprogram.
+       (Analyze_Subprogram_Body_Helper): At the occurrence of an
+       expression function declaration that is a completion, its
+       expression causes freezing (AI12-0103).
+
+2017-01-13  Vadim Godunko  <godunko@adacore.com>
+
+       * a-coinho-shared.adb: Fix memory leaks in Constant_Reference and
+       Reference functions of Ada.Containers.Indefinite_Holders.
+
+2017-01-13  Bob Duff  <duff@adacore.com>
+
+       * s-os_lib.ads: Minor comment fixes.
+
+2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * exp_ch3.adb (Default_Initialize_Object): Do not default
+       initialize an object when it is of a task type and restriction
+       No_Tasking is in effect because the initialization is obsolete.
+       * exp_ch9.adb (Build_Master_Entity): Do not generate a master when
+       restriction No_Tasking is in effect.
+       (Build_Master_Renaming): Do not rename a master when restriction
+       No_Tasking is in effect.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_aggr.adb (Resolve_Array_Aggregate): The code that verifies
+       the legality of An others clause applies as well to a choice in
+       an Iterated_component_ association.
+       (Resolve_Iterated_Component_Association): An others choice
+       is legal.
+       * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): An
+       Iterated_Component_Association is not static.
+
+2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * exp_ch3.adb (Freeze_Type): Mark the Ghost mode as set in case
+       control is passed to the expresion handler before the new mode
+       is set.
+       * sem_ch12.adb (Analyze_Package_Instantiation,
+       Analyze_Subprogram_Instantiation): Mark the Ghost mode as set
+       in case control is passed to the expresion handler before the
+       new mode is set.
+
+2017-01-13  Hristian Kirtchev  <kirtchev@adacore.com>
+
+       * sem_aggr.adb, sem_ch3.adb, inline.adb, sem_util.adb, exp_ch4.adb,
+       exp_aggr.adb: Minor reformatting.
+
+2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+
+       * inline.adb: Minor reformatting and typo fix.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_util.ads, sem_util.adb (Choice_List): Move function here
+       from sem_aggr.adb, for use elsewhere.
+       * sem_ch3.adb (Analyze_Object_Declaration): Use Choice_List.
+       * sem_aggr.adb (Resolve_Array_Aggregate): Remove
+       Iterated_Component_Present.
+       * exp_aggr.adb: Use Choice_List throughout, to handle
+       Iterated_Component_Associations.
+       (Gen_Loop): Generate proper loop for an
+       Iterated_Component_Association: loop variable has the identifier
+       of the original association. Generate a loop even for a single
+       component choice, in order to make loop parameter visible in
+       expression.
+       (Flatten): An Iterated_Component_Association is not static.
+
+2017-01-13  Yannick Moy  <moy@adacore.com>
+
+       * exp_ch4.adb (Expand_N_Op_Expon): Ensure that the value of
+       float exponentiation for statically known small negative values
+       is the reciprocal of the exponentiation for the opposite value
+       of the exponent.
+       * s-exnllf.adb (Exn_Float, Exn_Long_Float, Exn_Long_Long_Float):
+       Ensure that the value of float exponentiation for negative values
+       is the reciprocal of the exponentiation for the opposite value
+       of the exponent.
+       * inline.adb (Expand_Inlined_Call): Fix the count
+       for the number of generated gotos.
+
+2017-01-13  Yannick Moy  <moy@adacore.com>
+
+       * inline.adb: Code cleanup.
+       * sem_util.adb (Is_OK_Volatile_Context): Add
+       expression in delay statement as OK for volatile context.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_aggr.adb (Resolve_Array_Aggregate): In normal compilation
+       mode a choice that is a subtype with a static predicate is
+       replaced by the values it covers. This transformation must not
+       be performed in ASIS mode, to preserve the source for analysis.
+
+2017-01-13  Justin Squirek  <squirek@adacore.com>
+
+       * nlists.ads: Correct minor typo.
+
+2017-01-13  Gary Dismukes  <dismukes@adacore.com>
+
+       * sem_ch13.adb: Minor reformatting and typo fix.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * par-ch4.adb (P_Aggregate_Or_Parent_Expr): An
+       Iterated_Component_Association is a named association in an
+       array aggregate.
+       * sem_aggr.adb (Resolve_Iterated_Component_Association): New
+       procedure, subsidiary of Resolve_Array_Aggregate, to analyze
+       and resolve the discrete choices and the expression of the
+       new construct.
+       * sinfo.adb, sinfo.ads: In analogy with N_Component_Association,
+       Loop_Actions and Box_Present are attributes of
+       N_Iterated_Component_Association nodes. Box_Present is always
+       False in this case.
+       * sprint.adb (Sprint_Node): An Iterated_Component_Association
+       has a Discrete_Choices list, as specified in the RM. A
+       Component_Association for aggregate uses instead a Choices list.
+       We have to live with this small inconsistency because the new
+       construct also has a defining identifier, and there is no way
+       to merge the two node structures.
+
+2017-01-13  Yannick Moy  <moy@adacore.com>
+
+       * inline.adb (Remove_Aspects_And_Pragmas): Add Unused to the
+       list of pragmas to remove.  Remove pragmas from the list of
+       statements in the body to inline.
+       * namet.adb, namet.ads (Nam_In): New version with 12 parameters.
+
+2017-01-13  Ed Schonberg  <schonberg@adacore.com>
+
+       * sem_ch3.adb (Resolve_Aspects): New procedure, subsidiary of
+       Analyze_Declarations, to analyze and resolve the expressions of
+       aspect specifications in the current declarative list, so that
+       the expressions have proper entity and type info.  This is needed
+       for ASIS when there is no subsequent expansion to generate this
+       semantic information.
+       * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Use Etype of
+       original expression, to suppress cascaded errors when expression
+       has been constant-folded.
+       (Resolve_Aspect_Expressions, Resolve_Name): Preserve entities in
+       ASIS mode, because there is no subsequent expansion to decorate
+       the tree.
+
 2017-01-13  Yannick Moy  <moy@adacore.com>
 
        * inline.adb, inline.ads (Call_Can_Be_Inlined_In_GNATprove_Mode):