+2020-12-15 Pascal Obry <obry@adacore.com>
+
+ * libgnat/g-sercom__linux.adb (Set): Use cfsetospeed and
+ cfsetispeed to set the baud rate. Clear non-blocking serial port
+ status when blocking is requested.
+
+2020-12-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-valrea.adb (Integer_to_Real): Always use Extra.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch5.adb (P_Condition): Simplify condition for warning
+ about extra parens and make it easier to understand.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * errout.ads (Error_Msg_Ada_2005_Extension): New routine (spec).
+ * errout.adb (Error_Msg_Ada_2005_Extension): New routine (body).
+ * par-ch10.adb: Reuse new routine; correct casing for "LIMITED
+ WITH".
+ * par-ch11.adb: Likewise.
+ * par-ch12.adb: Likewise.
+ * par-ch3.adb: Likewise.
+ * par-ch4.adb: Likewise; replace "box" with "<>".
+ * par-ch6.adb: Likewise.
+ * par-ch9.adb: Likewise; correct casing for "THEN ABORT".
+
+2020-12-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * doc/gnat_ugn/gnat_and_program_execution.rst: Minor fix.
+ * gnat_ugn.texi: Regenerate.
+ * libgnat/s-valuer.ads (Precision_Limit): New formal parameter.
+ * libgnat/s-valuer.adb (Precision_Limit): Remove.
+ (Scan_Decimal_Digits): Robustify overflow check.
+ (Scan_Integral_Digits): Likewise.
+ * libgnat/s-valrea.adb: Add assertion on the size of the unsigned
+ type and instantiate System.Value_R with the mantissa limit.
+ (Integer_to_Real): Add Extra parameter and take it into account.
+ (Scan_Real): Pass Extra to Integer_to_Real.
+ (Value_Real): Likewise.
+ * libgnat/s-valued.adb: Add assertion on the size of the unsigned
+ type and instantiate System.Value_R with the mantissa limit.
+ * libgnat/s-valuef.adb: Likewise.
+
+2020-12-15 Justin Squirek <squirek@adacore.com>
+
+ * contracts.adb, contracts.ads (Build_Postconditions_Procedure):
+ Add declarations for Postcond_Enabled,
+ Result_Object_For_Postcondition, and
+ Return_Success_For_Postcond, and place all postconditions within
+ an if statement to control their execution for interactions when
+ cleanup actions get generated.
+ (Get_Postcond_Enabled): Created to fetch object declared to
+ handle new expansion of postconditions.
+ (Get_Result_Object_For_Postcond): Created to fetch object
+ declared to handle new expansion of postconditions.
+ (Get_Return_Success_For_Postcond): Created to fetch object
+ declared to handle new expansion of postconditions.
+ * einfo.adb, einfo.ads: Modify flag Stores_Attribute_Old_Prefix
+ to apply to constants, variables, and types.
+ * exp_ch6.adb (Add_Return): Add assignment to
+ Return_Success_For_Postcond.
+ (Expand_Non_Function_Return): Add assignment to
+ Return_Success_For_Postcond
+ (Expand_Simple_Function_Return): Add assignment to
+ Result_Object_For_Postcond and Return_Success_For_Postcond.
+ * exp_ch7.adb (Build_Finalization_Master): Mark finalization
+ masters which finalize types created store 'Old objects as
+ storing 'Old objects.
+ (Build_Finalizer): Created to generated a unified and special
+ expansion for finalization when postconditions are present.
+ (Build_Finalizer_Helper): Renamed Build_Finalizer and added
+ parameter to facilitate the creation of separate finalization
+ routines for 'Old objects and general objects.
+ (Create_Finalizer): Add condition for the insertion of the
+ finalizer spec to avoid malformed trees.
+ (Expand_Cleanup_Actions): Move _postconditions and related
+ declarations to the new declarative section. Fix the loop to
+ properly stop at the subprogram declaration for the
+ postconditions procedure and exclude its body from being moved
+ to the new list of declarations to avoid freezing issues.
+ * exp_prag.adb (Expand_Attributes): Mark temporary created to
+ store 'Old objects as storing a 'Old attribute.
+ * sem_ch6.adb (Find_What_Applies_To): Remove strange exception
+ to postconditions when traversing the scope stack.
+ * sem_prag.adb (Find_Related_Declaration_Or_Body): Use the newly
+ created Enclosing_HSS function to find the HSS for a potentially
+ nested statement.
+ * sem_util.adb, sem_util.ads (Declare_Indirect_Temp): Mark types
+ created to store 'Old objects as storing 'Old attributes.
+ (Enclosing_HSS): Created to find the enclosing handled sequence
+ of statements for a given statement.
+ * snames.ads-tmpl: Add multiple names to aid in the expansion of
+ finalization and to control the evaluation of postconditions.
+ Including _finalization_controller, a new routine to centralize
+ finalization actions and postcondition evaluation.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch5.adb (P_Loop_Parameter_Specification): Complain about
+ missing -gnat2020 switch.
+ (P_Iterator_Specification): Likewise.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * par-ch4.adb (P_Aggregate_Or_Paren_Expr): Simplify with
+ Append_New.
+
+2020-12-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Remove s-fatsfl$(objext)
+ and add s-valflt$(objext), s-vallfl$(objext), s-valllf$(objext).
+ * exp_attr.adb (Find_Fat_Info): Merge Short_Float and Float cases.
+ * exp_imgv.adb (Expand_Value_Attribute): Replace RE_Value_Real with
+ RE_Value_Long_Long_Float for fixed-point types and use appropriate
+ base type for floating-point types.
+ * rtsfind.ads (RTU_Id): Remove System_Fat_IEEE_Long_Float,
+ System_Fat_IEEE_Short_Float and System_Val_Real, add System_Val_Flt,
+ System_Val_LFlt and System_Val_LLF.
+ (RE_Id): Remove RE_Attr_IEEE_Long, RE_Fat_IEEE_Long,
+ RE_Attr_IEEE_Short, RE_Fat_IEEE_Short, RE_Attr_Short_Float, add
+ RE_Value_Float, RE_Value_Long_Float, RE_Value_Long_Long_Float,
+ (RE_Unit_Table): Likewise.
+ * libgnat/a-ticoau.ads: Add with clause for Float_Aux and make the
+ package generic.
+ (Get): Change parameter types to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-ticoau.adb: Remove clause and renaming for Float_Aux.
+ (Get): Change parameter types to Num.
+ (Gets): Likewise.
+ (Put): Likewise.
+ (Puts): Likewise. Add conversion to Long_Long_Float.
+ * libgnat/a-ticoio.adb: Remove with clause for Ada.Text_IO, add with
+ clause for Float_Aux, add with and use clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux and
+ Complex_Aux on Float, Long_Float, and Long_Long_Float.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package.
+ (Get): Call appropriate Gets routine from auxiliary package.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-tideau.adb: Remove with and use clause for Float_Aux.
+ * libgnat/a-tifiau.adb: Likewise.
+ * libgnat/a-tifiio.adb: Add with and use clause for System.Val_LLF.
+ Instantiate Float_Aux on Long_Long_Float.
+ (Get): Adjust call to Get routine from auxiliary package.
+ (Get): Adjust call to Gets routine from auxiliary package.
+ (Put): Adjust call to Put routine from auxiliary package.
+ (Put): Adjust call to Puts routine from auxiliary package.
+ * libgnat/a-tifiio__128.adb: Likewise.
+ (Get): Likewise.
+ (Get): Likewise.
+ (Put): Likewise.
+ (Put): Likewise.
+ * libgnat/a-tiflau.ads: Make the package generic.
+ (Get): Change parameter type to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-tiflau.adb: Remove clauses for System.Val_Real.
+ (Get): Change parameter type to Num and call Scan routine.
+ (Gets): Likewise.
+ (Load_Real): Move to...
+ (Put): Change parameter type and add conversion to Long_Long_Float.
+ (Puts): Likewise.
+ * libgnat/a-tiflio.adb: Add with and use clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ Long_Float and Long_Long_Float.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package.
+ (Get): Call previous variant.
+ (Get): Call appropriate Gets routine from auxiliary package.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call previous variant.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-tigeau.ads (Load_Real): New procedure.
+ * libgnat/a-tigeau.adb (Load_Real): ...here.
+ * libgnat/a-wtcoau.ads: Add with clause for Float_Aux and make the
+ package generic.
+ (Get): Change parameter types to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-wtcoau.adb: Remove clause and renaming for Float_Aux.
+ (Get): Change parameter types to Num.
+ (Gets): Likewise.
+ (Put): Likewise.
+ (Puts): Likewise. Add conversion to Long_Long_Float.
+ * libgnat/a-wtcoio.ads: Remove use clause for Complex_Types and use
+ qualified names throughout accordingly.
+ * libgnat/a-wtcoio.adb: Remove clause for Ada.Unchecked_Conversion,
+ add with clause for Float_Aux, add clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types.
+ Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and
+ Long_Long_Float. Remove LLF subtype and TFT instantiation.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package.
+ (Get): Call appropriate Gets routine from auxiliary package.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-wtdeau.adb: Remove with and use clause for Float_Aux.
+ * libgnat/a-wtfiau.adb: Likewise.
+ * libgnat/a-wtfiio.adb: Add with and use clause for System.Val_LLF.
+ Instantiate Float_Aux on Long_Long_Float.
+ (Get): Adjust call to Get routine from auxiliary package.
+ (Get): Adjust call to Gets routine from auxiliary package.
+ (Put): Adjust call to Put routine from auxiliary package.
+ (Put): Adjust call to Puts routine from auxiliary package.
+ * libgnat/a-wtfiio__128.adb: Likewise.
+ (Get): Likewise.
+ (Get): Likewise.
+ (Put): Likewise.
+ (Put): Likewise.
+ * libgnat/a-wtflau.ads: Make the package generic.
+ (Get): Change parameter type to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-wtflau.adb: Remove clauses for System.Val_Real.
+ (Get): Change parameter type to Num and call Scan routine. Set
+ Ptr parameter lazily.
+ (Gets): Likewise.
+ (Load_Real): Move to...
+ (Put): Change parameter type and add conversion to Long_Long_Float.
+ Bump buffer length to Max_Real_Image_Length.
+ (Puts): Likewise.
+ * libgnat/a-wtflio.adb: Add with and use clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ Long_Float and Long_Long_Float.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package. Add
+ pragma Unsuppress (Range_Check) and manual validity check.
+ (Get): Call appropriate Gets routine from auxiliary package. Add
+ pragma Unsuppress (Range_Check) and manual validity check.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-wtgeau.ads (Load_Real): New procedure.
+ * libgnat/a-wtgeau.adb (Load_Real): ...here.
+ * libgnat/a-ztcoau.ads: Add with clause for Float_Aux and make the
+ package generic.
+ (Get): Change parameter types to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-ztcoau.adb: Remove clause and renaming for Float_Aux.
+ (Get): Change parameter types to Num.
+ (Gets): Likewise.
+ (Put): Likewise.
+ (Puts): Likewise. Add conversion to Long_Long_Float.
+ * libgnat/a-ztcoio.ads: Remove use clause for Complex_Types and use
+ qualified names throughout accordingly.
+ * libgnat/a-ztcoio.adb: Remove clause for Ada.Unchecked_Conversion,
+ add with clause for Float_Aux, add clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Add clause for Complex_Types.
+ Instantiate Float_Aux and Complex_Aux on Float, Long_Float, and
+ Long_Long_Float. Remove LLF subtype and TFT instantiation.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package.
+ (Get): Call appropriate Gets routine from auxiliary package.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-ztdeau.adb: Remove with and use clause for Float_Aux.
+ * libgnat/a-ztfiau.adb: Likewise.
+ * libgnat/a-ztfiio.adb: Add with and use clause for System.Val_LLF.
+ Instantiate Float_Aux on Long_Long_Float.
+ (Get): Adjust call to Get routine from auxiliary package.
+ (Get): Adjust call to Gets routine from auxiliary package.
+ (Put): Adjust call to Put routine from auxiliary package.
+ (Put): Adjust call to Puts routine from auxiliary package.
+ * libgnat/a-ztfiio__128.adb: Likewise.
+ (Get): Likewise.
+ (Get): Likewise.
+ (Put): Likewise.
+ (Put): Likewise.
+ * libgnat/a-ztflau.ads: Make the package generic.
+ (Get): Change parameter type to Num.
+ (Put): Likewise.
+ (Gets): Likewise.
+ (Puts): Likewise.
+ * libgnat/a-ztflau.adb: Remove clauses for System.Val_Real.
+ (Get): Change parameter type to Num and call Scan routine. Set
+ Ptr parameter lazily.
+ (Gets): Likewise.
+ (Load_Real): Move to...
+ (Put): Change parameter type and add conversion to Long_Long_Float.
+ Bump buffer length to Max_Real_Image_Length.
+ (Puts): Likewise.
+ * libgnat/a-ztflio.adb: Add with and use clauses for System.Val_Flt,
+ System.Val_LFlt and System.Val_LLF. Instantiate Float_Aux on Float,
+ Long_Float and Long_Long_Float.
+ (OK_Float): New boolean constant.
+ (OK_Long_Float): Likewise.
+ (Get): Call appropriate Get routine from auxiliary package. Add
+ pragma Unsuppress (Range_Check) and manual validity check.
+ (Get): Call appropriate Gets routine from auxiliary package. Add
+ pragma Unsuppress (Range_Check) and manual validity check.
+ (Put): Call appropriate Put routine from auxiliary package.
+ (Put): Call appropriate Puts routine from auxiliary package.
+ * libgnat/a-ztgeau.ads (Load_Real): New procedure.
+ * libgnat/a-ztgeau.adb (Load_Real): ...here.
+ * libgnat/s-fatsfl.ads: Delete.
+ * libgnat/s-valflt.ads: New package.
+ * libgnat/s-vallfl.ads: Likewise.
+ * libgnat/s-valllf.ads: Likewise.
+ * libgnat/s-valrea.ads: Make generic. Add assertions, defensive
+ code and clarify intent.
+ (Scan_Real): Change parameter type to Num.
+ (Value_Real): Likewise.
+ * libgnat/s-valrea.adb: Instantiate Value_R on Uns.
+ (Integer_to_Real): Change parameter and result to Num.
+ Call Float_Control.Reset only if the mantissa is 64 bits. Use
+ a divide to compute the final value if the scale is negative.
+ (Scan_Real): Change result to Num.
+ (Value_Real): Likewise.
+ * libgnat/s-valuer.adb: Add assertions, defensive code and
+ clarify intent.
+ (F_Limit): Delete.
+ (I_Limit): Likewise.
+ (Precision_Limit): Always use the integer limit.
+ * libgnat/s-fatgen.adb: Add pragma Annotate.
+
+2020-12-15 Yannick Moy <moy@adacore.com>
+
+ * libgnat/a-tiflio.adb: Mark body not in SPARK.
+ * libgnat/a-tiflio.ads: Mark spec in SPARK.
+
+2020-12-15 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch6.adb (Build_Procedure_Body_Form): Adjust, the
+ declaration of the procedure form is now insert before the
+ original function body rather than after.
+ (Expand_N_Subprogram_Declaration): Deal with private types whose
+ full views are arrays.
+ * exp_unst.adb (Unnest_Subprogram): Deal with private types.
+ (Needs_Fat_Pointer): Code cleanup.
+ * freeze.adb (Freeze_Subprogram): Ditto.
+ * exp_util.adb (Build_Procedure_Form): Insert the procedure form
+ decl before and not after.
+ * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Build missing
+ spec when needed for Transform_Function_Array.
+ * sem_util.adb (Get_Fullest_View): Deal with null entity.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Specifications): Simplify code
+ for aspect Priority.
+ * sem_prag.adb (Analyze_Pragma): Simplify code for pragma
+ Priority.
+
+2020-12-15 Arnaud Charlet <charlet@adacore.com>
+
+ * exp_ch7.adb (Reset_Scopes_To_Block_Elab_Proc): Do not crash on
+ a block with no Identifier. Code cleanups.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Reuse existing code for
+ attribute Value when analyzing attributes Wide_Value and
+ Wide_Wide_Value.
+
+2020-12-15 Pascal Obry <obry@adacore.com>
+
+ * libgnat/g-diopit.adb (Find): Fix possible infinite recursion
+ in Find iterator.
+ * libgnat/g-diopit.ads (Find): Update comments accordingly.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Callable and Terminated attributes; refactor calls to Set_Etype
+ occurring in both THEN and ELSE branches of an IF statement for
+ attribute Storage_Size.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Wide_Wide_Width, Wide_Width and Width attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Pred and Succ attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Size, Object_Size and Value_Size attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Consistently call
+ Check_Fixed_Point_Type before checking the number of attribute
+ expressions (like it is done for floating point types); reuse
+ Check_Fixed_Point_Type_0.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_disp.adb (Make_Tags): Remove call to UI_To_Int.
+ * sem_attr.adb (Check_Array_Type): Likewise; also, refine type
+ of a local variable.
+ (Analyze_Attribute): Likewise.
+ (Get_Enclosing_Object): Likewise.
+ * sem_util.adb (Get_Enum_Lit_From_Pos): Likewise.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ First_Bit/Last_Bit and Position attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Machine_Radix and Mantissa attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Machine_Overflows and Machine_Rounds attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Large, Small, Safe_Large and Safe_Small attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Epsilon, Model_Epsilon, Model_Small, Safe_First and Safe_Las
+ attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Emax, Machine_Emax, Machine_Emin, Machine_Mantissa, Model_Emin,
+ Model_Mantissa and Safe_Emax attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Denorm and Signed_Zeros attributes.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Adjacent, Copy_Sign and Remainder attributes.
+ (Check_Floating_Point_Type_2): Fix style in comment.
+
+2020-12-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): Merge identical code for
+ Compose, Leading_Part and Scaling attributes.
+
2020-12-14 Piotr Trojanek <trojanek@adacore.com>
* sem_attr.adb (Analyze_Attribute): Resolve second parameter of