From 848830dcf75bf887e7ff59a50a0be1463b7a8570 Mon Sep 17 00:00:00 2001 From: Pierre-Marie de Rodat Date: Fri, 11 Oct 2019 07:56:41 +0000 Subject: [PATCH] [Ada] Repair ChangeLog entries My scripts and I unexpectedly erased gcc/ada/ChangeLog yesterday. This commit restores the ChangeLog file to its previous state and adds the entries for my commits yesterday. From-SVN: r276861 --- gcc/ada/ChangeLog | 5660 ++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 5659 insertions(+), 1 deletion(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 4b829cf649e..da7858b6cdf 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -9,4 +9,5662 @@ subprograms, such as to loop parameters. (Unnest_Loop): New procedure that takes a loop statement and creates a new procedure body to enclose the loop statement, - along with generating a call to the procedure. \ No newline at end of file + along with generating a call to the procedure. + +2019-10-10 Arnaud Charlet + + * freeze.adb (Freeze_Subprogram): Ensure constructor is a C++ + constructor. + +2019-10-10 Gary Dismukes + + * libgnat/a-ststio.ads (File_Type): Apply pragma + Preelaborable_Initialization to the type. + +2019-10-10 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not peek + under private types whose completion is SPARK_Mode Off. + +2019-10-10 Gary Dismukes + + * exp_ch4.adb, sem_cat.adb, sem_ch12.adb, sem_ch3.adb, + sem_ch6.adb, sem_prag.adb, sem_util.adb, sem_util.ads: Minor + typo fixes. + +2019-10-10 Ed Schonberg + + * sem_warn.adb (Warn_On_Useless_Assignment): Do not warn if the + second assignment is at the same source position as the first. + +2019-10-10 Gary Dismukes + + * sem_util.adb (Enclosing_Subprogram): Handle the case of + E_Entry_Family, returning the entry family's associated + Protected_Body_Subprogram (as was already done for E_Entry). + * exp_ch9.adb (Expand_N_Accept_Statement): Call Reset_Scopes_To + on the block created for an accept statement to reset the scopes + of any local entities to the block scope. + +2019-10-10 Ed Schonberg + + * sem_ch12.adb (Analyze_Formal_Package_Declaration): Propagate + an aspect specification for Abstract_State from generic package + to formal package, so that it is available when analyzing the + constructed formal. + +2019-10-10 Eric Botcazou + + * sem_ch6.adb (Set_Actual_Subtypes): Put the freeze node of the + actual subtype after its declaration when the type of the formal + has a predicate. + +2019-10-10 Eric Botcazou + + * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Do not use + the Esize of the component to compute its layout, but only the + Component_Clause. Do not issue a warning for the _Tag + component. Also set the Esize of the component at the end of + the layout. + (Analyze_Record_Representation_Clause): Remove Hbit local + variable. Lay out the Original_Record_Component only if it's + distinct from the component. + (Check_Record_Representation_Clause): Fix off-by-one bug for the + Last_Bit of the artificial clause built for the _Tag component. + +2019-10-10 Bob Duff + + * treepr.ads, treepr.adb (ppar): New procedure. + +2019-10-10 Bob Duff + + * sem_aggr.adb (Resolve_Aggregate): Add missing cases in the + Others_Allowed => True case -- N_Case_Expression_Alternative and + N_If_Expression. Use Nkind_In. + * atree.adb, atree.ads, sinfo.adb, sinfo.ads (Nkind_In): New + 16-parameter version. + +2019-10-10 Ed Schonberg + + * sem_aggr.adb (Resolve_Array_Aggregate): Set properly the + Predicated_Parent link of an itype created for an aggregate, so + that the predicate_function of the parent can support proofs on + the object that it initializes. + +2019-10-10 Eric Botcazou + + * sem_ch3.adb (Analyze_Number_Declaration): Set + Debug_Info_Needed in the case where the expression is an integer + literal. + +2019-10-10 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add subprograms + with deep parameter or result type as not candidates for + inlining. + +2019-10-10 Vadim Godunko + + * libgnat/g-exptty.ads (TTY_Process_Descriptor): Set default + value for Process. + +2019-10-10 Bob Duff + + * sem_prag.adb (Defer_Compile_Time_Warning_Error_To_BE): In + addition to saving the pragma for further processing, copy the + pragma into the main unit if necessary. + +2019-10-10 Bob Duff + + * einfo.ads, einfo.adb (Invariants_Ignored): New flag on types. + This leaves just one unused flag. + * sem_prag.adb (Invariant): Set the flag if appropriate. + * exp_util.adb (Make_Invariant_Call): Check the flag. + +2019-10-10 Arnaud Charlet + + * gnat1drv.adb (Gnat1drv): Skip code generation when handling an + incomplete unit with -gnatceg. + +2019-10-10 Gary Dismukes + + * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Various + cleanups. + (Set_Elab_Proc): New procedure to create the defining identifier + for a procedure created to encapsulate top-level blocks + occurring as a part of library package elaboration. + (First_Local_Scope): Function replaced by + Reset_Scopes_To_Elab_Proc. + (Reset_Scopes_To_Elab_Proc): New recursive procedure based on + First_Local_Scope, which it replaces, that is called to traverse + the statements of a library package body to locate top-level + blocks and determine whether they contain nested subprograms + that might address library-level objects of the package. Such + blocks (and loops) and certain top-level subprograms within the + statements will have their Scope reset here to match an + encapsulating procedure created by + Check_Unnesting_Elaboration_Code that will contain the + statements. + (Check_Unnesting_In_Decls_Or_Stmts): Code for handling blocks + factored out into Unnest_Block. Add handling for package + declarations and bodies, making recursive calls for + visible/private declarations, body declarations, statements, and + exception handlers. Also remove test for Is_Compilation_Unit: + caller tests for Is_Library_Level_Entity instead. Also, this + proc's name was changed from Check_Unnesting_In_Declarations. + (Check_Unnesting_In_Handlers): New procedure to traverse a + sequence of exception handlers, calling + Check_Unnesting_In_Decls_Or_Stmts on the statements of each + handler. + (Expand_N_Package_Body): Call Check_Unnesting_* routines only + when Unnest_Subprogram_Mode is set and the current scope is a + library-level entity (which includes packages and instantiations + nested directly within a library unit). + (Expand_N_Package_Declaration): Call Check_Unnesting_* routines + only when Unnest_Subprogram_Mode is set and the current scope is + a library-level entity (which includes packages and + instantiations nested directly within a library unit). + (Unnest_Block): New procedure factored out of + Check_Unnesting_In_Decls_Or_Stmts, for creating a new procedure + to replace a block statement and resetting the Scope fields of + the block's top-level entities. + +2019-10-10 Anthony Leonardo Gracio + + * doc/gnat_ugn/about_this_guide.rst, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + doc/gnat_ugn/getting_started_with_gnat.rst, + doc/gnat_ugn/gnat_and_program_execution.rst, errout.ads, + exp_ch3.adb, gnatls.adb, impunit.adb, lib-writ.ads, opt.ads, + sem_ch7.adb, sem_prag.adb, sem_res.adb, sem_warn.adb, + terminals.c: Replace GPS by GNAT Studio. + * gnat_ugn.texi: Regenerate. + +2019-10-10 Ed Schonberg + + * exp_ch6.adb (Expand_Simple_Function_Return_Statement): If the + function to which the return statement applies is an + Ignored_Ghost_Function, do not indicate that it uses the + secondary stack when the return type is unconstrained. + +2019-10-10 Bob Duff + + * libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb, + libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb, + libgnat/a-cborma.adb, libgnat/a-cborse.adb, + libgnat/a-cdlili.adb, libgnat/a-cidlli.adb, + libgnat/a-cihama.adb, libgnat/a-cihase.adb, + libgnat/a-cimutr.adb, libgnat/a-ciorma.adb, + libgnat/a-ciorse.adb, libgnat/a-cobove.adb, + libgnat/a-cohama.adb, libgnat/a-cohase.adb, + libgnat/a-coinve.adb, libgnat/a-comutr.adb, + libgnat/a-conhel.adb, libgnat/a-convec.adb, + libgnat/a-coorma.adb, libgnat/a-coorse.adb (Reference, + Constant_Reference): Use Busy instead of Lock, so we forbid + tampering with cursors, rather than tampering with elements. + +2019-10-10 Ed Schonberg + + * sem_cat.adb (Set_Categorization_From_Pragma): Do not modify + any visibility settings if there are no compilation_unit pragmas + following the package declaration. Add comments for future + cleanup. + +2019-10-10 Patrick Bernardi + + * bindgen.adb (System_Secondary_Stack_Package_In_Closure): + Renamed flag System_Secondary_Stack_Used to be clearer of what + it represents. + (Gen_Adainit): Refactor secondary stack related code to make it + clearer. + * rtsfind.adb (Load_RTU): Don't set Sec_Stack_Used flag here + (RTE): Set Sec_Stack_Used if the System.Secondary_Stack is + referenced, but not if we're ignoring ghost code. + +2019-10-10 Piotr Trojanek + + * sem_prag.adb (Analyze_Global_In_Decl_Part): Simplify previous + test, just like in a recent commit we simplified a similar test + for Depends contract. + +2019-10-04 Joseph Myers + + * gcc-interface/utils.c (flag_isoc2x): New variable. + +2019-10-01 Maciej W. Rozycki + + * gcc-interface/Makefile.in (ADA_RTL_DSO_DIR): New variable. + (install-gnatlib): Use it in place of ADA_RTL_OBJ_DIR for shared + library installation. + +2019-10-01 Maciej W. Rozycki + + * gcc-interface/Make-lang.in (ada.install-common): Split into... + (gnat-install-tools, gnat-install-lib): ... these. + +2019-09-26 Alexandre Oliva + + * gcc-interface/decl.c (components_to_record): Set + DECL_SIZE_UNIT for zero-sized fields. + +2019-09-26 Arnaud Charlet + + * osint.adb (OS_Time_To_GNAT_Time): Remove dependency on To_C/To_Ada + +2019-09-23 Rainer Orth + + * libgnarl/s-osinte__solaris.ads (sysconf): Declare. + (SC_NPROCESSORS_ONLN): Define. + * libgnarl/s-tasinf__solaris.ads (Number_Of_Processors): Declare. + * libgnarl/s-tasinf__solaris.adb (N_CPU): New variable. + (Number_Of_Processors): New function. + +2019-09-23 Eric Botcazou + + * gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop + if -Og is enabled. + (build_return_expr): Do not perform NRV if -Og is enabled. + (Subprogram_Body_to_gnu): Likewise. + (gnat_to_gnu) : Likewise. + (Handled_Sequence_Of_Statements_to_gnu): Do not inline finalizers if + -Og is enabled. + * gcc-interface/utils.c (convert_to_index_type): Return early if -Og + is enabled. + +2019-09-23 Eric Botcazou + + * gcc-interface/trans.c (gnat_compile_time_expr_list): New variable. + (Pragma_to_gnu): Rename local variable. Save the (first) expression + of pragma Compile_Time_{Error|Warning} for later processing. + (Compilation_Unit_to_gnu): Process the expressions saved above. + +2019-09-23 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep + on the underlying type of the node. + (Call_to_gnu): Likewise with the type of the prefix. + +2019-09-23 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Do not reorder fields + in packed record types if they contain fixed-size fields that cannot + be laid out in a packed manner. + +2019-09-19 Tom Tromey + + * gcc-interface/misc.c (gnat_get_type_bias): Return the bias + when -fgnat-encodings=gdb. + +2019-09-19 Steve Baird + + * sem_prag.adb (Preferred_String_Type): A new function. Given an + expression, determines whether the preference rules defined for + the third-and-later arguments of pragma Annotate suffice to + determine the type of the expression. If so, then the preferred + type is returned; if not then Empty is returned. Handles + concatenations. + (Analyze_Pragma): Replace previous code, which dealt only with + string literals, with calls to the new Preferred_String_Type + function, which also handles concatenations. + * doc/gnat_rm/implementation_defined_pragmas.rst: Update + documentation for pragma Annotate. + * gnat_rm.texi: Regenerate. + +2019-09-19 Eric Botcazou + + * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not return true + on pure alignment considerations if the target does not require + the strict alignment of memory accesses. + +2019-09-19 Eric Botcazou + + * sem_ch12.adb (Check_Private_View): Add a comment to indicate + future work. + +2019-09-19 Eric Botcazou + + * exp_aggr.adb (Has_Mutable_Components): Look at the underlying + type of components to find out whether they are mutable. + +2019-09-19 Eric Botcazou + + * sem_ch12.adb (Instantiate_Package_Body): Check that the body + has not already been instantiated when the body of the parent + was being loaded. + +2019-09-19 Eric Botcazou + + * sem_util.adb (In_Instance): Test whether the current unit has + been analyzed instead of being on the scope stack to detect the + case of actuals of an instantiation of a generic child unit done + as a compilation unit. + +2019-09-19 Dmitriy Anisimkov + + * libgnat/g-socket.ads, libgnat/g-socket.adb + (Create_Socket_Pair): New routine. + * libgnat/g-socthi.ads (OS_Has_Socketpair): Boolean constant. + (C_Socketpair): New imported routine. + * libgnat/g-socthi__mingw.ads, libgnat/g-socthi__vxworks.ads + (Default_Socket_Pair_Family): New constant. + (C_Socketpair): New routine. + * libgnat/g-socthi__mingw.adb, libgnat/g-socthi__vxworks.adb + (C_Socketpair): Is separated in anouther file. + * libgnat/g-sthcso.adb (C_Socketpair): Non UNIX implementation. + * libgnat/g-stsifd__sockets.adb: Reuse C_Socketpair. + +2019-09-19 Yannick Moy + + * sem_prag.adb (Analyze_Depends_In_Decl_Part): Simplify previous + test. + +2019-09-19 Ed Schonberg + + * sem_ch7.adb (Install_Parent_Private_Declarations): If a + generic child unit is instantiated within a sibling child unit, + the analysis of its private part requires that the private part + of the ancestor be available, as is done when the context + includes an instance of the ancestor. + +2019-09-19 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add special + case for traversal functions. + +2019-09-19 Yannick Moy + + * sem_prag.adb (Analyze_Global_In_Decl_Part): Do not issue an + error when a constant of an access type is used as output in a + Global contract. + (Analyze_Depends_In_Decl_Part): Do not issue an error when a + constant of an access type is used as output in a Depends + contract. + +2019-09-19 Arnaud Charlet + + * exp_attr.adb: Remove obsolete comment. + +2019-09-19 Eric Botcazou + + * sem_ch3.adb (Build_Derived_Access_Type): If this is an access- + to-subprogram type, copy Can_Use_Internal_Rep from the parent. + +2019-09-19 Yannick Moy + + * gcc-interface/Make-lang.in: Remove references to sem_spark. + * sem_spark.adb, sem_spark.ads: Remove unit. + +2019-09-19 Eric Botcazou + + * exp_attr.adb (Is_Inline_Floating_Point_Attribute): Treat + Machine_Rounding as an alias for Rounding. + * sem_res.adb (Simplify_Type_Conversion): Likewise. + +2019-09-19 Gary Dismukes + + * exp_unst.adb (Unnest_Subprogram): Bypass the transformation of + up-level references unless Opt.Generate_C_Code is enabled. + +2019-09-19 Eric Botcazou + + * exp_ch4.adb (Expand_Array_Equality): If optimization is + enabled, generate a simple conjunction of comparisons for the + specific case of constrained 1-dimensional 2-element arrays. + Fix formatting. + +2019-09-19 Piotr Trojanek + + * exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Remove. + (Append_Homonym_Number): Use Homonym_Number instead of + Get_Homonym_Number. + * exp_util.ads, exp_util.adb (Homonym_Number): Mirror style of + the removed Get_Homonym_Number routine, i.e. initialize local + objects at declaration and refine the type of result. + * sem_util.adb (Add_Homonym_Suffix): Use Homonym_Number instead + of Get_Homonym_Number. + +2019-09-19 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Simplify + handling of expressions in predicates when the context is a + generic unit. + +2019-09-19 Bob Duff + + * sem_attr.adb (Resolve_Attribute): Make sure the secondary + stack is properly managed in the case of a 'Range attribute in a + loop. + +2019-09-19 Raphael Amiard + + * libgnat/a-cfhase.ads (Set): Add comments to public primitives. + +2019-09-19 Raphael Amiard + + * libgnat/a-cbhama.ads, libgnat/a-cbhase.ads, + libgnat/a-chtgop.ads (Clear): Refine comments + +2019-09-19 Eric Botcazou + + * sem_ch12.adb (Restore_Private_Views): Comment out new code + that clear the Is_Generic_Actual_Type also on the full view. + +2019-09-19 Bob Duff + + * exp_ch3.adb (Rewrite_As_Renaming): Return False if there are + any aspect specifications, because otherwise Insert_Actions + blows up. + +2019-09-19 Eric Botcazou + + * exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Add + Bit_Packed_Array parameter and documet it. Always insert a copy + if it is set True. + (Expand_Actuals): Adjust the calls to + Add_Simple_Call_By_Copy_Code. + +2019-09-19 Bob Duff + + * xref_lib.adb (Get_Symbol_Name): If we reach EOF in the first + loop without finding the symbol, return "???". Otherwise, it's + an infinite loop. + (Parse_EOL): Assert that we're not already at EOF. Remove + processing of LF/CR -- there are no operating systems that use + that. + +2019-09-19 Eric Botcazou + + * exp_ch6.adb (Is_Legal_Copy): Also return false for an aliased + formal and a formal passed by reference in convention Ada. Add + missing guard to the existing test on Is_Valued_Procedure. + +2019-09-19 Bob Duff + + * rtsfind.ads (RTE_Available): Improve comment. + +2019-09-18 Bob Duff + + * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Move call + to RTE_Available later, so it doesn't disturb the elab order. + The RE_Copy_Bitfield entity is defined in package + System.Bitfields which has a dependency on package + System.Bitfield_Utils, which has it its spec: + pragma Elaborate_Body; + The query on RTE_Available forces loading and analyzing + System.Bitfields and all its withed units. + +2019-09-18 Eric Botcazou + + * checks.ads (Alignment_Warnings_Record): Add P component. + * checks.adb (Apply_Address_Clause_Check): Be prepared to kill + the warning also if the clause is of the form X'Address. + (Validate_Alignment_Check_Warning): Kill the warning if the + clause is of the form X'Address and the alignment of X is + compatible. + +2019-09-18 Ed Schonberg + + * sem_res.adb (Set_Mixed_Node_Expression): If a conditional + expression has universal_real alternaitves and the context is + Universal_Fixed, as when it is an operand in a fixed-point + multiplication or division, resolve the expression with a + visible fixed-point type, which must be unique. + +2019-09-18 Ed Schonberg + + * sem_ch3.adb (Constrain_Component_Type): For a discriminated + type, handle the case of a constraint given by a conversion of a + discriminant of the enclosing type. Necessary when compiling a + discriminated task for a restricted run-time, when the generated + Secondary_Stack component may be set by means of an aspect on + the task type. + +2019-09-18 Ed Schonberg + + * exp_aggr.adb (Expand_Record_Aggregate, Rewrite_Discriminant): + After rewriting a reference to an outer discriminant as a + selected component of the enclosing object, analyze the selected + component to ensure that the entity of the selector name is + properly set. This is necessary when the aggregate appears + within an expression that may have been analyzed already. + +2019-09-18 Justin Squirek + + * sem_ch8.adb (Use_One_Type): Add guard to prevent warning on a + reundant use package clause where there is no previous + use_clause in the chain. + +2019-09-18 Justin Squirek + + * exp_ch4.adb (Expand_N_Type_Conversion): Add calculation of an + alternative operand for the purposes of generating accessibility + checks. + +2019-09-18 Eric Botcazou + + * exp_aggr.adb (Build_Array_Aggr_Code): In STEP 1 (c), duplicate + the expression and reset the Loop_Actions for each loop + generated for an others choice. + +2019-09-18 Justin Squirek + + * einfo.adb, einfo.ads (Minimum_Accessibility): Added new field. + (Set_Minimum_Accessibility): Added to set new field. + (Minimum_Accessibility): Added to fetch new field. + * exp_ch6.adb (Expand_Subprogram_Call): Modify calls to fetch + accessibility levels to the new subprogram Get_Accessibility + which handles cases where minimum accessibility might be needed. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Add section to + generate a Minimum_Accessibility object within relevant + subprograms. + * sem_util.adb, sem_util.ads (Dynamic_Accessibility_Level): + Additional documentation added and modify section to use new + function Get_Accessibility. + (Get_Accessibility): Added to centralize processing of + accessibility levels. + +2019-09-18 Steve Baird + + * sem_util.ads (Interval_Lists): A new visible package. This + package is visible because it is also intended for eventual use + in Sem_Eval.Subtypes_Statically_Compatible when that function is + someday upgraded to handle static predicates correctly. This + new package doesn't really need to be visible for now, but it + still seems like a good idea. + * sem_util.adb (Gather_Components): Implement AI12-0086 via the + following strategy. The existing code knows how to take a static + discriminant value and identify the corresponding variant; in + the newly-permitted case of a non-static value of a static + subtype, we arbitrarily select a value of the subtype and find + the corresponding variant using the existing code. Subsequently, + we check that every other value of the discriminant's subtype + corresponds to the same variant; this is done using the newly + introduced Interval_Lists package. + (Interval_Lists): Provide a body for the new package. + +2019-09-18 Javier Miranda + + * exp_ch4.adb (Expand_N_Op_Eq): The frontend assumes that we can + do a bit-for-bit comparison of two access to protected + subprogram pointers. However, there are two reasons why we may + not be able to do that: (1) there may be padding bits for + alignment before the access to subprogram, and (2) the access to + subprogram itself may not be compared bit-for- bit because the + activation record part is undefined: two pointers are equal iff + the subprogram addresses are equal. This patch fixes it by + forcing a field-by-field comparison. + * bindgen.adb (Gen_Adainit): The type No_Param_Proc is defined + in the library as having Favor_Top_Level, but when we create an + object of that type in the binder file we don't have that + pragma, so the types are different. This patch fixes this issue. + * libgnarl/s-interr.adb, libgnarl/s-interr__hwint.adb, + libgnarl/s-interr__sigaction.adb, libgnarl/s-interr__vxworks.adb + (Is_Registered): This routine erroneously assumes that the + access to protected subprogram is two addresses. We need to + create the same record that the compiler makes to ensure that + any padding is the same. Then we have to look at just the first + word of the access to subprogram. This patch fixes this issue. + +2019-09-18 Bob Duff + + * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): The call + to Copy_Bitfield is now enabled. + (Expand_Assign_Array_Bitfield): Multiply 'Length times + 'Component_Size "by hand" instead of using 'Size. + +2019-09-18 Vasiliy Fofanov + + * doc/gnat_rm/implementation_defined_pragmas.rst: Fix minor + formatting issue. + +2019-09-18 Javier Miranda + + * exp_disp.adb (Make_DT, Make_Secondary_DT): Remove generation + of alignment representation clause for the following tables: + Predef_Prims, Iface_DT, TSD, ITable, DT. + +2019-09-18 Steve Baird + + * sem_eval.adb (Expr_Value): Do not fail "the type of a null + literal must be an access type" assertion if errors have already + been posted on the given node. + +2019-09-18 Piotr Trojanek + + * exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Refine type + from Nat to Pos. + * sem_util.adb (Add_Homonym_Suffix): Refine type of a local + variable. + +2019-09-18 Yannick Moy + + * exp_dbug.adb (Append_Homonym_Number): Use new function + Get_Homonym_Number. + (Get_Homonym_Number): New function to return the homonym number. + (Qualify_Entity_Name): Remove special case for GNATprove. + * exp_dbug.ads (Get_Homonym_Number): Make the new function + public for use in GNATprove. + * frontend.adb (Frontend): Do not qualify names in GNATprove + mode. + * sem_util.adb (Unique_Name): Append homonym suffix where needed + for entities which have local homonyms in the same scope. + +2019-09-18 Nicolas Roche + + * libgnat/s-valrea.adb (Scan_Integral_Digits): New procedure. + (Scan_Decimal_Digits): New procedure. + (As_Digit): New function. + (Scan_Real): Use Scan_Integral_Digits and Scan_Decimal_Digits. + +2019-09-18 Claire Dross + + * exp_attr.adb (Expand_N_Attribute_Reference): Call routine from + Exp_Util to know the value of the Constrained attribute in the + static case. + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Make + implicit dereferences inside the Constrained attribute explicit. + * exp_util.ads, exp_util.adb + (Attribute_Constrained_Static_Value): New routine to compute the + value of a statically known reference to the Constrained + attribute. + +2019-09-18 Vadim Godunko + + * libgnat/g-expect.adb (Expect_Internal): Don't include invalid + file descriptors into the set of file descriptors for Poll. + Raise Process_Died exception when computed set of file + descriptors to monitor is empty. + +2019-09-18 Frederic Konrad + + * adaint.c: Include dosFsLib.h and vwModNum.h for VxWorks 6. + (__gnat_rename): Map S_dosFsLib_FILE_NOT_FOUND to ENOENT. + +2019-09-18 Steve Baird + + * freeze.adb (Freeze_Object_Declaration): Do not call + Check_Large_Modular_Array when the object declaration being + frozen is an ignored ghost entity. + +2019-09-18 Tom Tromey + + * make.adb (Initialize): Fix typo. + +2019-09-18 Olivier Hainque + + * libgnat/s-win32.ads (DWORD_PTR): New type, pointer size + unsigned int. + (SYSTEM_INFO): Use it for dwActiveProcessorMask. + +2019-09-18 Arnaud Charlet + + * doc/gnat_rm/implementation_defined_pragmas.rst: Improve doc on + Warning_As_Error. + * gnat_rm.texi: Regenerate. + +2019-09-18 Arnaud Charlet + + * doc/gnat_rm/implementation_defined_characteristics.rst, + doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_rm/implementation_of_specific_ada_features.rst: Remove + remaining references to VMS support + * gnat_rm.texi: Regenerate. + +2019-09-18 Arnaud Charlet + + * libgnat/s-stausa.adb: Fix a typo + +2019-09-18 Bob Duff + + * libgnat/a-cbhama.adb, libgnat/a-cbhase.adb, + libgnat/a-cbmutr.adb, libgnat/a-cborma.adb, + libgnat/a-cborse.adb, libgnat/a-cobove.adb (Copy): Avoid reading + the uninitialized variable C in the Checks = False case. Change + variable to be a constant. + +2019-09-18 Claire Dross + + * libgnat/a-cofuma.adb (Remove, Elements_Equal_Except, + Keys_Included, Keys_Included_Except): Rename loop indexes and + global constants from I to J. + +2019-09-18 Arnaud Charlet + + * exp_unst.adb (Unnest_Subprograms): Refine previous change. + +2019-09-17 Claire Dross + + * libgnat/a-cofuma.ads, libgnat/a-cofuma.adb (Remove): New + function which returns a copy of the input container without a + given mapping. + +2019-09-17 Yannick Moy + + * libgnat/s-arit64.adb (Double_Divide): Correctly handle the + special case when rounding. + +2019-09-17 Javier Miranda + + * sem_ch3.adb (Complete_Private_Subtype): Propagate attributes + Has_Attributes and Predicate_Function to the cloned subtype. + +2019-09-17 Eric Botcazou + + * sem.adb (Do_Analyze): Save Style_Check_Max_Line_Length on + entry and restore it on exit instead of recomputing it. + +2019-09-17 Tom Tromey + + * exp_dbug.ads: Update character type comment. + +2019-09-17 Yannick Moy + + * libgnat/s-arit64.adb (Double_Divide): Simplify needlessly + complex computation. Fix comments. + (Scaled_Divide): Fix comments. Explain why implementation does + not suffer from bugs in Algorithm D from 2nd Edition of TAOCP. + +2019-09-17 Yannick Moy + + * libgnat/s-arit64.adb (Scaled_Divide): Add protection against + undesirable wrap-around. + +2019-09-17 Yannick Moy + + * libgnat/s-arit64.adb (Double_Divide): Fix two possible + overflows. + +2019-09-17 Dmitriy Anisimkov + + * make_util.ads (On_Windows): Move... + * osint.ads (On_Windows): There. + * osint.adb (OS_Time_To_GNAT_Time): If odd incremented on + Windows before conversion to Time_Stamp_Type. + +2019-09-17 Yannick Moy + + * sem_spark.adb (Check_Declaration): Do not check the assignment + from an illegal declaration. + +2019-09-17 Bob Duff + + * doc/gnat_ugn/gnat_and_program_execution.rst: Clarify + documentation. + * gnat_ugn.texi: Regenerate. + * libgnat/s-stausa.ads: Clarify comments. + +2019-09-17 Steve Baird + + * sem_util.adb (Wrong_Type): In deciding to suppress a message, + it is not enough for In_Instance to be True; in addition, + In_Generic_Actual (Expr) must be False. + * sem_type.adb (In_Generic_Actual): Fix bug where traversal of + parents skips every other node. + +2019-09-17 Claire Dross + + * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): If the + definition of a local borrower contains calls to traversal + functions, the borrowed expression is the first parameter of the + first traversal function call in the definition. + +2019-09-17 Ed Falis + + * doc/gnat_rm/implementation_defined_pragmas.rst: Remove + section. + * gnat_rm.texi, gnat_ugn.texi: Regenerate. + +2019-09-17 Vadim Godunko + + * libgnat/g-exptty.ads (Close_Input): New subprogram. + * libgnat/g-exptty.adb (Close_Input): New subprogram. + (Close): Move close of TTY to Close_Input. + * terminals.c (__gnat_close_tty): Set file descriptors to + invalid value after close. + +2019-09-17 Vadim Godunko + + * libgnat/g-expect.adb (Expect_Internal): Try to call 'poll' few + times. + +2019-09-17 Vadim Godunko + + * libgnat/g-expect.ads, libgnat/g-expect.adb (Close_Input): New + subprogram. + (Get_Command_Output): Call Close_Input to close input stream. + (Expect_Internal): Likewise. + (Close): Likewise. + * libgnat/g-exptty.adb (Close): Likewise. + +2019-09-17 Piotr Trojanek + + * sem_util.ads, sem_util.adb (Is_Attribute_Old): New utility + routine. + +2019-09-17 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add handling + for dispatching operations. + +2019-09-17 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In a + generic context, for a Predicate aspect, use + Preanalyze_Spec_Expression to verify conformance. + +2019-09-17 Javier Miranda + + * sem_ch3.adb (Constrain_Corresponding_Record): Propagate + attribute Is_Tagged_Type. + +2019-09-17 Javier Miranda + + * exp_ch3.adb (Build_Record_Init_Proc): Do not generate code to + adjust the tag component when the record is initialized with a + raise expression. + * sem_aggr.adb (Valid_Limited_Ancestor): Return True for + N_Raise_Expression nodes. + (Valid_Ancestor_Type): Return True for raise expressions. + * sem_ch3.adb (Analyze_Component_Declaration): Do not report an + error when a component is initialized with a raise expression. + * sem_ch4.adb (Analyze_Qualified_Expression): Do not report an + error when the aggregate has a raise expression. + +2019-09-17 Piotr Trojanek + + * ali.ads: Fix casing in comment. + * ali-util.ads, ali-util.adb (Read_Withed_ALIs): Remove + Ignore_Errors parameter; it was only set to non-default value of + True when running in GNATprove_Mode and wrongly reset to False + when calling this routine recursively. Now in GNATprove mode we + want it to be always True, so in fact it is equivalent to + GNATProve_Mode flag itself (which was already used in this + routine). + +2019-09-17 Arnaud Charlet + + * adaint.c (_REENTRANT, _THREAD_SAFE): Only define if needed. + +2019-09-17 Arnaud Charlet + + * libgnat/s-bitfie.ads (Val_Bits, Val_Bytes): Define from + Long_Long_Integer'Size. + +2019-09-17 Javier Miranda + + * exp_ch6.ads (Needs_BIP_Task_Actuals): New subprogram. + * exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): Code + cleanup. + (Check_Number_Of_Actuals): New subprogram. + (Make_Build_In_Place_Call_In_Allocator): Adding assertion. + (Make_Build_In_Place_Call_In_Anonymous_Context): Adding + assertion. + (Make_Build_In_Place_Call_In_Assignment): Adding assertion. + (Make_Build_In_Place_Call_In_Object_Declaration): Code cleanup + plus assertion addition. + (Needs_BIP_Task_Actuals): New subprogram. + * sem_ch6.adb (Create_Extra_Formals): Rely on + Needs_BIP_Task_Actuals() to check if the master of the tasks to + be created, and the caller's activation chain formals are + needed. + +2019-09-17 Bob Duff + + * libgnat/s-bituti.adb (Get_Val_2, Set_Val_2): Use new routines + for getting and setting a Val_2, avoiding touching the second + half when that half might not exist. + * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Correct + tests for potential volatile or independent components. In + particular, do not call Prefix unless we know it's a slice. + +2019-09-17 Dmitriy Anisimkov + + * gsocket.h: Include sys/un.h. + * s-oscons-tmplt.c (AF_UNIX): New constant generation. + (SIZEOF_sockaddr_un): Idem. + * libgnat/g-socket.ads (Family_Type): New value Family_Unix + added. + (Family_Inet_4_6): New subtype only for network families. + (Sock_Addr_Type): Add Unbounded_String field for Family_Unix + variant. + (Unix_Socket_Address): Create Sock_Addr_Type from socket + pathname. + (Network_Socket_Address): Create Sock_Addr_Type from + Inet_Addr_Type and Port_Type parameters. + * libgnat/g-socket.adb: Support local unix address in socket + routines. + (Get_Address_Info): Disable warning about Result may be + referenced before it has a value. Remove duplicated code to exit + from Look_For_Supported. + * libgnat/g-sothco.ads (Unix_Name_Length): New constant defining + maximum number of characters in local socket address path. + (Sockaddr): Add variant for Family_Unix address family. Move + Sin_Port and Sin_Family to Family_Inet section. Add Sin6_Port + and Sin6_Family to Family_Inet6 section. + (Set_Address): Add out parameter Length to return valuable + Sockaddr data length. + (Get_Address): Add input parameter Length to set valuable + Sockaddr data length. + * libgnat/g-sothco.adb: Support local unix address in socket + routines. + +2019-09-17 Eric Botcazou + + * exp_attr.adb (Expand_Size_Attribute): Chain the special cases + on the back-end path and rewrite the attribute appled to slices + of bit-packed arrays into the product of the Length and the + Compoent_Size attributes of the slices. + * exp_ch5.adb (Expand_Assign_Array_Bitfield): Use Size attribute + directly to compute the bitfield's size. + +2019-09-17 Bob Duff + + * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Add tests + for potential volatile or independent components. + * libgnat/s-bituti.adb (Copy_Small_Bitfield, + Copy_Large_Bitfield): Move declarations to more appropriate + place. + +2019-09-13 Maciej W. Rozycki + + * make.adb (Scan_Make_Arg): Also accept `--sysroot=' for the + compiler and the linker. + +2019-08-30 Eric Botcazou + + * gcc-interface/decl.c (maybe_saturate_size): New function. + (gnat_to_gnu_entity): Invoke it on the Esize of types before sending + it for back-annotations. + * gcc-interface/trans.c: Fix typo. + +2019-08-30 Eric Botcazou + + * gcc-interface/ada-tree.h (DECL_FORCED_BY_REF_P): New macro. + * gcc-interface/decl.c (gnat_to_gnu_param): Set it on parameters + whose mechanism was forced to by-reference. + * gcc-interface/trans.c (Call_to_gnu): Do not issue a warning about a + misaligned actual parameter if it is based on a CONSTRUCTOR. Remove + obsolete warning for users of Starlet. Issue a warning if a temporary + is make around the call for a parameter with DECL_FORCED_BY_REF_P set. + (addressable_p): Return true for REAL_CST and ADDR_EXPR. + +2019-08-30 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu): Do not set the location on an + expression used for a tag. + +2019-08-30 Eric Botcazou + + * gcc-interface/gigi.h (aggregate_type_contains_array_p): Declare. + * gcc-interface/decl.c (gnat_to_gnu_entity) : For an + extension, test Has_Record_Rep_Clause instead of Has_Specified_Layout. + (adjust_packed): Return 0 if the type of the field is an aggregate + type that contains (or is) a self-referential array. + (type_has_variable_size): Delete. + * gcc-interface/utils.c (inish_record_type): Constify a variable. + (aggregate_type_contains_array_p): Add parameter SELF_REFERENTIAL. + : Pass it in the recursive call. + : If it is true, return true only if the array type is + self-referential. + (create_field_decl): Streamline the setting of the alignment on the + field. Pass false to aggregate_type_contains_array_p. + +2019-08-30 Eric Botcazou + + * gcc-interface/trans.c (lvalue_required_p) : Adjust GNU_TYPE + in the recursive call. + : Likewise. + +2019-08-30 Eric Botcazou + + * gcc-interface/utils.c (build_template): Deal with parameters + passed by pointer to component of multi-dimensional arrays. + +2019-08-30 Eric Botcazou + + * gcc-interface/decl.c (annotate_value) : Inline the call + also if List_Representation_Info is greater than 3. + +2019-08-30 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu) : Add assertion. + +2019-08-30 Eric Botcazou + + * gcc-interface/gigi.h (gigi_checking_assert): New macro. + * gcc-interface/decl.c (gnat_to_gnu_entity) : + Remove redundant test and adjust comments. Minor tweaks. + * gcc-interface/trans.c (Call_to_gnu): Do not generate range checks, + instead assert that the Do_Range_Check flag is not set. Adjust call + to convert_with_check. + (gnat_to_gnu): Likewise. + (assoc_to_constructor): Likewise. + (pos_to_constructor): Likewise. Remove GNAT_COMPONENT_TYPE parameter. + (emit_range_check): Delete. + (convert_with_check): Remove RANGE_P parameter and adjust. Do a single + overflow check for modular types. + +2019-08-23 Jakub Jelinek + + PR middle-end/91283 + * gcc-interface/misc.c (gnat_post_options): Set flag_excess_precision + instead of flag_excess_precision_cmdline. + +2019-08-21 Vadim Godunko + + * libgnat/g-expect.adb (Expect_Internal): Attempt to read + several times when 'read' returns non-positive. + +2019-08-21 Piotr Trojanek + + * einfo.adb (Is_Discriminal): Remove extra parens. + (Is_Constant_Object): Simplify by reusing Ekind_In. + (Is_Prival): Remove extra parens. + * checks.adb, exp_ch4.adb, sem_ch3.adb, sem_spark.adb: Minor + reformattings. + +2019-08-21 Claire Dross + + * libgnat/a-cofove.ads (Vector): Add an Iterable aspect to allow + iteration. + (Iter_First, Iter_Next): Primitives used for iteration. + +2019-08-21 Yannick Moy + + * sem_ch3.adb (Analyze_Subtype_Declaration): Inherit RM_Size + field for formal type parameters in generic instantiations. + +2019-08-21 Yannick Moy + + * sem_spark.adb: Update references to the SPARK RM. + +2019-08-21 Eric Botcazou + + * repinfo.adb (List_Array_Info): In -gnatR4 mode, set the + relevant flag on the component type here instead of... + (List_Object_Info): Likewise for the object type. + (List_Entities): ...here. In -gnatR4 mode, recurse into + entities local to a record type. + (List_Component_Layout): In -gnatR4 mode, mark the type as + relevant. + +2019-08-21 Bob Duff + + * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and + s-biutin.o. + * exp_ch5.adb (Expand_Assign_Array_Bitfield): New function to + generate a call to Copy_Bitfield. This is disabled for now. + (Expand_Assign_Array_Loop_Or_Bitfield): New function to decide + whether to call Expand_Assign_Array_Bitfield. + (Expand_Assign_Array): Call Expand_Assign_Array_Loop_Or_Bitfield + instead of Expand_Assign_Array_Loop. + * libgnat/s-bitfie.ads, libgnat/s-bituti.adb, + libgnat/s-bituti.ads: New units. + * rtsfind.ads: Add enum literals for accessing Copy_Bitfield. + +2019-08-21 Piotr Trojanek + + * bindo-graphs.ads (Iterate_Edges_To_Successors): Fix typo in + pragma Inline. + * bindo-graphs.adb (Delete_Edge): Fix layout in parameter list. + +2019-08-21 Gary Dismukes + + * exp_ch3.adb (Build_Master): Suppress call to + Build_Class_Wide_Master in the case where the + access-to-limited-class-wide type was created for a component in + an entry's formal parameter + block (Is_Parameter_Block_Component_Type), to prevent a master + from being created for such access types generated by the front + end in a task spec for entry formals in a parameter block. Add + a ??? about whether this suppression should be done more + generally (such as by using Comes_From_Source). + +2019-08-21 Eric Botcazou + + * exp_ch6.adb (Expand_N_Extended_Return_Statement): In the case + of a built-in-place function that doesn't need a BIP_Alloc_Form + parameter but returns unconstrained, build the return + consistently using the function's result subtype. Remove bypass + added in previous change. + +2019-08-21 Piotr Trojanek + + * sem_prag.adb (Max_Entry_Queue_Length): Do not substitute + expression of the pragma argument with its value during + analysis. + * sem_util.adb (Get_Max_Queue_Length): Compute value of the + pragma argument when needed. + +2019-08-21 Yannick Moy + + * checks.adb (Install_Null_Excluding_Check): Do not install + check in GNATprove mode. + +2019-08-21 Yannick Moy + + * sem_spark.adb (Process_Path): Do nothing on address of + subprogram. + +2019-08-21 Eric Botcazou + + * exp_util.adb (Finalize_Address): Deal consistently with + subtypes of private protected types. + +2019-08-21 Piotr Trojanek + + * exp_util.adb (Corresponding_Runtime_Package): Use high-level + Is_Protected_Type. + * sem_ch8.adb (Analyze_Renamed_Entry): Likewise. + * sem_ch9.adb (Analyze_Requeue): Likewise. + +2019-08-21 Javier Miranda + + * sem_util.adb (Update_Named_Associations): Update + First_Named_Actual when the subprogram call has a single named + actual. + +2019-08-21 Joel Brobecker + + * doc/Makefile (mk_empty_dirs): New (PHONY) rule. + (%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on + mk_empty_dirs. + +2019-08-21 Justin Squirek + + * doc/gnat_rm/implementation_defined_pragmas.rst: Modify + documentation to reflect expected behavior. + * gnat_rm.texi: Regenerate. + * sem_prag.adb (Analyze_Pragma): Modify handling of pragma + Max_Entry_Queue_Length to not reject integer values of negative + one. + * sem_util.adb (Get_Max_Queue_Length): Add processing for values + of negative one to fit within the current scheme. + +2019-08-20 Arnaud Charlet + + * exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take + inlining (-gnatn) into account. + +2019-08-20 Ed Schonberg + + * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case + Storage_Size): If the expression for Storage_Size is not static + it may depend on characterstics of another type that may bot be + frozen yet, so the elaboration of the expression for the aspect + must be attached directly to the freeze actions of the type to + which it applies. + +2019-08-20 Piotr Trojanek + + * exp_util.adb (Build_DIC_Procedure_Declaration): Set the last + entity of the generated Default_Initial_Condition procedure in + order to construct a proper entity chain. + +2019-08-20 Yannick Moy + + * exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component): + Renaming of function to apply to slices as well. + (Expand_SPARK): Expand prefix of slices of access type. + +2019-08-20 Bob Duff + + * exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in + the nonlimited case in STEP 4. This improves the efficiency of + things like (1 .. 1000 => <>). We still generate some code for + that, unfortunately, but it is much improved. + (Aggr_Assignment_OK_For_Backend): Return false if <> components + are present. + +2019-08-20 Bob Duff + + * exp_ch6.adb (Needs_BIP_Alloc_Form): Call + Requires_Transient_Scope rather than checking constrainedness + and so forth. We have previously improved + Requires_Transient_Scope to return False in various cases, + notably a limited record with an access discriminant. This + change takes advantage of that to avoid using the secondary + stack for functions returning such types. + (Make_Build_In_Place_Call_In_Allocator): Be consistent by + calling Needs_BIP_Alloc_Form rather than Is_Constrained and so + forth. + * sem_ch4.adb (Analyze_Allocator): The above change causes the + compiler to generate code that is not legal Ada, in particular + an uninitialized allocator for indefinite subtype. This is + harmless, so we suppress the error message in this case. + +2019-08-20 Gary Dismukes + + * ali.adb, ali.ads, aspects.adb, checks.ads, checks.adb, + doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.ads, exp_ch4.adb, + exp_disp.adb, inline.adb, libgnat/a-locale.ads, + libgnat/s-soflin.ads, par_sco.adb, repinfo.adb, sem_ch5.adb, + sem_disp.adb, sem_elab.adb, sem_eval.adb, sem_spark.adb, + sem_spark.ads, sinfo.ads: Minor reformattings, typo fixes and + and rewordings. + +2019-08-20 Dmitriy Anisimkov + + * adaint.c (__gnat_to_gm_time): On _WIN32, don't round time up + to even second. + +2019-08-20 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declaration): If actual type is + private and distinct from nominal type in declaration, propagate + flags Is_Constr_Subt_For_U_Nominal and _UN_Aliased to full view + of private type. + +2019-08-20 Ed Schonberg + + * exp_attr.adb (Expand_Loop_Entry_Attribute): When expanding a + loop entry attribute for a while_loop we construct a function + that incorporates the expanded condition of the loop. The itypes + that may be generated in that expansion must carry the scope of + the constructed function for proper handling in gigi. + +2019-08-20 Ed Schonberg + + * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When a + dispatching call tp a subprogram with a class-wide precondition + occurrs in the same declarative part as the ancestor subprogram + being called, the`expression for the precondition has not been + analyzed yet. Such a call may appear, e.g. in an expression + function. In that case, the replacement of formals by actuals in + the call cannot use the formal entities of the subprogram being + called, and the occurrence of the formals in the expression must + be located by name (Chars fields) as would be done at a later + freeze point, when the expression is resolved in the context of + the subprogram itself. + +2019-08-20 Bob Duff + + * sem_prag.adb (Persistent_BSS): If an initialization is present + because of Initialize_Scalars or Normalize_Scalars, generate an + implicit pragma Suppress_Initialization to remove that, because + initialization is not allowed for these variables. Other + initializations remain illegal. + +2019-08-20 Gary Dismukes + + * sem_ch3.adb (OK_For_Limited_Init_In_05): In the case of type + conversions, apply the recursive call to the Original_Node of + the expression Exp rather than the Expression of the + Original_Node, in the case where Exp has been rewritten; + otherwise, when Original_Node is the same as Exp, apply the + recursive call to the Expression. + (Check_Initialization): Revise condition for special check on + type conversions of limited function calls to test Original_Node + (avoiding spurious errors on expanded unchecked conversions + applied to build-in-place dispatching calls). + +2019-08-20 Patrick Bernardi + + * exp_aggr.adb (Expand_Record_Aggregate): Always convert a + record Aggregate to assignment statements if the option + Aggregate_Individually_Assign is set. + * opt.ads (Aggregate_Individually_Assign): New option. + * par-prag.adb (Prag): Add Pragma_Aggregate_Individually_Assign. + * sem_prag.adb (Analyze_Pragma): Likewise. + * snames.ads-tmpl: Add Pragma_Aggregate_Individually_Assign and + Name_Aggregate_Individually_Assign. + * doc/gnat_rm/implementation_defined_pragmas.rst: Document + pragma Aggregate_Individually_Assign. + * gnat_rm.texi: Regenerate. + +2019-08-20 Bob Duff + + * par-ch4.adb: Minor wording change in error messages. + * sem_aggr.adb (Resolve_Delta_Aggregate): Emit an error for Ada + versions prior to Ada 2020. + +2019-08-20 Bob Duff + + * freeze.adb (Is_Atomic_VFA_Aggregate): Make the temp for + initialization of the atomic variable be constant. This is + cleaner, and might improve efficiency. + +2019-08-20 Eric Botcazou + + * repinfo.adb (List_Record_Info): In -gnatR4 mode, set the + relevant flag on the implicit base type of a record subtype. + +2019-08-20 Bob Duff + + * sem_eval.adb (Expr_Value): Implement the case of an unchecked + conversion of a static expression. + +2019-08-20 Bob Duff + + * sem_ch13.adb (Is_Null_Array): New function, used to detect the + null array case; used to warn about uncheckedly converting to a + zero-sized array. It is unfortunate that we can't just check + the size, and warn on all cases of converting from a + nonzero-sized type to a zero-sized one. That's because "0" means + two different things: "size is zero" and "size is unknown". + Until we fix that design flaw, we need this more targeted fix. + +2019-08-20 Bob Duff + + * libgnat/a-cborma.adb, libgnat/a-cborse.adb (Clear): Repeatedly + call Delete. This avoids clearing the free list, which + substantially speeds up future Delete operations. + +2019-08-20 Bob Duff + + * sem_ch13.adb (Component_Order_Check): New procedure to check + for out-of-order clauses. + * warnsw.ads, warnsw.adb: New -gnatw_r switch. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document new switch. + * gnat_ugn.texi: Regenerate. + +2019-08-20 Bob Duff + + * sem_ch13.adb (Object_Size): Give an error for zero. It really + rubs me the wrong way that we don't honor "for T'Object_Size use + 0;", but it's not important enough to fix. In any case, if we're + not going to obey the clause, we should give an error. + +2019-08-20 Bob Duff + + * errout.adb (Error_Msg_Internal): Set Warn_Err in case of + Is_Style_Msg. + * erroutc.adb (Output_Msg_Text): Do Warnings_Treated_As_Errors + processing and [warning-as-error] modification for style + messages. Clean up code, simplify, remove unnecessary block + statement, add renaming of table entry. + * erroutc.ads (Warning_Treated_As_Error): Fix comment: no such + thing as Set_Warning_As_Error. + * opt.ads: Clean up comments and move related declarations near + each other. + * par-prag.adb: Process Warning_As_Error. This is necessary + because many style warning happen during parsing. + * sem_prag.adb: Use new Acquire_Warning_Match_String. + * sem_util.ads, sem_util.adb (Acquire_Warning_Match_String): New + function shared by par-prag.adb and sem_prag.adb. Replaces the + procedure in sem_prag.adb. Avoid use of global variables. + * stringt.ads, stringt.adb (To_String): New function to convert + String_Id to String. + * doc/gnat_rm/implementation_defined_pragmas.rst: Document the + new feature. + * gnat_rm.texi: Regenerate. + +2019-08-20 Eric Botcazou + + * lib.ads: Add with clause for GNAT.HTable. + Add pragma Inline for Is_Loaded and alphabetize the list. + (Unit_Name_Table_Size): New constant. + (Unit_Name_Header_Num): New subtype. + (Unit_Name_Hash): New function declaration. + (Unit_Names): New simple hash table. + (Init_Unit_Name): New procedure declaration. + * lib.adb (Set_Unit_Name): Unregister the old name in the table, + if any, and then register the new name. + (Init_Unit_Name): New procedure. + (Is_Loaded): Reimplement using a lookup in the names table. + (Remove_Unit): Unregister the name. + (Unit_Name_Hash): New function. + * lib-load.adb (Create_Dummy_Package_Unit): Call Init_Unit_Name. + (Load_Unit): Use a lookup in the names table to find out whether + the unit has already been loaded. Call Init_Unit_Name and then + Remove_Unit if the loading has failed. + (Make_Child_Decl_Unit): Call Init_Unit_Name. + (Make_Instance_Unit): Likewise. + * lib-writ.adb (Ensure_System_Dependency): Likewise. + +2019-08-20 Bob Duff + + * sem_ch13.adb (Record_Hole_Check): Initialize After_Last. + +2019-08-20 Piotr Trojanek + + * impunit.adb (Get_Kind_Of_Unit): Revert change for adapting + this routine for gnatprove. + +2019-08-20 Arnaud Charlet + + * doc/gnat_rm/implementation_defined_pragmas.rst: Document + requirements for Pragma Lock_Free. + * gnat_rm.texi: Regenerate. + +2019-08-20 Philippe Gil + + * bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv + only when still uninitialized. + +2019-08-20 Bob Duff + + * libgnat/g-comlin.ads (Exit_From_Command_Line): Fix + documentation for GNAT.Command_Line. + +2019-08-20 Pierre-Marie de Rodat + + PR ada/91492 + * gcc-interface/lang.opt (-fdump-scos): Add missing dot at the + end of the documentation. + +2019-08-20 Richard Sandiford + + * gcc-interface/misc.c (default_pass_by_ref): Update call to + pass_by_reference. + +2019-08-19 Bob Duff + + * doc/gnat_rm/implementation_advice.rst: Fix documentation for + stream oriented attributes. + * gnat_rm.texi: Regenerate. + +2019-08-19 Gary Dismukes + + * einfo.ads (E_Function, E_Procedure): Update comments to + reflect that Renamed_Entity is also used for nongeneric + subprograms. + +2019-08-19 Eric Botcazou + + * sem_prag.adb (Is_Before_First_Decl): Deal with rewritten + pragmas. + +2019-08-19 Bob Duff + + * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning + on formal parameters of dispatching operations. + +2019-08-19 Ed Schonberg + + * sem_res.adb (Resolve_Call): A call to an expression function + freezes when expander is active, unless the call appears within + the body of another expression function, + +2019-08-19 Dmitriy Anisimkov + + * libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New + routines. + +2019-08-19 Bob Duff + + * exp_attr.adb (Attribute_Valid): Correct the handling of + private types where the full type is modular. System.Address is + an example. Otherwise, we convert uncheckedly to a signed type, + so we get an incorrect range 0 .. -1, for which all values will + fail. The 'Valid attribute is illegal for such types, but we + generate such illegal attribute_references for 'Valid_Scalars, + and we generate 'Valid_Scalars when the -gnateV switch is used. + Rename Btyp --> PBtyp to avoid hiding the outer Btyp, which was + confusing. + * libgnat/a-except.adb: Set the Exception_Raised component. + Otherwise, we have incorrect reads of invalid data. + +2019-08-19 Pierre-Marie de Rodat + + * libgnat/a-cgaaso.ads, libgnat/a-cgarso.ads, + libgnat/a-cogeso.ads, libgnat/a-contai.ads, + libgnat/a-locale.ads: Import documentation from the RM. + +2019-08-19 Jerome Guitton + + * Makefile.rtl (system.o): New target to add generation of + target properties. + * gcc-interface/Makefile.in (install-gnatlib): Install + ada_target_properties. + +2019-08-19 Eric Botcazou + + * inline.adb (Add_Inlined_Body): Do not special-case instances + that are compilation units. + (Add_Pending_Instantiation): Likewise. + (Instantiate_Body): Skip instantiations that are compilation + units and have already been performed. + * sem_ch12.adb (Needs_Body_Instantiated): Do not special-case + instances that are compilation units. + (Load_Parent_Of_Generic): Be prepared for parent that is a + compilation unit but whose instantiation node has not been + replaced. + +2019-08-19 Eric Botcazou + + * inline.adb (Initialize, Lock): Deal with + Called_Pending_Instantiations. + +2019-08-19 Ed Schonberg + + * sem_ch6.adb (Check_Synchronized_Overriding): Complete + predicate that applies legality check in 9.4 (11.9/2): if an + inherited subprogram is implemented by a protected procedure or + entry, its first paarameter must be out, in_out or + access_to_varible. + +2019-08-19 Javier Miranda + + PR ada/65696 + * exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims): + Adding formal to specify how many predefined primitives are + inherited from the parent type. + * exp_disp.adb (Number_Of_Predefined_Prims): New subprogram. + (Make_Secondary_DT): Compute the number of predefined primitives + of all tagged types (including tagged types not defined at + library level). Previously we unconditionally relied on the + Max_Predef_Prims constant value when building the dispatch + tables of tagged types not defined at library level (thus + consuming more memory for their dispatch tables than required). + (Make_DT): Compute the number of predefined primitives that must + be inherited from their parent type when building the dispatch + tables of tagged types not defined at library level. Previously + we unconditionally relied on the Max_Predef_Prims constant value + when building the dispatch tables of tagged types not defined at + library level (thus copying more data than required from the + parent type). + +2019-08-19 Bob Duff + + * sem_ch13.adb (Record_Hole_Check): Procedure to check for holes + that incudes processing type extensions. A type extension is + processed by first calling Record_Hole_Check recursively on the + parent type to compute the bit number after the last component + of the parent. + +2019-08-19 Gary Dismukes + + * checks.adb (Length_Mismatch_Info_Message): New function in + Selected_Length_Checks to return a message indicating the + element counts for the mismatched lengths for a failed + compile-time length check. + (Plural_Or_Singular_Ending): Support function in + Length_Mismatch_Info_Message to return either "" or "s", for + concatenating to the end of words. + (Selected_Length_Checks): Pass the result of + Length_Mismatch_Info_Message as an extra warning message to + Compile_Time_Constraint_Error to indicate the mismatched lengths + for a failed compile-time length check. + * sem_util.ads (Compile_Time_Constraint_Error): Add an optional + message formal (Extra_Msg), defaulted to the empty string. + * sem_util.adb (Compile_Time_Constraint_Error): Output an extra + message following the main warning message (when Extra_Msg is + not the empty string). + +2019-08-19 Patrick Bernardi + + * socket.c: Removed the redefinition of getaddrinfo, getnameinfo + and freeaddrinfo to internal VxWorks kernel calls because they + are, well, internal kernel calls and cannot be called from RTPs. + VxWorks provides the necessary components to call these routines + directly. + +2019-08-19 Eric Botcazou + + * exp_dist.adb (Is_Generic_Actual_Subtype): New predicate. + (Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call): + Use it instead of Is_Generic_Actual_Type flag to detect subtypes + representing generic actual types. + +2019-08-19 Ed Schonberg + + * sem_warn.adb (Check_References, Generic_Body_Formal): When a + formal parameter of a generic subprogram is not referenced in + the body, place the corresponding warning on the corresponding + entity in the specification of the generic body, as is done for + non-generic subprograms. + +2019-08-19 Bob Duff + + * errout.ads (Size_Too_Small_Message): New constant. + * errout.adb, freeze.adb, sem_ch13.adb: Use it. + +2019-08-19 Eric Botcazou + + * exp_dist.adb (Build_Package_Stubs): Do not specifically visit + the declarations of an N_Subprogram_Instantiation node. + +2019-08-19 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document missing + metrics switches. + +2019-08-19 Piotr Trojanek + + * sem_ch12.adb (Get_Unit_Instantiation_Node): Simplify Nkind_In + membership test. + * sem.adb (Depends_On_Main): Whitespace cleanup; only assign a + local variable if needed. + +2019-08-19 Claire Dross + + * sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New + parameter of the generic. Function used to decide whether a + function is a pledge function. + (Check_Not_Borrowed): Disable check inside the second parameter + of a pledge function for the path borrowed by the first + parameter. Also disable checks for entities inside a Global + contract. + +2019-08-19 Joffrey Huguet + + * libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads, + libgnat/a-cfinve.ads, libgnat/a-cforma.ads, + libgnat/a-cofove.ads, libgnat/a-cofuma.ads, + libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R : + Element_Type) to the generic packages. + +2019-08-19 Eric Botcazou + + * opt.ads: Clean up left-overs of earlier implementation in + comment: + +2019-08-19 Ed Schonberg + + * sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous + base type if the bounds in the derived type declaration are + literals of the type. + +2019-08-19 Yannick Moy + + * sem_res.adb (Resolve_Call): Check non-aliasing rules before + GNATprove inlining. + +2019-08-19 Eric Botcazou + + * inline.adb (Add_Inlined_Body): Do not add pending + instantiations. + * sem_ch12.adb (Needs_Body_Instantiated): New predicate. + (Analyze_Package_Instantiation): Use it to decide whether to add + a pending instantiation for the body of the package. + +2019-08-19 Olivier Hainque + + * gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc + BIND_EXPR node we have constructed on purpose. Remove unused + variable. + +2019-08-19 Pierre-Marie de Rodat + + * gcc-interface/lang.opt (fdump-scos): Define. + * gcc-interface/misc.c (gnat_handle_option): Handle + OPT_fdump_scos. + +2019-08-14 Joffrey Huguet + + * libgnat/a-cofuba.ads: Add a Length attribute to type + Container. Add a type Array_Base which replaces the previous + Elements attribute of Container. + (Content_Init): New subprogram. It is used to initialize the + Base attribute of Container. + * libgnat/a-cofuba.adb (Resize): New subprogram. It is used to + resize the underlying array of a container if necessary. + (=, <=, Find, Get, Intersection, Length, Num_Overlaps, Set, + Union): Update to match changes in type declarations. + (Add): Modify body to damp the time and space cost in a specific + case. + (Content_Init): New subprogram. It is used to initialize the + Base attribute of Container. + (Remove): Modify body to damp the time and space cost in a + specific case. + +2019-08-14 Bob Duff + + * sem_ch13.adb (Get_Alignment_Value): Return 1 for Alignment 0, + and do not give an error. + * doc/gnat_rm/representation_clauses_and_pragmas.rst: Update the + corresponding documentation. + * gnat_rm.texi: Regenerate. + +2019-08-14 Eric Botcazou + + * inline.adb (Add_Pending_Instantiation): Fix off-by-one error + in the comparison against the maximum number of instantiations. + +2019-08-14 Eric Botcazou + + * inline.adb (Add_Pending_Instantiation): Use greater-or-equal + in the comparison against the maximum number of instantiations. + +2019-08-14 Ed Schonberg + + * sem_aux.adb (Next_Rep_Item): If a node in the rep chain + involves a Ghost aspect it may have been replaced by a null + statement; use the original node to find next Rep_Item. + * repinfo.adb (List_Entities): Do not list an Ignored + Ghost_Entity, for which information may have been deleted. + +2019-08-14 Bob Duff + + * sem_prag.ads, sem_prag.adb + (Process_Compile_Time_Warning_Or_Error): In parameterless + version, improve detection of whether we are in a generic unit + to cover the case of an instance within a generic unit. + (Process_Compile_Time_Warning_Or_Error): Rename the + two-parameter version to be + Validate_Compile_Time_Warning_Or_Error, and do not export it. + Issue a warning if the condition is not known at compile time. + The key point is that the warning must be given only for pragmas + deferred to the back end, because the back end discovers + additional values that are known at compile time. Previous + changes in this ticket have enabled this by deferring to the + back end without checking for special cases such as 'Size. + (Validate_Compile_Time_Warning_Or_Error): Rename to be + Defer_Compile_Time_Warning_Error_To_BE. + * warnsw.ads, warnsw.adb (Warn_On_Unknown_Compile_Time_Warning): + Add new switches -gnatw_c and -gnatw_C to control the above + warning. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document new switches. + * gnat_ugn.texi: Regenerate. + +2019-08-14 Eric Botcazou + + * sem_ch12.adb (Might_Inline_Subp): Rework comment and restrict + the shortcut based on Is_Inlined to the back-end inlining case. + +2019-08-14 Bob Duff + + * inline.adb (Check_And_Split_Unconstrained_Function): Ignore + protected functions to get rid of spurious error. The + transformation done by this procedure triggers legality errors + in the generated code in this case. + +2019-08-14 Bob Duff + + * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Defer + processing to the back end in all cases where the pragma's + condition is not known at compile time during the front end + (except in generics), as opposed to detecting 'Size attributes + and the like. This ensures that we take advantage of whatever + can be compile-time known after running the back end, as opposed + to having the front end guess what the back end can do. Remove + a little duplicated code at the call site. + * gnat1drv.adb (Post_Compilation_Validation_Checks): Unlock the + Elists while in Validate_Compile_Time_Warning_Errors, because it + does analysis and name resolution, which sometimes involves + adding Elists. + +2019-08-14 Eric Botcazou + + * einfo.ads (Is_Called): Document new usage on E_Package + entities. + * einfo.adb (Is_Called): Accept E_Package entities. + (Set_Is_Called): Likewise. + * exp_ch6.adb (Expand_Call_Helper): Move code dealing with + instances for back-end inlining to Add_Inlined_Body. + * inline.ads: Remove with clauses for Alloc and Table. + (Pending_Instantiations): Move to... + * inline.adb: Add with clauses for Alloc, Uintp, Table and + GNAT.HTable. + (Backend_Instances): New variable. + (Pending_Instantiations): ...here. + (Called_Pending_Instantiations): New table. + (Node_Table_Size): New constant. + (Node_Header_Num): New subtype. + (Node_Hash): New function. + (To_Pending_Instantiations): New hash table. + (Add_Inlined_Body): Bail out early for subprograms in the main + unit or subunit. Likewise if the Is_Called flag is set. If the + subprogram is an instance, invoke Add_Inlined_Instance. Call + Set_Is_Called earlier. If the subrogram is within an instance, + invoke Add_Inlined_Instance. Also deal with the case where the + call itself is within an instance. + (Add_Inlined_Instance): New procedure. + (Add_Inlined_Subprogram): Remove conditions always fulfilled. + (Add_Pending_Instantiation): Move the defence against ludicruous + number of instantiations to here. When back-end inlining is + enabled, associate an instantiation with its index in table and + mark a few selected kinds of instantiations as always needed. + (Initialize): Set Backend_Instances to No_Elist. + (Instantiate_Body): New procedure doing the work extracted + from... + (Instantiate_Bodies): ...here. When back-end inlining is + enabled, loop over Called_Pending_Instantiations instead of + Pending_Instantiations. + (Is_Nested): Minor tweak. + (List_Inlining_Info): Also list the contents of + Backend_Instances. + * sem_ch12.adb (Might_Inline_Subp): Return early if Is_Inlined + is set and otherwise set it before returning true. + (Analyze_Package_Instantiation): Remove the defence against + ludicruous number of instantiations. Invoke + Remove_Dead_Instance instead of doing the removal manually if + there is a guaranteed ABE. + +2019-08-14 Gary Dismukes + + * exp_ch3.adb (Predef_Spec_Or_Body): For an equality operation + of an interface type, create an expression function (that + returns False) rather than declaring an abstract function. + * freeze.adb (Check_Inherited_Conditions): Set Needs_Wrapper to + False unconditionally at the start of the loop creating wrappers + for inherited operations. + +2019-08-14 Bob Duff + + * table.adb: Assert that the table is not locked when increasing + Last, even if it doesn't cause reallocation. In other words, + assert that on operations that MIGHT cause reallocation. + * table.ads: Fix comment accordingly. + +2019-08-14 Arnaud Charlet + + * doc/gnat_ugn/gnat_and_program_execution.rst: Remove + documentation of gnatelim. + +2019-08-14 Bob Duff + + * sem_prag.adb (Validate_Compile_Time_Warning_Error): Attach the + warning to the Sloc of the first pragma argument, rather than to + the pragma itself. This is to make pragmas processed after the + back end use the same Sloc as pragmas processed earlier, in the + front end. There's no reason for this discrepancy, and it + hinders further work on this ticket. + +2019-08-14 Bob Duff + + * sem.ads (Inside_A_Generic): Remove the ??? comment. + +2019-08-14 Eric Botcazou + + * inline.ads (Pending_Descriptor): Delete. + * inline.adb (Initialize): Do not initialize it. + * sem_ch12.adb (Delay_Descriptors): Delete. + (Analyze_Package_Instantiation): Call + Set_Delay_Subprogram_Descriptors instead of Delay_Descriptors + throughout. + +2019-08-14 Bob Duff + + * exp_aggr.adb (Init_Hidden_Discriminants): Avoid processing the + wrong discriminant, which could be of the wrong type. + +2019-08-14 Eric Botcazou + + * sem_ch12.adb (Analyze_Instance_And_Renamings): Do not reset + the Is_Generic_Instance flag previously set on the package + generated for the instantiation of a generic subprogram. + +2019-08-14 Ed Schonberg + + * exp_ch4.adb (Expand_N_Quantified_Expression): Freeze + explicitly the type of the loop parameter. + +2019-08-14 Javier Miranda + + * sem_util.adb (New_Copy_Tree.Copy_Node_With_Replacement): + Update the Chars attribute of identifiers. + +2019-08-14 Yannick Moy + + * sem_spark.adb, sem_spark.ads (Is_Legal): New function exposed + for use in GNATprove, to test legality rules not related to + permissions. + (Check_Declaration_Legality): Extract the part of + Check_Declaration that checks rules not related to permissions. + (Check_Declaration): Call the new Check_Declaration_Legality. + (Check_Type_Legality): Rename of Check_Type. Introduce + parameters to force or not checking, and update a flag detecting + illegalities. + (Check_Node): Ignore attribute references in statement position. + +2019-08-14 Yannick Moy + + * sem_spark.adb (Check_Old_Loop_Entry): New procedure to check + correct use of Old and Loop_Entry. + (Check_Node): Check subprogram contracts. + (Check_Pragma): Check Loop_Variant. + (Check_Safe_Pointers): Apply checking to library-level + subprogram declarations as well, in order to check their + contract. + +2019-08-14 Yannick Moy + + * sem_spark.adb (Is_Subpath_Expression): Take into account + conversion and qualification. + +2019-08-14 Eric Botcazou + + * sem_ch7.adb (Install_Private_Declarations) + : Do not rely solely on the + Is_Child_Unit flag on the unit to recurse. + (Uninstall_Declarations) : New + function. Use it to recurse on the private dependent entities + for child units. + +2019-08-14 Javier Miranda + + * exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for + arrays with bounds not known at compile time. + +2019-08-14 Ed Schonberg + + * sem_util.adb (New_Copy_Tree, Visit_Entity): A quantified + expression includes the implicit declaration of the loop + parameter. When a quantified expression is copied during + expansion, for example when building the precondition code from + the generated pragma, a new loop parameter must be created for + the new tree, to prevent duplicate declarations for the same + symbol. + +2019-08-14 Yannick Moy + + * sem_disp.adb (Check_Dispatching_Operation): Update assertion + for the separate declarations created in GNATprove mode. + * sem_disp.ads (Is_Overriding_Subprogram): Update comment. + * sem_elab.adb (SPARK_Processor): Fix test for checking of + overriding primitives. + +2019-08-14 Eric Botcazou + + * inline.adb (Add_Inlined_Body): Tweak comments. + (List_Inlining_Info): Also list information about non-main + units. + +2019-08-14 Gary Dismukes + + * sem_ch4.adb (Analyze_Selected_Component): In the case where + the prefix is of a concurrent type, and the selected entity + matching the selector is the first private declaration of the + type (such as the first local variable in a task's body), set + Is_Private_Op. + +2019-08-14 Piotr Trojanek + + * einfo.adb (Is_Generic_Actual_Subprogram): Replace repeated + calls to Ekind with Ekind_In. + +2019-08-13 Richard Sandiford + + PR middle-end/91421 + * gcc-interface/trans.c (gigi): Call set_decl_buillt_in_function. + (Call_to_gnu): Use DECL_FE_FUNCTION_CODE instead of DECL_FUNCTION_CODE. + +2019-08-13 Eric Botcazou + + * ali.ads (Linker_Option_Record): Remove Original_Pos component. + * ali.adb (Scan_ALI): Do not set it. + +2019-08-13 Eric Botcazou + + * sem_ch3.adb (Build_Derived_Concurrent_Type): Add a couple of + local variables and use them. When the derived type fully + constrains the parent type, rewrite it as a subtype of an + implicit (unconstrained) derived type instead of the other way + around. + (Copy_And_Build): Deal with concurrent types and use predicates. + (Build_Derived_Private_Type): Build the full derivation if + needed for concurrent types too. + (Build_Derived_Record_Type): Add marker comment. + (Complete_Private_Subtype): Use predicates. + +2019-08-13 Ed Schonberg + + * sem_ch3.adb (Check_Generic_Ancestor): New subprogram, + aubsidiary to Build_Derived_Record_Type. to enforce the rule + that a type extension declared in a generic body cznnot have an + ancestor that is a generic formal (RM 3.9.1 (4/2)). The rule + applies to all ancestors of the type, including interface + progenitors. + +2019-08-13 Eric Botcazou + + * sem_ch3.adb (Build_Underlying_Full_View): Delete. + (Complete_Private_Subtype): Do not set the full view on the + private subtype here. If the full base is itself derived from + private, do not re-derive the parent type but instead constrain + an existing underlying full view. + (Prepare_Private_Subtype_Completion): Do not get to the + underlying full view, if any. Set the full view on the private + subtype here. + (Process_Full_View): Likewise. + * sem_ch12.adb (Check_Generic_Actuals): Also set + Is_Generic_Actual_Type on the full view if the type of the + actual is private. + (Restore_Private_Views): Also reset Is_Generic_Actual_Type on + the full view if the type of the actual is private. + * sem_eval.adb (Subtypes_Statically_Match): Remove bypass for + generic actual types. + +2019-08-13 Javier Miranda + + * sem_res.adb (Resolve_Selected_Component): When the type of the + component is an access to a class-wide type and the type of the + context is an access to a tagged type the relevant type is that + of the component (since in such case we may need to generate + implicit type conversions or dispatching calls). + +2019-08-13 Ed Schonberg + + * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Preanalyze + expression, rather do a full analysis, to prevent unwanted + removal of side effects which mask the intent of the expression. + +2019-08-13 Eric Botcazou + + * impunit.adb (Non_Imp_File_Names_95): Add + GNAT.Branch_Prediction. + +2019-08-13 Eric Botcazou + + * exp_ch6.adb: Remove with and use clauses for Sem_Ch12. + (Expand_Call_Helper): Swap the back-end inlining case and the + special front-end expansion case. In back-end inlining mode, do + not invoke Add_Inlined_Body unless the call may be inlined. + * inline.ads (Add_Pending_Instantiation): New function moved + from... + * inline.adb (Add_Inlined_Body): Simplify comment. Turn test on + the enclosing unit into assertion. + (Add_Pending_Instantiation): New function moved from... + * sem_ch12.ads (Add_Pending_Instantiation): ...here. + * sem_ch12.adb (Add_Pending_Instantiation): ...here. + +2019-08-13 Eric Botcazou + + * sem.adb (Do_Analyze): Recompute Style_Check_Max_Line_Length + after restoring Style_Max_Line_Length. + +2019-08-13 Arnaud Charlet + + * sem_ch13.adb (Check_Iterator_Functions): Protect against + cascaded errors. + +2019-08-13 Ed Schonberg + + * sem_ch8.adb (Analyze_Subprogram_Renaming): Do no suppress mode + conformance checks on child unit instance that is a compilation + unit. + +2019-08-13 Gary Dismukes + + * exp_dbug.adb (Fully_Qualify_Name): Add full name qualification + for the E_Exception case. + +2019-08-13 Gary Dismukes + + * exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using + universal arithmetic, to avoid situations where the size + computation overflows. + +2019-08-13 Justin Squirek + + * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals + for displaying ordering to always be triggered when -gnatR4 is + in effect. + +2019-08-13 Justin Squirek + + * aspects.adb, aspects.ads: Register new aspect. + * par-prag.adb (Prag): Register new pragma + * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing + for new aspect similar to Aspect_Max_Entry_Queue_Length. + * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new + pragma and set it to use the same processing as + Pragma_Max_Queue_Length. + * snames.ads-tmpl: Move definition of + Name_Max_Entry_Queue_Length so that it can be processed as a + pragma in addition to a restriction and add an entry for the + pragma itself. + +2019-08-13 Yannick Moy + + * sem_ch4.adb (Analyze_Allocator): Do not insert subtype + declaration for allocator inside a spec expression. + +2019-08-13 Yannick Moy + + * sem_res.adb (Resolve_Call): Do not inline calls inside record + types. + +2019-08-13 Eric Botcazou + + * sem_ch4.adb (Analyze_One_Call): Remove bypass for type + mismatch in nested instantiations. + * sem_ch8.adb (Find_Nearer_Entity): New function. + (Find_Renamed_Entity): Use it to disambiguate the candidates for + the renaming generated for an instantiation when it is + ambiguous. + +2019-08-13 Eric Botcazou + + * gnat1drv.adb (Adjust_Global_Switches): Do not set + Back_End_Inlining in ASIS mode either. + +2019-08-13 Olivier Hainque + + * libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile + binding to use it instead of DWORD for the dwNumberOfBytesToMap + argument. + * libgnat/g-sercom__mingw.adb (Read): State which definition of + size_t to fetch in call to Last_Index. + +2019-08-13 Arnaud Charlet + + * gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass + LN_S to relevant gnatlib targets. + * gcc-interface/Makefile.in: Systematically pass LN_S to + relevant gnatlib targets. + +2019-08-13 Yannick Moy + + * sem_dim.adb (Analyze_Dimension, + Analyze_Dimension_Array_Aggregate, Analyze_Dimension_Call, + Analyze_Dimension_Extension_Or_Record_Aggregate): Return + immediately when inside an inlined body. + * sem_res.adb (Resolve_Call): Remove special checking now done + inside Analyze_Dimension_Call. + +2019-08-13 Justin Squirek + + * exp_ch4.adb (Expand_N_Allocator): Add condition to detect + library-level object declarations + +2019-08-13 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst + (-gnateT): Document Double_Float_Alignment parameter and fix + description of Double_Scalar_Alignment parameter. + * gnat_ugn.texi: Regenerate. + +2019-08-13 Eric Botcazou + + * exp_ch6.adb (Expand_Call_Helper): If back-end inlining is + enabled, also instantiate the body of a generic unit containing + a subprogram subject to aspect/pragma Inline_Always at + optimization level zero. + * sem_ch12.adb (Might_Inline_Subp): Minor tweak. + (Analyze_Package_Instantiation): Do not instantiate the package + body because of inlining considerations if the instantiation is + done in a generic unit. Move around similar condition involving + the main unit. Add test on Back_End_Inlining to processing for + front-end inlining. + +2019-08-13 Javier Miranda + + * exp_disp.adb (Make_Secondary_DT): Handle record type + derivations that have interface components located at fixed + positions and interface components located at variable offset. + The offset of components located at fixed positions is computed + using the dummy object (similar to the case where all the + interface components are located at fixed positions). + (Make_DT): Build the dummy object for all tagged types that + implement interface types (that is, build it also for types with + variable size components), and use the dummy object to compute + the offset of all tag components located at fixed positions when + initializing the Interface_Table object. + +2019-08-13 Justin Squirek + + * gnatcmd.adb (GNATCmd): Add constant for new compiler switch + --help-ada, and include usage subprogram. Add line to usage help + explaining the new flag. + (GNATCmd_Usage): Rename from locally declared Usage so as not to + confuse with the newly imported version. Add new argument case + for --help-ada and add bug report email to implicit display of + help without the --help flag so as to unify output between the + two cases. + +2019-08-13 Dmitriy Anisimkov + + * libgnat/g-comlin.adb (Getopt): Quote unrecognized switch in + Invalid_Switch exception message. + +2019-08-13 Yannick Moy + + * sem_util.adb (Traverse_More_Func): Take into account + Loop_Actions inside N_Iterated_Component_Association nodes. + * sinfo.ads: Document correctly Loop_Actions as a field of nodes + of kind N_Iterated_Component_Association. + +2019-08-13 Claire Dross + + * libgnat/a-cfinve.adb, libgnat/a-cofove.adb (Find_Index, + Reverse_Find_Index): Use bigger type to avoid range check + failure at the last loop iteration. + +2019-08-12 Dmitriy Anisimkov + + * libgnat/g-socket.adb (Is_IPv6_Address): Check that no less + then 2 colons in IPv6 numeric address. + +2019-08-12 Dmitriy Anisimkov + + * libgnat/g-comlin.ads, libgnat/g-comlin.adb (Getopt): Add + parameter Quiet. Need to do not output error messages to + console. Invalid_Switch exception generation surrounded by an + error message. + +2019-08-12 Ed Schonberg + + * exp_ch6.adb (Expand_Actuals. Add_Call_By_Copy_Code): Add code + to generate proper checks when an actual for an in-out or out + parameter has a non-null access type. No constraints are + applied to an inbound access parameter, but on exit a not-null + check must be performed if the type of the actual requires it. + +2019-08-12 Ed Schonberg + + * sem_util.adb (Is_Expaned_Priority_Attribute): Check whether + call comes from a rewritten attribute before comparing name with + Get_Ceiling run-time subprogram. + +2019-08-12 Eric Botcazou + + * exp_util.ads (Component_May_Be_Bit_Aligned): Small comment + tweaks. + (Possible_Bit_Aligned_Component): Likewise. + (Type_May_Have_Bit_Aligned_Components): Likewise. + * exp_util.adb (Component_May_Be_Bit_Aligned): Likewise. + (Possible_Bit_Aligned_Component): Likewise. + (Type_May_Have_Bit_Aligned_Components): Likewise. + +2019-08-12 Eric Botcazou + + * exp_ch4.adb (Expand_N_Op_Eq): Expand the array equality if + either operand is a possibly unaligned slice. + * exp_ch6.adb (Expand_Simple_Function_Return): Do not generate a + copy for a possibly unaligned object if it is represented as a + scalar. + * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not always + return false if the target doesn't have strict alignment. + +2019-08-12 Bob Duff + + * sem_ch12.adb (Instantiate_Package_Body): Remove suppression of + checks in instances of internal units. + * sem_ch6.adb (Analyze_Function_Return): Do not generate a + constraint check on an extended_return_statement if the subtype + of the return object in the statement is identical to the return + subtype of the function. + +2019-08-12 Bob Duff + + * libgnat/a-cbmutr.adb (Is_Reachable): Declare Idx to be of the + base subtype. Clearly it makes no sense to loop "while Idx >= + 0", if Idx is of a nonnegative subtype. + +2019-08-12 Bob Duff + + * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being + negative, since Field is range 0 .. something. + +2019-08-12 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp, + gnatstub): Remove documentation for Ada language version + switches, and note that they are no longer needed. + +2019-08-12 Gary Dismukes + + * sem_ch5.adb (Prepare_Param_Spec_Loop): Set the parents of the + copied low and high bounds in the case where the loop range is + given by a discrete_subtype_indication, to prevent hanging (or + Assert_Failure) in Insert_Actions. + +2019-08-12 Ed Schonberg + + * sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined + equality has the same profile as the predefined equality before + applying legality rule in RM 4.5.2 (9.8). + +2019-08-12 Bob Duff + + * libgnat/a-except.ads: Update obsolete comment, still making + clear that this is a variant. Add explicit default for Id + component of Exception_Occurrence, because that value is used. + Define Null_Occurrence less redundantly. + * libgnat/a-einuoc.adb: Minor simplification of code. + +2019-08-12 Justin Squirek + + * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads (Is_Simple_Name, + Is_Root_Directory, Is_Parent_Directory, + Is_Current_Directory_Name, Is_Relative_Name, Initial_Directory, + Relative_Name, Compose): Add implementation and documentation. + * libgnat/a-direct.adb (Containing_Directory): Modify routine to + use routines from Ada.Directories.Hierarchical_File_Names and + remove incorrect special case for parent directories. + (Fetch_Next_Entry): Add check for current directory and parent + directory and ignore them under certain circumstances. + (Simple_Nmae): Add check for null result from + Simple_Name_Internal and raise Name_Error. + (Simple_Name_Internal): Add explicit check for root directories, + sanitize trailing directory separators, and modify behavior so + that current and parent directories are considered valid + results. + * Makefile.rtl: Add entry to GNATRTL_NONTASKING_OBJS. + +2019-08-12 Eric Botcazou + + * freeze.adb (Freeze_Entity): Give the same error for an + Object_Size clause on a variable-sized type as for a Size + clause. + +2019-08-12 Gary Dismukes + + * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization): + For private types, set the Suppress_Initialization flag on the + Full_View of the entity rather than the entity's base type. + +2019-08-12 Yannick Moy + + * aspects.adb, aspects.ads (Aspect_No_Caching): New aspect. + * contracts.adb, contracts.ads (Add_Contract_Item): Add handling + of No_Caching. + (Analyze_Object_Contract): Add handling of No_Caching. + * einfo.adb, einfo.ads + (Get_Pragma): Add handling of No_Caching. + * doc/gnat_rm/implementation_defined_aspects.rst, + doc/gnat_rm/implementation_defined_pragmas.rst: Document new + aspect/pragma. + * gnat_rm.texi: Regenerate. + * par-prag.adb (Prag): New pragma Pragma_No_Caching. + * sem_ch13.adb (Analyze_Aspect_Specifications, + Check_Aspect_At_Freeze_Point): Add handling of No_Caching. + * sem_prag.adb (Analyze_Pragma): Deal with pragma No_Caching. + * sem_prag.ads (Analyze_External_Property_In_Decl_Part): Now + applies to No_Caching. + * sem_util.adb, sem_util.ads (Is_Effectively_Volatile): Add + handling of No_Caching. + (No_Caching_Enabled): New query function. + * snames.ads-tmpl: New names for pragma. + +2019-08-12 Yannick Moy + + * sem_util.adb, sem_util.ads (Traverse_More_Func, + Traverse_More_Proc): Add formal parameter for Itypes traversal. + +2019-08-12 Yannick Moy + + * exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New + procedure to share part of the attribute expansion with + GNATprove mode. + (Expand_N_Attribute_Reference): Extract part of the + Size/Object_Size expansion in the new procedure + Expand_Size_Attribute. + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand + Size/Object_Size attributes using the new procedure + Expand_Size_Attribute. + +2019-08-12 Yannick Moy + + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Only + expand Enum_Rep attribute when its parameter is a literal. + +2019-08-12 Justin Squirek + + * sem_eval.adb (Check_Non_Static_Context): Add a condition to + determine if a range violation constitues a warning or an error. + (Out_Of_Range): Add a condition to determine if a range + violation constitues a warning or an error. + +2019-08-12 Eric Botcazou + + * exp_ch4.adb (Real_Range_Check): Do not rewrite the conversion + node but its expression instead, after having fetched its + current value. Clear the Do_Range_Check flag on entry. Return + early for a rewritten float-to-float conversion. Remove + redundant local variable. Suppress all checks when inserting + the temporary and do not reanalyze the node. + +2019-08-12 Eric Botcazou + + * sprint.ads: Minor comment tweak. + +2019-08-12 Eric Botcazou + + * checks.adb (Insert_Valid_Check): Do not retrieve the + Do_Range_Check flag from the Original_Node but from the + Validated_Object. Remove useless bypass for floating-point + types. + +2019-08-12 Yannick Moy + + * sem_util.adb, sem_util.ads (Traverse_More_Func, + Traverse_More_Proc): New traversal subprograms. + +2019-08-12 Jerome Lambourg + + * libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call + s-tpopsp.Self when actually needed. + +2019-08-12 Eric Botcazou + + * exp_ch4.adb (Discrete_Range_Check): Return if checks are + suppressed. + +2019-08-12 Eric Botcazou + + * sem_res.adb: Add with & use clause for Sem_Mech and + alphabetize. + (Resolve_Actuals): Do not apply a scalar range check for the + source of a conversion whose result is passed by reference to a + valued procedure. + +2019-08-12 Eric Botcazou + + * checks.adb (Insert_Valid_Check): Reset the Do_Range_Check flag + on the validated object. + * exp_ch6.adb (Add_Call_By_Copy_Code): Reset the Do_Range_Check + flag on the actual here, as well as on the Expression if the + actual is a N_Type_Conversion node. + (Add_Validation_Call_By_Copy_Code): Generate the incoming range + check if needed and reset the Do_Range_Check flag on the + Expression if the actual is a N_Type_Conversion node. + (Expand_Actuals): Do not reset the Do_Range_Check flag here. + Generate the incoming range check for In parameters here instead + of... + (Expand_Call_Helper): ...here. Remove redudant condition. + * sem_res.adb (Resolve_Actuals): Use local variable A_Typ and + remove obsolete comments. + (Resolve_Type_Conversion): Do not force the Do_Range_Check flag + on the operand if range checks are suppressed. + +2019-08-12 Eric Botcazou + + * checks.adb (Activate_Range_Check): Remove redundant argument. + (Generate_Range_Check): Likewise. + (Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on + entry and remove redundant condition. + +2019-08-02 Alexandre Oliva + + * libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New. + (Claimed_Cleanup): New. + (Begin_Handler, End_Handler): Document. + * gcc-interface/trans.c (gigi): Switch to exception handler + ABI #1. + (Exception_Handler_to_gnu_gcc): Save the original cleanup + returned by begin handler, pass it to end handler, and use + EH_ELSE_EXPR to pass a propagating exception to end handler. + (gnat_to_gnu): Leave the exception pointer alone for reraise. + (add_cleanup): Handle EH_ELSE_EXPR, require it by itself. + +2019-07-23 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations, + Freeze_Entity_Checks): Include Aspect_CPU with other aspects + whose expresssion may depend on a discriminant, and thus require + that components of the type be made visible. + +2019-07-23 Eric Botcazou + + * checks.adb (Convert_And_Check_Range): Add Suppress parameter + and pass it in the call to Insert_Actions. Rename local + variable. + (Generate_Range_Check): Minor comment fixes. Pass Range_Check + in the first call to Convert_And_Check_Range and All_Checks in + the second call. + * exp_ch4.adb (Expand_N_Type_Conversion): Reset the + Do_Overflow_Check flag in the float-to-float case too if there + is also a range check. + +2019-07-23 Eric Botcazou + + * checks.adb (Activate_Overflow_Check): Remove redundant + argument. + * exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag. + (Expand_N_Type_Conversion): Do not reset it here. + +2019-07-23 Eric Botcazou + + * repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write. + (Write_Val): Likewise. + +2019-07-23 Ed Schonberg + + * aspects.ads: New table Operational_Aspect, used to distinguish + between aspects that are view-specific, such as those related to + iterators, and representation aspects that apply to all views of + a type. + * aspects.adb (Find_Aspect): If the aspect being sought is + operational, do not ecamine the full view of a private type to + retrieve it. + * sem_ch5.adb (Analyze_Iterator_Specification): Improve error + message when the intended domain of iteration does not implement + the required iterator aspects. + +2019-07-23 Yannick Moy + + * sem_spark.ads (Is_Local_Context): New function. + * sem_spark.adb (Check_Declaration): Issue errors on violations + of SPARK RM 3.10(4) + (Process_Path): Do not issue error on borrow/observe during + elaboration, as these are caught by the new rule. + +2019-07-23 Yannick Moy + + * exp_ch7.adb (Create_Finalizer): Force finalizer not to be + Ghost enabled. + * exp_dbug.adb (Get_External_Name): Explain special case of + Ghost finalizer. + +2019-07-22 Eric Botcazou + + * repinfo.adb (List_Entities): Also list compiled-generated + types present as Etype of objects. + +2019-07-22 Eric Botcazou + + * sinfo.ads: Update the documentation about the + Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags. + +2019-07-22 Eric Botcazou + + * exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment. + (Fixup_Universal_Fixed_Operation): Set the base type instead of + the type of the enclosing type conversion on the operation. + +2019-07-22 Ed Schonberg + + * exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute + 'Valid as a replacement for a range check on a discrete type + when the bounds of the range are given by type conversions, + because in such a case there are distinct types involved and the + subbested attribute replacement would be misplaced. + +2019-07-22 Yannick Moy + + * sem_spark.adb (Get_Root_Object, Is_Path_Expression, + Is_Subpath_Expression): Add parameter Is_Traversal to adapt + these functions to the case of paths returned from a traversal + function. + (Read_Indexes): Handle the case of an if-expression or + case-expression. + (Check_Statement): Check Emit_Messages only when issuing an + error message. This is important as Emit_Messages may store the + information that an error was detected. + +2019-07-22 Eric Botcazou + + * checks.adb (Apply_Type_Conversion_Checks): Do not set + Do_Range_Check flag on conversions from fixed-point types + either. + * exp_attr.adb: Add use and with clause for Expander. + (Expand_N_Attribute_Reference) : Set + the Conversion_OK flag and do not generate overflow/range checks + manually. + * exp_ch4.adb (Expand_N_Qualified_Expression): Remove + superfluous clearing of Do_Range_Check flag. + (Discrete_Range_Check): New procedure to generate a range check + for discrete types. + (Real_Range_Check): Remove redundant local variable and adjust. + Remove useless shortcut. Clear Do_Range_Check flag on all + paths. + (Expand_N_Type_Conversion): Remove redundant test on + Conversion_OK. Call Discrete_Range_Check to generate range + checks on discrete types. Remove obsolete code for + float-to-integer conversions. Add code to generate range checks + for conversions involving fixed-point types. + +2019-07-22 Eric Botcazou + + * sprint.ads: Fix pasto in comment. + +2019-07-22 Javier Miranda + + * sem_res.adb (Resolve_Actuals): Replace code that displaces the + pointer to an allocated object to reference its secondary + dispatch table by a type conversion (which takes care of + handling all cases). + +2019-07-22 Eric Botcazou + + * sprint.adb (Sprint_Node_Actual) + : Swap a couple of spaces. + (Write_Itype): Minor consistency fixes throughout. Add support + for printing ordinary and decimal fixed-point types and + subtypes. + +2019-07-22 Eric Botcazou + + * exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment. + +2019-07-22 Ed Schonberg + + * libgnat/s-valboo.ads, libgnat/s-valcha.ads, + libgnat/s-valdec.ads, libgnat/s-valenu.ads, + libgnat/s-valint.ads, libgnat/s-vallld.ads, + libgnat/s-vallli.ads, libgnat/s-valllu.ads, + libgnat/s-valrea.ads, libgnat/s-valuns.ads, + libgnat/s-valwch.ads: Change categorization of packages that + implement attribute 'Value from Pure to Preelaborate, to prevent + undesirable optimizations when the evaluation of the attribute + raises Constraint_Error, but subsequent use of the result of + this evsaluation is removed by a subsequent optimization. + +2019-07-22 Ed Schonberg + + * sem_warn.adb (Check_References): Do not emit s warning on a + referenced entity with no explicit assignment if the type of the + entity has Preelaborable_Initialixation, such as + Exception_Occurrence. + +2019-07-22 Javier Miranda + + * exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion + to handle array indexes that are modular type. + (Expand_N_Allocator): For 32-bit targets improve the generation + of the runtime check associated with large arrays supporting + arrays initialized with a qualified expression. + * libgnat/s-imenne.adb (Image_Enumeration_8, + Image_Enumeration_16, Image_Enumeration_32): Define the index of + Index_Table with range Natural'First .. Names'Length since in + the worst case all the literals of the enumeration type would be + single letter literals and the Table built by the frontend would + have as many components as the length of the names string. As a + result of this enhancement, the internal tables declared using + Index_Table have a length closer to the real needs, thus + avoiding the declaration of large arrays on 32-bit CCG targets. + +2019-07-22 Yannick Moy + + * sem_ch3.adb (Constrain_Access): Issue a message about ignored + constraint. + +2019-07-22 Eric Botcazou + + * sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the + class-wide type if the type is tagged. + (Use_One_Type): Add commentary on the handling of the class-wide + type. + +2019-07-22 Eric Botcazou + + * einfo.ads (Is_For_Access_Subtype): Delete. + (Set_Is_For_Access_Subtype): Likewise. + * einfo.adb (Is_For_Access_Subtype): Likewise. + (Set_Is_For_Access_Subtype): Likewise. + (Write_Entity_Flags): Do not write Is_For_Access_Subtype. + * exp_ch4.adb (Expand_N_Selected_Component): Do not deal with + it. + * exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise. + * sem_ch4.adb (Analyze_Explicit_Dereference): Likewise. + * sem_ch3.adb (Build_Discriminated_Subtype): Do not build a + special private subtype for access-to-record subtypes. + +2019-07-22 Eric Botcazou + + * sem_ch3.adb (Complete_Private_Subtype): Rework the setting of + the Etype of the full view for full base types that cannot + contain any discriminant. Remove code and comment about it in + the main path. + +2019-07-22 Ed Schonberg + + * sem_ch3.adb (Convert_Bound): Subsidiary of + Floating_Point_Type_Declaration, to handle properly range + specifications with bounds that may include static constants of + a given type rather than real literals. + +2019-07-22 Eric Botcazou + + * sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals + too. + (Rewrite_Range;): Minor tweak. + (Resolve_Record_Aggregate): For a component with default + initialization whose expression is an array aggregate, also + rewrite the bounds of the component associations, if any. + +2019-07-22 Gary Dismukes + + * exp_ch5.adb (Expand_N_Case_Statement): In the case where a + case statement is rewritten as an equivalent if statement, + inherit the From_Condition_Expression flag from the case + statement. + +2019-07-22 Eric Botcazou + + * sem_ch8.adb (Check_Constrained_Object): Further extend the + special optimization to all limited types. + +2019-07-22 Eric Botcazou + + * exp_attr.adb (Expand_N_Attribute_Reference) + : Set No_Truncation on the + N_Unchecked_Type_Conversion built around the argument passed to + the attribute. + +2019-07-22 Nicolas Roche + + * libgnat/s-valrea.adb (Scan_Real): Ignore non significative + digits to avoid converging to infinity in some cases. + +2019-07-22 Eric Botcazou + + * libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight. + (Encode_Wide_Wide_String): Likewise. + +2019-07-22 Eric Botcazou + + * sem_warn.adb (Find_Var): Bail out for a function call with an + Out or In/Out parameter. + +2019-07-22 Nicolas Roche + + * terminals.c (__gnat_tty_waitpid): Support both blocking and + not blocking mode. + * libgnat/g-exptty.ads (Is_Process_Running): New function. + * libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate + a process if it is already dead. + +2019-07-22 Ed Schonberg + + * freeze.adb (Freeze_Fixed_Point_Type): When freezing a + fixed-point subtype, check whether the parent type declarastion + includes an aspect specification for the 'Small type attribute, + and inherit the specified value. + +2019-07-22 Javier Miranda + + * freeze.adb (Freeze_Subprogram): Check that C++ constructors + must have external or link name. + +2019-07-22 Ed Schonberg + + * sem_res.adb (Resolve_Selected_Component): If the prefix has a + deferred reference, generate the correct reference now, to + indicate that the previous assignment is used. This prevents + spurious warnings on useless assignments when compiling with all + warnings enabled. when there is a subsequent call in the same + stqtement list, in which the prefix of the selected component is + the actual for an out parameter. + +2019-07-22 Eric Botcazou + + * exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition + of a while loop instead of simply relocating it. + +2019-07-18 Arnaud Charlet + + * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c, + cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c, + argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c, + seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C + runtime files do not have any dependency on GCC include files. + Remove unnecessary includes. + Remove remaining references to VMS in runtime C file. + * runtime.h: new File. + +2019-07-13 Andreas Schwab + + * Makefile.rtl: Use g-sercom__linux.adb for all linuxes. + +2019-07-11 Piotr Trojanek + + * lib-writ.adb (Ensure_System_Dependency, + Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access + to table with a high-level query. + +2019-07-11 Piotr Trojanek + + * checks.adb: Fix typo in comment. + * sem.adb (Semantics): Avoid repeated calls to + In_Extended_Main_Source_Unit by reusing an already-cached + result. + * sem_util.adb (First_Global): Fix style. + +2019-07-11 Yannick Moy + + * sem_res.adb (Resolve_Call): Do not perform dimensionality + checking on inlined bodies. + +2019-07-11 Yannick Moy + + * debug.adb: Flip meaning of debug switch -gnatdF. + +2019-07-11 Yannick Moy + + * sem_eval.adb (Is_Same_Value): Add special case for rewritten + Loop_Entry attribute. + +2019-07-11 Claire Dross + + * gnat1drv.adb: SPARK checking rules for pointer aliasing are + moved to GNATprove backend. + * sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic + unit. Takes as parameters: + - Retysp which is used to query the most underlying type + visible in SPARK. We do not introduce aliasing checks for + types which are not visibly deep. + - Component_Is_Visible_In_SPARK is used to avoid doing pointer + aliasing checks on components which are not visible in SPARK. + - Emit_Messages returns True in the second phase of SPARK + analysis. Error messages for failed aliasing checks are only + output in this case. + Additionally, errors on constructs not supported in SPARK are + removed as duplicates of marking errors. Components are stored + in the permission map using their original component to avoid + inconsistencies between components of different views of the + same type. + (Check_Expression): Handle delta constraints. + (Is_Deep): Exported so that we can check for SPARK restrictions + on deep types inside SPARK semantic checkings. + (Is_Traversal_Function): Exported so that we can check for SPARK + restrictions on traversal functions inside SPARK semantic + checkings. + (Check_Call_Statement, Read_Indexes): Check wether we are + dealing with a subprogram pointer type before querying called + entity. + (Is_Subpath_Expression): Image attribute can appear inside a + path. + (Check_Loop_Statement): Correct order of statements in the loop. + (Check_Node): Ignore raise nodes. + (Check_Statement): Use Last_Non_Pragma to get the object + declaration in an extended return statement. + +2019-07-11 Patrick Bernardi + + * bindgen.adb (Gen_Main): Do not generate a reference to + Ada_Main_Program_Name when the Minimal_Binder flag is set. + (Gen_Output_File_Ada): Do not output GNAT_Version and + Ada_Main_Program_Name info if Minimal_Binder flag is set. + * bindusg.adb: Add documentation for new -minimal switch. + * gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch. + * opt.ads: Add new global flag Minimal_Binder to indicate if the + binder should not produce global variables. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Update documentation with new binder -minimal switch. + * gnat_ugn.texi: Regenerate. + +2019-07-11 Eric Botcazou + + * Makefile.rtl: Add warning note about compilation flags and + capitalize. + +2019-07-11 Ed Schonberg + + * exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New + subsidiary routine Replace_Access_Definition, to handle properly + a protected type PT one of whose private components is of type + access PT. + +2019-07-11 Dmitriy Anisimkov + + * libgnat/g-socket.ads (Level_Type): Add enumerators for + IP_Protocol_For_ICMP, IP_Protocol_For_IGMP, + IP_Protocol_For_RAW_Level. + * libgnat/g-socket.adb (Levels): Handle them. + * s-oscons-tmplt.c: Import socket protocols defined in + netinet/in.h. + +2019-07-11 Claire Dross + + * libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not + reset the Has_Element flag if no element is freed. + +2019-07-11 Arnaud Charlet + + * errno.c: Remove obsolete support for MaRTE OS. + +2019-07-11 Ed Schonberg + + * exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check + is generated, analyze it with range check suppressed, because + that check has been previously applied. + * exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a + type conversion to the type of the LHS, do not apply a predicate + check to the RHS because it will have been generated already + during its expansion. + * exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to + handle a predicate check on a constant entity whose value is + static. + +2019-07-11 Hristian Kirtchev + + * bindo.adb: Remove the documentation of switch -d_N because it + is no longer in use. + * bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge): + New routine. + * bindo-writers.adb (Write_Dependency_Edge): Add the missing + case of a spec-before-body edge. + +2019-07-11 Dmitriy Anisimkov + + * libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator. + * libgnat/g-socket.adb (Modes): Handle Socket_Raw. + +2019-07-11 Justin Squirek + + * exp_ch9.adb (Build_Private_Protected_Declaration): Add + exception for the moving of pragmas to internally generated + specs for pragma Unreferenced. + +2019-07-11 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent + documentation for gnatmetric. + * gnat_ugn.texi: Regenerate. + +2019-07-11 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's + --spaces-only switch. + +2019-07-11 Hristian Kirtchev + + * sem_util.adb (Null_Status): Assume that an erroneous construct + has an undefined null status. + +2019-07-11 Hristian Kirtchev + + * checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb, + sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting. + +2019-07-11 Hristian Kirtchev + + * sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being + renamed using routine Get_Object_Name which takes care of + various name forms. + (Get_Object_Name): New routine. + +2019-07-11 Ed Schonberg + + * exp_ch6.adb (Can_Fold_Predicate_Call): New function, + subsidiary of Expand_Call_Helper, to compute statically a + predicate check when the argument is a static integer. + +2019-07-11 Hristian Kirtchev + + * sem_res.adb (Resolve_Op_Not): Do not rewrite an equality + operator into a function call when the operator is intrinsic. + +2019-07-11 Thomas Quinot + + * sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call + Set_SCO_Pragma_Enabled for the dynamic predicate case. + +2019-07-11 Hristian Kirtchev + + * exp_util.ads, exp_util.adb (Needs_Finalization): Move to + Sem_Util. + * sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark + the protected type as having controlled components when it + contains at least one such component. + * sem_util.ads, sem_util.adb (Needs_Finalization): New + function. + +2019-07-11 Eric Botcazou + + * alloc.ads (Rep_JSON_Table_Initial): New constant. + (Rep_JSON_Table_Increment): Likewise. + * debug.adb: Document -gnatd_j switch. + * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add + repinfo-input.o. + * gnat1drv.adb: Add with clause for Repinfo.Input. + Add with and use clauses for Sinput. + (Read_JSON_Files_For_Repinfo): New procedure. + (Gnat1drv1): Deal with -gnatd_j switch. + * repinfo-input.ad[sb]: New unit. + * snames.ads-tmpl (Name_Discriminant): New constant. + (Name_Operands): Likewise. + +2019-07-11 Justin Squirek + + * checks.adb (Apply_Accessibility_Check): Add check for constant + folded conditions on accessibility checks. + +2019-07-11 Arnaud Charlet + + * libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread): + Update comments. Add new version taking a Task_Id. + +2019-07-11 Hristian Kirtchev + + * bindo.adb: Update the section of switches and debugging + elaboration issues. + * bindo.ads: Add type Elaboration_Phase. + * bindo-augmentors.adb: Add use clause for + Bindo.Writers.Phase_Writers. + (Augment_Library_Graph): Signal the start and end of the + aubmentation phase. + * bindo-builders.adb: Add with and use clause for Bindo.Writers. + Add use clause for Bindo.Writers.Phase_Writers. + (Build_Invocation_Graph): Signal the start and end of the + invocation graph construction phase. + (Build_Library_Graph): Signal the start and end of the library + graph construction phase. + * bindo-diagnostics.adb: Add use clause for + Bindo.Writers.Phase_Writers. + (Diagnose_Cycle): Signal the start and end of the cycle + diagnostic phase. + * bindo-elaborators.adb: Add use clause for + Bindo.Writers.Phase_Writers. + (Elaborate_Units): Signal the start and end of the unit + elaboration phase. + * bindo-graphs.adb: Add use clause for + Bindo.Writers.Phase_Writers. + (Find_Components): Signal the start and end of the component + discovery phase. + (Find_Cycles): Signal the start and end of the cycle discovery + phase. + * bindo-units.adb: Add with and use clause for Bindo.Writers. + Add use clause for Bindo.Writers.Phase_Writers. + (Collect_Elaborable_Units): Signal the start and end of the unit + collection phase. + * bindo-validators.adb: Add with and use clause for + Bindo.Writers. Add use clause for Bindo.Writers.Phase_Writers. + (Validate_Cycles, Validate_Elaboration_Order, + Validate_Invocation_Graph, Validate_Library_Graph): Signal the + start and end of the libray graph validation phase. + * bindo-writers.ads, bindo-writers.adb: Add new nested package + Phase_Writers. + * debug.adb: Update the documentation of switch d_S. + +2019-07-11 Yannick Moy + + * sem_res.adb (Check_Argument_Order): Special case calls to + operators. + +2019-07-10 Dmitriy Anisimkov + + * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops + dependence on System.Streams.Stream_IO. + +2019-07-10 Ed Schonberg + + * sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of + the literal if prior analysis determined that its type is a + modular integer type. + +2019-07-10 Doug Rupp + + * init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2). + +2019-07-10 Ed Schonberg + + * sem_ch8.adb (Check_Constrained_Object): A record that is + limited because of the presence of a limited component is + constrained, and no subtype indiciation needs to be created for + it, just as is the case for declared limited records. + +2019-07-10 Yannick Moy + + * sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New + function to determine if a subprogram is protected. + * sem_spark.adb (Setup_Protected_Components): New procedure to + add protected components to the environment. + (Check_Callable_Body): Call the new Setup_Protected_Components. + (Check_Package_Spec): Merge local environment with enclosing one + when done. + +2019-07-10 Claire Dross + + * sem_spark.adb (Check_Expression): Allow digits constraints as + input. + (Illegal_Global_Usage): Pass in the entity. + (Is_Subpath_Expression): New function to allow different nodes + as inner parts of a path expression. + (Read_Indexes): Allow concatenation and aggregates with box + expressions. Allow attributes Update and Loop_Entry. + (Check_Expression): Allow richer membership test. + (Check_Node): Ignore bodies of generics. + (Get_Root_Object): Allow concatenation and attributes. + +2019-07-10 Hristian Kirtchev + + * sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to + discover the type of a full view discriminant. + +2019-07-10 Arnaud Charlet + + * doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's + doc for the depth switch. + +2019-07-10 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's + --source-line-breaks switch. + +2019-07-10 Justin Squirek + + * doc/gnat_rm/implementation_defined_attributes.rst: Add mention + of 'Image attribute with 'Img's entry to mention additional + added 2012 usage of Obj'Image. + * doc/gnat_rm/implementation_defined_pragmas.rst: Correct + mispelling of Async_Writers. + * gnat_rm.texi: Regenerate. + * sem_prag.adb (Analyze_Pragma): Correct mispelling of + Async_Writers. + * sem_util.adb (State_Has_Enabled_Property): Correct mispelling + of Async_Writers. + +2019-07-10 Simon Buist + + * sem_util.ads (Child_Prefix): New constant. + * sem_util.adb (Unique_Name): Add a special prefix to child + units that have a nested subprogram or package. + +2019-07-10 Arnaud Charlet + + * sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert. + +2019-07-10 Hristian Kirtchev + + * sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the + spelling in certain error messages. + (Check_Pragma_Implemented): Correct the spelling in certain + error messages. + +2019-07-10 Eric Botcazou + + * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre. + * libgnat/g-brapre.ads: New package specification. + * doc/gnat_rm/the_gnat_library.rst: Document it. + * gnat_rm.texi: Regenerate. + +2019-07-10 Yannick Moy + + * osint-c.adb (Set_File_Name): Always add extension for multiple + units per file mode. + +2019-07-10 Corentin Gay + + * sysdep.c: Put include directive for 'vxWorks.h' before any + other VxWorks headers. + +2019-07-10 Eric Botcazou + + * doc/gnat_rm/implementation_defined_attributes.rst + (Scalar_Storage_Order): Minor tweaks. Add note about debuggers. + * gnat_rm.texi: Regenerate. + +2019-07-10 Hristian Kirtchev + + * exp_ch4.adb (Expand_N_Case_Expression): Mark the generated + assignments to the temporary result as being OK because the + expansion of case expressions is correct by construction. + (Is_Copy_Type): Update the predicate to match the comment + within. + +2019-07-10 Hristian Kirtchev + + * bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb, + sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, + sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb, + sem_util.adb, warnsw.ads: Minor reformatting. + +2019-07-10 Joffrey Huguet + + * libgnat/a-strbou.ads, libgnat/a-strfix.ads, + libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global + contracts, contract cases, preconditions and postconditions to + procedures and functions. + +2019-07-10 Doug Rupp + + * sysdep.c (__gnat_is_file_not_found_error): Reformulate to also + work for vxworks7r2 SR0610. + +2019-07-10 Doug Rupp + + * env.c (__gnat_environ): Reformulate to also work for + vxworks7r2 SR0610. + +2019-07-10 Patrick Bernardi + + * Makefile.rtl: Handle vxworks7r2 ppc target + +2019-07-10 Hristian Kirtchev + + * bindo.adb: Update the section on switches. + * bindo-graphs.adb + (Add_Cycle, Add_Vertex_And_Complement): Remove. + (Create): The graph no longer needs a set of recorded cycles + because the cycles are not rediscovered in permuted forms. + (Cycle_End_Vertices): New routine. + (Destroy): The graph no longer needs a set of recorded cycles + because the cycles are not rediscovered in permuted forms. + (Destroy_Library_Graph_Vertex): Move to the library level. + (Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge): + Remove. + (Find_Cycles_From_Successor, Find_Cycles_From_Vertex, + Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines. + (Insert_And_Sort): Remove. + (Is_Elaborate_Body_Edge): Use predicate + Is_Vertex_With_Elaborate_Body. + (Is_Recorded_Cycle): Remove. + (Is_Vertex_With_Elaborate_Body): New routine. + (Normalize_And_Add_Cycle): Remove. + (Precedence): Rename to xxx_Precedence, where xxx relates to the + input. These versions better reflect the desired input + precedence. + (Record_Cycle): New routine. + (Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove. + (Trace_xxx): Update all versions to use debug switch -d_t. + (Trace_Component): New routine. + (Trace_Eol): Removed. + (Trace_Vertex): Do not output the component as this information + is already available when the component is traced. + (Unvisit, Visit): New routine. + * bindo-graphs.ads: Add new instance LGV_Lists. Remove instance + RC_Sets. Update the structure of type Library_Graph_Attributes + to remove the set of recorded cycles. + (Destroy_Library_Graph_Vertex): Move to the library level. + * bindo-writers.adb (Write_Component_Vertices): Output + information about the number of vertices. + * debug.adb: Document the use of binder switch -d_t. Update the + use of binder switch -d_T. + +2019-07-10 Yannick Moy + + * sem_spark.adb (Get_Root_Object): Replace precondition by error + message. + (Read_Indexes): Replace precondition by error message. + (Check_Callable_Body): Check only traversal function returns an + anonymous access type. + (Check_Expression): Issue error on unexpected expression as + path. + * sem_util.adb (First_Global): Fix access to global on + entry/task. + +2019-07-10 Javier Miranda + + * exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram. + (Expand_Call_Helper): Handle non-limited views when we check if + any formal is a class-wide interface type. + * exp_disp.adb (Expand_Interface_Actuals): Handle non-limited + views when we look for interface type formals to force "this" + displacement. + +2019-07-10 Ed Schonberg + + * sem_res.adb (Resolve_Equality_Op): Do not replace the resolved + operator by its alias if expander is not active, because the + operand type may not be frozen yet and its inherited operations + have not yet been created. + +2019-07-10 Hristian Kirtchev + + * bindo-elaborators.adb (Elaborate_Units): Set attribute + Elab_Position of all elaborated units. + (Set_Unit_Elaboration_Positions): New routine. + +2019-07-10 Gary Dismukes + + * exp_util.adb: Reformatting and a typo fix. + +2019-07-10 Yannick Moy + + * exp_util.adb (Remove_Side_Effects): Prefer renamings for + objects of possible owning type in GNATprove mode. + +2019-07-09 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declaration): If the object type + is a composite type that has a dynamic predicate and, the + expression in the declaration is an aggregate, the generated + predicate check must appear after the expanded code for the + aggregate, which will appear after the rewritten object + declarastion. + +2019-07-09 Justin Squirek + + * sem_eval.adb (Expr_Value_E): Add conditional to correctly + handle constant enumerated character types. + +2019-07-09 Eric Botcazou + + * libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper + type for SpinCount component. + +2019-07-09 Justin Squirek + + * exp_ch4.adb (Expand_N_Allocator): Add conditional to detect + the presence of anoymous access type allocators and issue a + warning if the appropriate warning flag is enabled. + * warnsw.ads: Add new warning flag for anonymous allocators + * warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings, + Set_Underscore_Warning_Switch): Register new flags. + (WA_Warnings): Register new flag as an "all warnings" switch + * usage.adb, + doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document new warning switches -gnatw_a and -gnatw_A. + * gnat_ugn.texi: Regenerate. + +2019-07-09 Ed Schonberg + + * sem_ch4.adb (Diagnose_Call): Improve error recovery when a + local subprogram name hides a possible candidate name declared + in a child package in the context of the current unit. + * sem_ch6.adb (Process_Formals): Protect against malformed + formal types when the parameter type does not denote an entity. + +2019-07-09 Hristian Kirtchev + + * bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a + DFS from an elaboration root whose corresponding unit lacks + elaboration code. This behavior mimics that of the old + elaboration order mechanism. + * bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the + vertex tracing within the functional branches of the routine. + This prevents spurious trace output. + (Has_No_Elaboration_Code): New routine. + (Trace_Cycle, Trace_Edge): Update the various Ids to use the + "standard" trace format. + * bindo-graphs.ads (Has_No_Elaboration_Code): New routine. + * bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code): + New routine. + +2019-07-09 Piotr Trojanek + + * ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb, + doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads, + exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb, + exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb, + fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb, + namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb, + prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb, + sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb, + sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb, + sinfo.ads: Replace ". " with ". ". Minor reformatting and typo + corrections. + * gnat_ugn.texi: Generate. + +2019-07-09 Hristian Kirtchev + + * bindo.ads: Move type Precedence_Kind from the private to the + visible part of the unit. + * bindo-augmentors.adb: Remove the use of global data as it is + bad practice. + (Augment_Library_Graph): Update the parameter profile. + (Is_Visited, Set_Is_Visited): Remove. + (Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the + parameter profile and comment on usage. + (Visit_Vertex): Likewise. Also keep track of which invocation + edge activates a task. + * bindo-augmentors.ads (Augment_Library_Graph): Update the + parameter profile and comment on usage. + * bindo-builders.adb (Create_Forced_Edge, + Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to + Add_Edge. + * bindo-diagnostics.adb: Add with end use clauses for Restrict + and Rident. + (Output_Dynamic_Model_Suggestions): Remove. + (Output_Invocation_Related_Suggestions): New routine. + (Output_Suggestions): Output all invocation-related suggestions + together. + * bindo-elaborators.adb: Remove types Comparator_Ptr and + Predicate_Ptr. + (Find_Best_Vertex): Update the parameter profile. + * bindo-graphs.adb (Activates_Task): New routine. + (Add_Body_Before_Spec_Edge): Update the call to + Add_Edge_With_Return. + (Add_Edge): Update the parameter profile and the call to + Add_Edge_With_Return. + (Add_Edge_With_Return): Update the parameter profile and comment + on usage. + (At_Least_One_Edge_Satisfies): New routine. + (Contains_Elaborate_All_Edge): Reimplement. + (Contains_Static_Successor_Edge, Contains_Task_Activation): New + routine. + (Contains_Weak_Static_Successor): Remove. + (Is_Static_Successor_Edge): New routine. + * bindo-graphs.ads: Add types LGE_Predicate_Ptr, + LGV_Comparator_Ptr, and LGV_Predicate_Ptr. Update type + Library_Graph_Edge_Attributes to capture whether an invocation + edge activates a task. Update the value of + No_Library_Graph_Edge_Attributes. + (Activates_Task): Update the parameter profile and comment on + usage. + (Contains_Static_Successor_Edge, Contains_Task_Activation): New + routines. + (Contains_Weak_Static_Successor): Remove. + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: + Update the documentation to reflect the new task-related advice. + * gnat_ugn.texi: Regenerate. + +2019-07-09 Piotr Trojanek + + * exp_util.adb (Containing_Package_With_Ext_Axioms): Replace + low-level Ekind test with a high-level wrapper. + +2019-07-09 Arnaud Charlet + + * libgnat/s-memory.adb: Disable calls to Abort defer/undefer + when ZCX_By_Default. + +2019-07-09 Javier Miranda + + * sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are + not allowed for a derivation of a generic type. Extend the + current test to check that none of the parents is a generic + type. + +2019-07-09 Hristian Kirtchev + + * exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb, + sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor + reformatting. + +2019-07-09 Ed Schonberg + + * sem_res.adb (Resolve_Equality_Op): If the node was overloaded, + set properly the entity to which the node has been resolved. The + original entity is the first one found during analysis, and is + not necessarily the resolved one. + (Resolve_Op_Not): If the argument of negation is an overloaded + equality operation, call its resolution directly given that the + context type does not participate in overload resolution. + +2019-07-09 Hristian Kirtchev + + * bindo.adb: Remove with and use clauses for Debug. Add with + and use clauses for Opt. + (Find_Elaboration_Order): Enable the v4.0 elaboration order. The + v3.0 mechanism is now available under binder switch -H. + * bindusg.adb (Display): Enable switch -H. + * debug.adb: Free compiler switch -gnatd_G. Free binder switch + -d_N. + * sem_elab.adb: Update the section on switches to remove + -gnatd_G. + (Invocation_Graph_Recording_OK): The invocation graph is now + unconditionally recorded in ALI files. + * switch-b.adb (Scan_Binder_Switches): Scan switch -H. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Update the documentation on compiler switches related to + elaboration. Update the documentation on binder switches to + include switch -H. + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update + the documentation on elaboration order handling in GNAT. + * gnat_ugn.texi: Regenerate. + +2019-07-09 Eric Botcazou + + * repinfo.adb (List_Entities): Disregard formals altogether. + (List_Name): Properly escape the double quote in the JSON + output. + +2019-07-09 Javier Miranda + + * exp_util.adb (Remove_Side_Effects): Preserve the + Do_Range_Check flag. + +2019-07-09 Yannick Moy + + * sinfo.ads: Refine comment for Do_Range_Check. + +2019-07-09 Yannick Moy + + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand + attribute reference on Enum_Rep. + +2019-07-09 Ed Schonberg + + * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the + case where the actual for a formal package in an instance is the + current instance of an enclosing generic package. + (Check_Formal_Packages): If the formal package declaration is + box-initialized or lacks associations altogether, no internal + instance was created to verify conformance, and there is no + validating package to remove from tree. + +2019-07-09 Yannick Moy + + * freeze.adb (Build_Renamed_Body): Do not set body to inline in + GNATprove mode. + +2019-07-09 Yannick Moy + + * exp_util.adb (Expand_Subtype_From_Expr): Still expand the type + of static expressions in GNATprove_Mode. + * sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete + special case for GNATprove_Mode. + +2019-07-09 Piotr Trojanek + + * doc/gnat_rm/the_gnat_library.rst, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads, + libgnat/g-regexp.ads, libgnat/g-regpat.ads, + libgnat/g-spipat.ads, libgnat/s-os_lib.ads, + libgnat/s-regexp.ads: Reword "wild card" to "wildcard". + * gnat_rm.texi, gnat_ugn.texi: Regenerate. + +2019-07-09 Yannick Moy + + * sem_spark.adb (Check_Expression): Handle correctly implicit + assignments as part of allocators and (extension) aggregates. + (Get_Root_Object): Adapt for new path expressions. + (Is_Path_Expression): Return True for (extension) aggregate. + +2019-07-09 Piotr Trojanek + + * einfo.ads: Fix a typo. + +2019-07-09 Ed Schonberg + + * sem_util.adb (Scope_Within_Or_Same): Handle properly task + bodies and protected bodies, so that local variables within have + their proper scopes after these constructs have been rewritten + during expansion. This patch resembles but is not identical to + the code in Scope_Within. + +2019-07-09 Arnaud Charlet + + * gnat1drv.adb (Adjust_Global_Switches): Set + Dynamic_Elaboration_Checks to True in CodePeer mode. + +2019-07-09 Yannick Moy + + * sem_spark.adb (Get_Perm_Or_Tree): Issue an error when + encountering unknown global variable. + +2019-07-09 Yannick Moy + + * sem_spark.adb (Check_Expression): Change signature to take an + Extended_Checking_Mode, for handling read permission checking of + sub-expressions in an assignment. + (Check_Parameter_Or_Global): Adapt to new behavior of + Check_Expression for mode Assign. + (Check_Safe_Pointers): Do not analyze generic bodies. + (Check_Assignment): Separate checking of the target of an + assignment. + +2019-07-09 Eric Botcazou + + * repinfo.ads (JSON format): Adjust. + * repinfo.adb (Need_Blank_Line): Rename to... + (Need_Separator): ...this. + (Blank_Line): Rename to... + (Write_Separator): ...this and add JSON specific handling. + (List_Array_Info): Adjust to above renaming. + (List_Object_Info): Likewise. + (List_Record_Info): Likewise. + (List_Subprogram_Info): Likewise. + (List_Type_Info): Likewise. + (List_Entities): Do not set Need_Blank_Line. + (List_Rep_Info): Set Need_Separator and add JSON specific + handling. Output a single JSON stream in the normal case. + +2019-07-09 Arnaud Charlet + + * doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on + -fdump-ada-spec now that we generate Ada 2012. + * gnat_ugn.texi: Regenerate. + +2019-07-08 Eric Botcazou + + * repinfo.adb (List_Common_Type_Info): New procedure extracted + from... + (List_Type_Info): ...here. Call it for the common information, + start with a blank line and output the linker section at the + end, if any. + (List_Mechanisms): Rename to... + (List_Subprogram_Info): ...this. + (List_Array_Info): Call List_Common_Type_Info. + (List_Entities): Adjust to above change and renaming. + (List_Record_Info): Call List_Common_Type_Info. + +2019-07-08 Dmitriy Anisimkov + + * libgnat/g-sercom.ads + (Serial_Port_Descriptor): New type. + (Serial_Port): Add a comment, make it hold a + Serial_Port_Descriptor. + (To_Ada, To_C): New procedures. + (Port_Data, Port_Data_Access): Remove types. + * libgnat/g-sercom.adb (To_Ada): New stub. + * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb: + Update implementations accordingly. + * s-oscons-tmplt.c: Bind Serial_Port_Descriptor to + System.Win32.HANDLE on Windows, and to Interfaces.C.int on + Linux. Add "Interfaces.C." prefix for other basic integer type + bindings. + * xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix + for subtypes generation. + +2019-07-08 Arnaud Charlet + + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Update documentation on No_Exceptions restriction. + * gnat_rm.texi: Regenerate. + +2019-07-08 Dmitriy Anisimkov + + * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid. + +2019-07-08 Piotr Trojanek + + * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect + package and subprogram bodies. + +2019-07-08 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation + of ignored GNATpp switch. + +2019-07-08 Hristian Kirtchev + + * doc/gnat_rm/implementation_defined_pragmas.rst: + Update the documentation of pragma Initialize_Scalars. + * gnat_rm.texi: Regenerate. + +2019-07-08 Javier Miranda + + * exp_ch4.adb (Tagged_Membership): Fix regression silently + introduced in r260738 that erroneouslusy causes the evaluation + to True of the membership test when the left operand of the + membership test is a class-wide interface object and the right + operand is a type that implements such interface type. + +2019-07-08 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not + register an address clause when its prefix denotes a generic + formal object. + +2019-07-08 Hristian Kirtchev + + * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence + of an Elaborate_All edge before iterating over the edges of the + cycle. + (Output_Elaborate_Body_Transition): Update the parameter profile + and the comment on usage. Add a missing case where the edge is + within the context of an Elaborate_All. + (Output_Transition): Update the call to + Output_Elaborate_Body_Transition. + * bindo-graphs.ads, bindo-graphs.adb + (Contains_Elaborate_All_Edge): New routine. + +2019-07-08 Piotr Trojanek + + * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for + the fake __HEAP entity. + +2019-07-08 Daniel Mercier + + * gnat1drv.adb: Suppress warnings on memory representation in + CodePeer compiler mode. + +2019-07-08 Nicolas Roche + + * rtinit.c (__gnat_runtime_initialize): Remove dependency on + CommandLineToArgvW. + +2019-07-08 Doug Rupp + + * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7. + +2019-07-08 Dmitriy Anisimkov + + * Makefile.rtl: Use g-sercom__linux.adb for all linuxes. + +2019-07-08 Yannick Moy + + * expander.adb (Expand): Do not reset Analyzed flag always. + * sem_eval.adb (Fold_Ureal): Mark node as analyzed. + +2019-07-08 Ed Schonberg + + * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice + the assignment statement that computes the delay value, to + prevent improper tree sharing when the value is a type + conversion and Float_Overflow checks are enabled. + +2019-07-08 Hristian Kirtchev + + * bindo.adb: Update the section on terminology to include new + concepts. Update the section on switches to include new + entries. + * bindo.ads: Add type Precedence_Kind. + * bindo-builders.adb: Add with and use clauses for Debug and + Bindo.Validators. Add use clauses for + Bindo.Validators.Invocation_Graph_Validators and + Bindo.Validators.Library_Graph_Validators. + (Build_Invocation_Graph): Validate the graph immediately after + it was built. + (Build_Library_Graph): Update the parameter profile. The + creation of the graph is now elaboration model-agnostic. + Validate the graph immediately after it was built. + (Create_With_Edge): Create regular with edges for Elaborate and + Elaborate_All edges when the appropriate debug switches are in + effect. + * bindo-builders.ads (Build_Library_Graph): Update the parameter + profile. + * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of + an Elaborate_All edge throughout the inspection of the cycle's + edges. + (Output_Dynamic_Model_Suggestions): Output the suggestion only + when the cycle contains at least one weak edge where the + successor was statically elaborated. + (Output_Elaborate_Body_Transition, Output_Forced_Transition, + Output_With_Transition): Update the assertions. + * bindo-elaborators.adb: Remove use clauses for + Bindo.Validators.Invocation_Graph_Validators and + Bindo.Validators.Library_Graph_Validators. Remove strings + Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg. + Remove type String_Ptr. + (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set + Create_Component_Candidates_Set): Remove. + (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine. + (Elaborate_Component): Update the parameter profile and the + comment on usage. Reimplement the elaboration of a component. + The algorithm will now attempt to elaborate as many vertices + possible. If this is not possible, and a weakly elaborable + vertex is available use unit was compiled using the dynamic + model, the algorithm will elaborate it. + (Elaborate_Library_Graph): Reimplement the elaboration of the + graph. The algorithm will now attempt to elaborate as many + vertices along with their components as possible. If this is not + possible, and a weakly elaborable vertex is available use unit + was compiled using the dynamic model, the algorithm will + elaborate it along with its component. + (Elaborate_Units): Merge with the functionality of + Elaborate_Units_Common. + (Elaborate_Units_Common, Elaborate_Units_Dynamic, + Elaborate_Units_Static): Remove. + (Elaborate_Vertex): Update the parameter profile and the comment + on usage. Reimplemented. + (Find_Best_Candidate): Remove. + (Find_Best_Elaborable_Vertex, Find_Best_Vertex, + Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body, + Insert_Elaborable_Successor, Insert_Vertex): New routines. + (Is_Better_Candidate): Remove. + (Is_Better_Elaborable_Vertex, + Is_Better_Weakly_Elaborable_Vertex, + Is_Suitable_Elaborable_Vertex, + Is_Suitable_Weakly_Elaborable_Vertex): New routines. + (Trace_Candidate_Vertices): Remove. + (Trace_Component): Output the number of strong and weak + predecessors. + (Trace_Unelaborated_Vertices): Remove. + (Trace_Vertex): Output the number of strong and weak + predecessors. + (Trace_Vertices): New routine. + (Update_Successor, Update_Successors): Update the parameter + profile and the comment on usage. + * bindo-graphs.adb: Remove type Precedence_Kind. + (Add_Edge_With_Return): Update the increment of pending + predecessors. + (Add_Vertex): Provide default values for strong and weak + predecessors. + (Complementary_Vertex): Move the initial declaration to the + spec. Update the parameter profile and the comment on usage. + (Contains_Weak_Static_Successor): New routine. + (Create): Update the parameter profile. The creation of the + graph is now elaboration model-agnostic. + (Decrement_Pending_Predecessors): Update the parameter profile + and the comment on usage. Reimplemented. + (Delete_Edge): Update the decrement of pending predecesors. + (Has_Elaborate_Body): Do not treat a vertex as being subject to + Elaborate_Body when a debug switch is in effect. + (Increment_Pending_Predecessors): Update the parameter profile + and the comment on usage. Reimplemented. + (Is_Elaborable_Component): Reimplemented. + (Is_Elaborable_Vertex): Move the initial declaration to the + spec. Reimplemented. + (Is_Elaborate_Body_Pair): New routine. + (Is_Dynamically_Elaborated): Update the parameter profile. + Reimplemented. + (Is_Weakly_Elaborable_Vertex): New routine. + (Pending_Predecessors): Removed. + (Pending_Predecessors_For_Elaboration, + Pending_Strong_Predecessors, Pending_Weak_Predecessors, + Update_Pending_Predecessors): New routines. + (Update_Pending_Predecessors_Of_Components): Update the + increment of pending predecessors. + * bindo-graphs.ads: Update the components of type + Component_Attributes. Update the components of type + Library_Graph_Attributes. Update the components of type + Library_Graph_Vertex_Attributes. Update the initialization of + No_Component_Attributes. Update the initialization of + No_Library_Graph_Vertex_Attributes. + (Complementary_Vertex, Contains_Weak_Static_Successor): New + routines. + (Create): Update the parameter profile and the comment on usage. + (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated): + Update the parameter profile and the comment on usage. + (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New + routines. + (Pending_Predecessors): Removed. + (Pending_Predecessors_For_Elaboration, + Pending_Strong_Predecessors, Pending_Weak_Predecessors): New + routines. + * bindo-writers.adb (Write_Components): Moved from the spec. + (Write_Component): Output the strong and weak predecessors. + (Write_Library_Graph): Output the components as part of the + graph. + (Write_Library_Graph_Vertex): Output the strong and weak + predecessors. + * bindo-writers.ads (Write_Components): Moved to the body. + * debug.adb: Add and document new GNATbind switches -d_a, -d_b, + -d_e. + * bindo-validators.adb: Minor reformattings. + +2019-07-08 Bob Duff + + * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate): + Support additional data rates. + +2019-07-08 Olivier Hainque + + * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request + DECL_ARTIFICIAL_P on elab proc declarations. + +2019-07-08 Eric Botcazou + + * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and + Not_In_Extended_Main local exceptions. + (List_Structural_Record_Layout): For an extension, raise the + former if the parent subtype has not been built and the latter + if it is not declared in the main source unit. Fall back to the + flat layout if either exception has been raised. + +2019-07-08 Ed Schonberg + + * libgnat/a-strfix.adb (Delete): The RM describes the semantics + of Delete as equivalent to that of Replace_String with a null + argument. As a result, deleting a null string that starts past + the end of its argument is a noop and must not raise + Index_Error. + +2019-07-08 Javier Miranda + + * exp_disp.adb (Register_Primitive): When registering a + primitive in the secondary dispatch table, handle primitive + inherited through several levels of type derivation (required to + properly handle inherited 'null' primitive). + +2019-07-08 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of + preprocessor directives in GNATpp. + +2019-07-08 Javier Miranda + + * gnat1drv.adb (Post_Compilation_Validation_Checks: + Validate_Compile_Time_Warning_Errors is now located in sem_prag + (instead of sem_ch13). + * sem_ch13.ads (Validate_Compile_Time_Warning_Error, + Validate_Compile_Time_Warning_Errors): Move to sem_prag. + * sem_ch13.adb + (Compile_Time_Warnings_Errors): Move to sem_prag. + (Initialize): Remove initialization of table + Compile_Time_Warning_Errors. + (Validate_Compile_Time_Warning_Error, + Validate_Compile_Time_Warning_Errors): Move to sem_prag. + * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New + procedure. + * sem_prag.adb (Initialize): Initialize table + Compile_Time_Warning_Errors. + +2019-07-08 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications): For a + pre/postcondition of a generic subprogram declaration, do not + use Relocate_Node on the aspect expression to construct the + corresponding attribute specification, to prevent tree anomalies + when the expression is a call with named actual parameters. + +2019-07-08 Javier Miranda + + * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas + used to report user defined compile time warning or errors + handle 'Size for types with known static RM size. + +2019-07-08 Justin Squirek + + * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for + the building of image tables. + (Expand_Image_Attribute): Minor cleanup. + +2019-07-08 Dmitriy Anisimkov + + * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve + documentation. + (Get_Socket_Option, Set_Socket_Option): Remove default value for + the Level formal. + +2019-07-08 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an + unanalized aspect in a generic context that has not been + analyzed yet, if the aspect applies to a type, place the type on + the scope stack to make its components visible, before checking + conformance with the version of the expression analyzed at the + freeze point. + +2019-07-05 Justin Squirek + + * checks.adb (Apply_Accessibility_Check): Add logic to fetch the + function result accessibility level if one is required within + the generated check. + * exp_ch6.adb (Needs_Result_Accessibility_Level): Modify + controlling elsif block to handle more cases such as anonymous + access results and disable checking for coextensions. + +2019-07-05 Ed Schonberg + + * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal + accept statement for an enclosing entry abandon analysis to + prevent scope mismatches and potential infinite loops in + compiler. + +2019-07-05 Hristian Kirtchev + + * ali.adb (For_Each_Invocation_Construct, + For_Each_Invocation_Relation): New version. + (Scan_ALI): Initialize field Invocation_Graph_Encoding. + (Set_Invocation_Graph_Encoding): Update the setting of the + invocation graph encoding. + * ali.ads: Move field Invocation_Graph_Encoding from Unit_Record + to ALI_Record because the encoding applies to the whole ALI, + rather than one of the units (spec or body) for which the ALI + file was created. + (For_Each_Invocation_Construct, For_Each_Invocation_Relation): + New version. + * bindo.adb: Update the section on switches. Complete the + section of debugging elaboration order issues. + (Find_Elaboration_Order): Prepare the routine for the switch + from the old to the new elaboration order mechanism. + * bindo-diagnostics.adb (Find_And_Output_Invocation_Paths): + Manage a visited set used by Visit_Vertex. + (Output_All_Cycles_Suggestions, + Output_Dynamic_Model_Suggestions): Clarify the nature of the + suggested switch. + (Output_Elaborate_Body_Transition): Update the diagnostic to + emit a better message. + (Output_Forced_Suggestions, Output_Full_Encoding_Suggestions): + Clarify the nature of the suggested switch. + (Visit_Vertex): Update the parameter profile to add a set of + invokers visited during the transition. This set prevents + infinite exploration of the graph in case the invocations are + recursive. + * bindo-elaborators.adb: Add a use clause for + Bindo.Writers.Dependency_Writers. + (Elaborate_Units_Common): Output the library graph after it has + been augmented with invocation edges. Output just the components + instead of outputting the whole library graph again. + (Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the + dependencies as expressed in the library graph. + * bindo-units.adb (Invocation_Graph_Encoding): Update the + extraction of the invocation graph encoding. + * bindo-writers.adb: Add with and use clauses for Binderr and + Butil. + (palgc, plgc): New debug routine. + (Write_Components): Moved to the spec. Add a header for the + output. + (Write_Dependencies, Write_Dependencies_Of_Vertex, + Write_Dependency_Edge): New routine. + (Write_Elaboration_Order): Update the logic to follow the format + of Binde's order output. + (Write_Library_Graph): Do not output the components every time + the graph is written. + (Write_Unit): Output the invocation graph encoding of the unit. + Output the invocation constructs and relations for the unit + only. + * bindo-writers.ads (Write_Components): Moved from the body. + (Write_Dependencies): New routine. + * bindusg.adb: Prepare the routine for the switch from the old + to the new elaboration order mechanism. + * debug.adb: Binder switch -d_O is now not associated with any + functionality. + * einfo.adb (Is_Elaboration_Target): The attribute applies to + packages, as specified by the comment on the attribute usage. + * opt.ads: Add a global flag which controls the choice between + the new and the legacy elaboration order mechanism. + * sem_elab.adb: Add Package_Target to type Target_Kind. + (Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure, + Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios, + Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the + entity of the main unit. + (Create_Package_Rep): New routine. + (Create_Target_Rep): Add processing for packages. + (Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use + Main_Unit_Entity to obtain the entity of the main + unit. + (Invocation_Graph_Recording_OK): Prepare the routine for the + switch from the old to the new elaboration order mechanism. + (Main_Unit_Entity): New routine. + (Meet_Elaboration_Requirement, + Process_Conditional_ABE_Variable_Reference): Use + Main_Unit_Entity to obtain the entity of the main unit. + (Process_Invocation_Instantiation): New routine. + (Process_Invocation_Scenario): Add processing for + instantiations. + * switch-b.adb (Scan_Binder_Switches): Prepare the routine for + the switch from the old to the new elaboration order mechanism. + +2019-07-05 Joffrey Huguet + + * libgnat/a-textio.adb: Add abstract state refinment. + * libgnat/a-textio.ads: Add File_System abstract state. Add + global contracts, contract cases, preconditions and + postconditions to procedures and functions. + (Set_Input, Set_Output, Set_Error, Standard_Input, + Standard_Output, Standard_Error, Current_Input, Current_Output, + Current_Error): Turn SPARK_Mode off. + (Get_Line): Turn SPARK_Mode off on Get_Line functions. + * libgnat/a-tideio.ads, libgnat/a-tienio.ads, + libgnat/a-tifiio.ads, libgnat/a-tiflio.ads, + libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global + contracts, contract cases, preconditions and postconditions to + procedures and functions. + +2019-07-05 Arnaud Charlet + + * doc/gnat_ugn/platform_specific_information.rst: Refresh doc on + installing from the command line on Windows. Remove obsolete + part. + * gnat_ugn.texi: Regenerate. + +2019-07-05 Vasiliy Fofanov + + * libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with + the correct one. Also capitalize references to False + throughout. + +2019-07-05 Eric Botcazou + + * exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual + parameters of function calls here either. + +2019-07-05 Hristian Kirtchev + + * bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb, + exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb, + libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads, + sem_util.adb: Minor reformatting. + +2019-07-05 Ed Schonberg + + * sem_ch13.adb (Build_Predicate_Functions): If a subtype that + carries a static predicate aspect is frozen immediately after + its declaration, ensure that the generated function body created + for predicate checking is inserted after the corresponding + subprogram declaration, which is created at the point the + declaration is elaborated. + +2019-07-05 Hristian Kirtchev + + * exp_ch7.adb (Cleanup_Record): Use the underlying type when + checking for components with tasks. + +2019-07-05 Arnaud Charlet + + * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread. + +2019-07-05 Ed Schonberg + + * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit + range checks when the index type of the bit-packed array is an + enumeration type with a non-standard representation, + +2019-07-05 Hristian Kirtchev + + * sem_res.adb (Is_Control_Flow_Statement): Delay statements + contain an expression, which in turn may have side effects and + affect the infinite recursion. As a result, delay statements + should not be treated specially. + +2019-07-05 Arnaud Charlet + + * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads, + libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads, + libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads, + libgnarl/s-linux__sparc.ads: Fix typos in comments. + +2019-07-05 Hristian Kirtchev + + * sem_res.adb (Check_Infinite_Recursion): Reimplemented. + (Enclosing_Declaration_Or_Statement, + Invoked_With_Different_Arguments, Is_Conditional_Statement, + Is_Control_Flow_Statement, Is_Immediately_Within_Body, + Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement, + Preceded_By_Control_Flow_Statement, + Within_Conditional_Statement): New routines. + +2019-07-05 Javier Miranda + + * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an + accessibility check when the conversion is an access to + class-wide interface type and it is an actual parameter. + * exp_ch6.adb (Expand_Call_Helper): Add documentation on the + accessibility level of an anonymous allocator defining the value + of an access parameter. + * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add + support for an anonymous allocator whose type is that of a + stand-alone object of an anonymous access to object type. + +2019-07-05 Piotr Trojanek + + * einfo.ads, sem_res.adb: Typo fixes in comments. + +2019-07-05 Bob Duff + + * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for + Has_Foreign_Convention to the imported case only. If a + build-in-place function is exported, and called from Ada code, + build-in-place protocols should be used. + +2019-07-05 Ed Schonberg + + * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope + is a loop, continue climbing the scope stack to find the + enclosing subprogram. + (Gather_Components): Handle properly a choice in a record + aggregate that is given by a subtype with a static predicate. + +2019-07-05 Javier Miranda + + * debug.adb (-gnatd.K): Leave available this switch. + * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms): + Remove. + * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag, + Contract_Only_Body_Nodes, Get_Contract_Only_Body, + Is_Contract_Only_Body, Set_Contract_Only_Body): Remove. + +2019-07-05 Pierre-Marie de Rodat + + * libgnat/a-strunb.ads: Import documentation from the RM + +2019-07-05 Pierre-Marie de Rodat + + * libgnat/a-strfix.ads: Import documentation from the RM + +2019-07-05 Yannick Moy + + * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast + switches. + +2019-07-05 Hristian Kirtchev + + * ali.adb: Relocate types Invocation_Construct_Record, + Invocation_Relation_Record, and Invocation_Signature_Record to + the body of ALI. Relocate tables Invocation_Constructs, + Invocation_Relations, and Invocation_Signatures to the body of + ALI. Remove type Body_Placement_Codes. Add new types + Declaration_Placement_Codes, and + Invocation_Graph_Encoding_Codes. Update the literals of type + Invocation_Graph_Line_Codes. + (Add_Invocation_Construct): Update the parameter profile. Add an + invocation construct built from all attributes provided. + (Add_Invocation_Relation): Update the parameter profile. Add an + invocation relation built from all attributes provided. + (Body_Placement): New routine. + (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind): + Removed. + (Code_To_Declaration_Placement_Kind, + Code_To_Invocation_Graph_Encoding_Kind, Column, + Declaration_Placement_Kind_To_Code, Extra, + For_Each_Invocation_Construct, For_Each_Invocation_Relation, + Invocation_Graph_Encoding, + Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line, + Locations, Name): New routine. + (Scan_Invocation_Construct_Line): Reimplement the scanning + mechanism. + (Scan_Invocation_Graph_Attributes_Line): New routine. + (Scan_Invocation_Graph_Line): Use a case statement to dispatch. + (Scan_Invocation_Relation_Line): Reimplement the scanning + mechanism. + (Scope): New routine. + (Set_Invocation_Graph_Encoding, Signature, Spec_Placement, + Target): New routine. + * ali.ads: Add new type Invocation_Graph_Encoding_Kind. Add + component Invocation_Graph_Encoding to type Unit_Record. + Relocate various types and data structures to the body of ALI. + (Add_Invocation_Construct, Add_Invocation_Relation): Update the + parameter profile. + (Body_Placement): New routine. + (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind): + Removed. + (Code_To_Declaration_Placement_Kind, + Code_To_Invocation_Graph_Encoding_Kind, Column, + Declaration_Placement_Kind_To_Code, Extra, + For_Each_Invocation_Construct, For_Each_Invocation_Relation, + Invocation_Graph_Encoding, + Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line, + Locations, Name, Scope, Set_Invocation_Graph_Encoding, + Signature, Spec_Placement, Target): New routine. + * bindo.adb: Add with clause for Binde. Add with and use + clauses for Debug. Update the documentation. Add new switches. + (Find_Elaboration_Order): Dispatch to the proper elaboration + mechanism. + * bindo-augmentors.adb: + Remove with and use clauses for GNAT and GNAT.Sets. Remove + membership set VS. Update the parameter profiles of most + routines to use better parameter names. Update the + implementation of most routine to use the new parameter names. + Remove various redundant assertions. + * bindo-builders.adb: Use better names for instantiated data + structures. Update all references to these names. Update the + parameter profiles of most routines to use better parameter + names. Update the implementation of most routine to use the new + parameter names. + (Build_Library_Graph): Update the parameter profile. Update the + call to Create. + (Create_Vertex): Reimplemented. + (Declaration_Placement_Vertex): New routine. + * bindo-builders.ads (Build_Library_Graph): Update the parameter + profile and comment on usage. + * bindo-diagnostics.adb: Almost a new unit. + * bindo-diagnostics.ads: Add a use clause for + Bindo.Graphs.Invocation_Graphs. Remove package + Cycle_Diagnostics. + (Diagnose_Circularities): New routine. + * bindo-elaborators.adb: Remove the with and use clauses for + Binderr and GNAT.Sets. Remove the use clause for + Bindo.Diagnostics.Cycle_Diagnostics. Remove membership set VS. + Update the parameter profiles of most routines to use better + parameter names. Update the implementation of most routine to + use the new parameter names. (Elaborate_Units_Common): Update + the parameter profile. Pass an infication to the library graph + builder whether the dynamic model is in effect. + (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use + Diagnose_Circularities to provide diagnostics. + (Update_Successor): Use routine In_Same_Component to determine + whether the predecessor and successor reside in different + components. + * bindo-graphs.adb: Add with and use clauses for Butil, Debug, + Output, and Bindo.Writers. Remove with and use clauses for + GNAT.Lists. Update the parameter profiles of most routines to + use better parameter names. Update the implementation of most + routine to use the new parameter names. Remove various + redundant assertions. Remove doubly linked list EL. Add new + type Precedence_Kind. + (Add_Cycle): New routine. + (Add_Vertex): Update the parameter profile. Update the creation + of vertex attributes. + (Add_Vertex_And_Complement, Body_Vertex, Column, + Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New + routines. + (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle, + Destroy_Library_Graph_Edge, Extra, File_Name, + Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge, + Find_Cycles, Find_First_Lower_Precedence_Cycle, + Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle, + Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle, + Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort, + Invocation_Edge_Count, Invocation_Graph_Encoding, + Is_Cycle_Initiating_Edge, Is_Cyclic_Edge, + Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge, + Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge, + Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge, + Is_Dynamically_Elaborated, Is_Elaborate_All_Edge, + Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines. + (Is_Existing_Predecessor_Successor_Relation): Removed. + (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle, + Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind, + Length): New routine. + (Lib_Vertex): Removed. + (Line, Links_Vertices_In_Same_Component, + Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle, + Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence, + Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines. + (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge. + (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex. + (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge. + (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex. + (Set_Is_Existing_Predecessor_Successor_Relation): Removed. + (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge, + Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge, + Trace_Eol, Trace_Vertex): New routines. + * bindo-graphs.ads: Add with and use clauses for Types and + GNAT.Lists. Update the parameter profiles of most routines to + use better parameter names. Update the implementation of most + routine to use the new parameter names. Add the new + instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists, + LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets. Add new type + Library_Graph_Cycle_Id along with an empty and initial value. + Remove component Lib_Vertex and add new components Body_Vertex + and Spec_Vertex to type Invocation_Graph_Vertex_Attributes. Add + new type Library_Graph_Cycle_Kind. Add new iterators + All_Cycle_Iterator and Edges_Of_Cycle_Iterator. Add new type + Library_Graph_Cycle_Attributes. Add new components + Cycle_Attributes, Cycles, and Dynamically_Elaborated to type + Library_Graph_Attributes. + (Body_Vertex, Column, Destroy_Invocation_Graph_Edge, + Destroy_Library_Graph_Cycle_Attributes, + Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles, + Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle, + Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle, + In_Same_Component, Invocation_Edge_Count, + Invocation_Graph_Encoding, Is_Dynamically_Elaborated, + Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge, + Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge, + Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind): + New routines. + (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present, + Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines. + * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New + routines. + * bindo-units.ads: Add new instantiated data structure + Unit_Sets. + (File_Name, Invocation_Graph_Encoding): New routine. + * bindo-validators.adb: Remove with and use clauses for GNAT and + GNAT.Sets. Remove membership set US. Update the parameter + profiles of most routines to use better parameter names. Update + the implementation of most routine to use the new parameter + names. + (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles, + Validate_Invocation_Graph_Vertex): Remove the validation of + component Lib_Vertex. Add the validation of components + Body_Vertex and Spec_Vertex. + (Write_Error): New routine. + * bindo-validators.ads (Validate_Cycles): New routine. + * bindo-writers.adb: Update the parameter profiles of most + routines to use better parameter names. Update the + implementation of most routine to use the new parameter names. + (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines. + (Write_Invocation_Graph_Vertex): Remove the output of component + Lib_Vertex. Add the output of components Body_Vertex and + Spec_Vertex. + * bindo-writers.ads (Write_Cycles): New routine. + * debug.adb: Use binder switches -d_C and -d_P, add + documentation on their usage. + * gnatbind.adb: Remove with and use clauses for Binde. Delegate + the choice of elaboration mechanism to Bindo. + * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations, + Name, Placement, Scope, Signature, Target): Removed. + (Write_Invocation_Graph): Moved at the top level. + (Write_Invocation_Graph_Attributes): New routine. + (Write_Invocation_Relation, Write_Invocation_Signature): Moved + at the top level. + * lib-writ.ads: Add a documentation section on invocation graph + attributes. + * sem_elab.adb (Body_Placement_Of): New routine. + (Declare_Invocation_Construct): Update the call to + Add_Invocation_Construct. + (Declaration_Placement_Of_Node): New routine. + (Get_Invocation_Attributes): Correct the retrieval of the + enclosing subprogram where the postcondition procedure lives. + (Placement_Of, Placement_Of_Node): Removed. + (Record_Invocation_Graph): Record the encoding format used. + (Record_Invocation_Graph_Encoding): New routine. + (Record_Invocation_Relation): Update the call to + Add_Invocation_Relation. + (Spec_Placement_Of): Removed. + * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine. + +2019-07-05 Ed Schonberg + + * checks.adb (Apply_Predicate_Check): Except within the + subprogram body that defines the formal, do not apply predicate + check on a formal IN parameter: such a check is redundant and + its expansion can lead to out-of-scope references when it is + originates in a function call in a precondition, + +2019-07-05 Yannick Moy + + * sem_res.adb (Resolve_Call): Cannot inline in quantified + expressions. + * sem_util.adb, sem_util.ads (In_Quantified_Expression): New + function. + +2019-07-05 Bob Duff + + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Fix typo. + * gnat_rm.texi: Regenerate. + +2019-07-05 Bob Duff + + * exp_attr.adb (Input): Take the No_Stream_Optimizations + restriction into account. + +2019-07-05 Claire Dross + + * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal + vectors are now always bounded so that they do not need to be + limited anymore. + +2019-07-05 Dmitriy Anisimkov + + * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New + function. + +2019-07-04 James Clarke + + * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type + definition public. + (CLOCK_REALTIME): Make value public. + +2019-07-04 Javier Miranda + + * exp_tss.adb (Init_Proc): Adding missing support for access to + subprograms and access to protected subprograms of non-default + C++ constructors. + +2019-07-04 Eric Botcazou + + * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to + set the validity settings in CodePeer mode. + * par-load.adb (Load): Remove all code dealing with validity + settings. + * validsw.ads (Validity_Check_Copies): Alphabetize. + * validsw.adb (Reset_Validity_Check_Options): Set all options to + off. + (Save_Validity_Check_Options): Save all options. + +2019-07-04 Hristian Kirtchev + + * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb, + exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb, + rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb, + sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor + reformatting. + +2019-07-04 Joffrey Huguet + + * libgnarl/a-taside.ads: Add assertion policy to ignore + preconditions. + (Abort_Task, Is_Terminated, Is_Callable): Add preconditions. + +2019-07-04 Eric Botcazou + + * doc/gnat_rm/implementation_defined_pragmas.rst: Fix + capitalization and parenthesis glitches. + * gnat_rm.texi: Regenerate. + +2019-07-04 Ed Schonberg + + * sem_ch10.adb (Remove_Context_Clauses): Handle properly the + removal of a limited_with_clause which appears in the library + unit oF the main unit, when some other unit in the context has a + regular with_clause on the same unit, to prevent spurious + visibility errors in the subsequent analysis of pending instance + bodies. + +2019-07-04 Hristian Kirtchev + + * sem_elab.adb: Add new type Elaboration_Phase_Status along with + a global to keep track of the elaboration phase status. + Initialize all internal data structures to Nil for services + Elaborated_Units, Internal_Representation, and Scenario_Storage. + (Build_Call_Marker): Do not create a call marker when the + elaboration phase is not active. + (Build_Variable_Reference_Marker): Do not create a call marker + when the elaboration phase is not active. + (Check_Elaboration_Scenarios): Destroy all internal structures + when the elaboration phase does not have to run. Do not execute + when the elaboration phase is not active. + (Elaboration_Phase_Active): New routine. + (Finalize_All_Data_Structures): New routine. + (Initialize): Initialize all internal data structures and signal + that the elaboration phase has started. + (Initialize_All_Data_Structures): New routine. + (Initialize_Elaborated_Units): Initialize all internal data + structures. + (Initialize_Internal_Representation): Initialize all internal + data structures. + (Initialize_Scenario_Storage): Initialize all internal data + structures. + (Kill_Elaboration_Scenario): Do not execute when the elaboration + phase is not active. + (Set_Elaboration_Phase): New routine. + (Update_Elaboration_Scenario): Do not execute when the + elaboration phase is not active. + +2019-07-04 Gary Dismukes + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special + treatment of calling Mask_Unfrozen_Types must also be done in + the case of an Ignored_Ghost_Entity, because Expander_Active is + False in that case. + +2019-07-04 Yannick Moy + + * sem_prag.adb (Check_Library_Level_Entity): Update for new rule + on SPARK_Mode. + +2019-07-04 Justin Squirek + + * sem_disp.adb (Check_Controlling_Formals): Obtain the full view + before type comparison. + +2019-07-04 Ed Schonberg + + * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible + subprogram, extracted from Expand_Composite_Equality, to handle + properly the composition of equality for variant record types. + * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each + component, to handle properly the case of a component with a + user-defined equality. Revert to predefined equality if the + user-defined operation is abstract, to maintain compatibility + with older versions, + +2019-07-04 Justin Squirek + + * exp_ch3.adb (Build_Initialization_Call): Fixup + *_skip_null_excluding_check argument to handle new default. + (Init_Formals): Make *_skip_null_excluding_check formal default + to False + * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy + code duplication + +2019-07-04 Bob Duff + + * sem_ch3.adb (Access_Definition): Do not create a master unless + Tasking_Allowed. Otherwise, this fails on restricted runtimes. + +2019-07-04 Hristian Kirtchev + + * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the + Default_Initial_Condition attributes to an incomplete type. + +2019-07-04 Ed Schonberg + + * sem_attr.adb (Check_Array_Type): An array type attribute such + as 'First can be applied to an unconstrained array tyope when + the attribute reference appears within an aspect specification + and the prefix is a current instance, given that the prefix of + the attribute will become a formal of the subprogram that + implements the aspect (typically a predicate check). + +2019-07-04 Piotr Trojanek + + * sem_util.adb (Yields_Synchronized_Object): Fix typos in + comments. + +2019-07-04 Yannick Moy + + * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK + rule. + +2019-07-04 Yannick Moy + + * sem_spark.adb (Check_Statement): Only check permission of + object in extended return when it is of a deep type. + +2019-07-04 Justin Squirek + + * sem_ch12.adb (Perform_Appropriate_Analysis): Added for + selecting which type of analysis based on wheither the + instantiation is a generic at the library-level. In which case + expansion during analysis. + (Preanalyze_Actuals): Modify calls to Analyze to use the new + routine. + +2019-07-04 Ed Schonberg + + * exp_unst.adb: Handle conditional expressions. + +2019-07-04 Yannick Moy + + * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only + analyze parts of the code marked in SPARK. + +2019-07-04 Hristian Kirtchev + + * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb: + Minor reformatting. + +2019-07-04 Yannick Moy + + * sem_spark.adb (Explanation, Get_Expl): New functions to get + the explanation for a permission mismatch. + (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take + explanation into account for issuing a more precise error + message. + (Set_Perm_Prefixes, Set_Perm_Extensions, + Set_Perm_Extensions_Move): Pass suitable argument for the + explanation node. + +2019-07-04 Arnaud Charlet + + * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add + support for record aggregates. + (Component_Check): Use Is_CCG_Supported_Aggregate instead of a + similar local predicate. + (Convert_To_Assignments): Take advantage of In_Place_Assign_OK + predicate when possible. + (Is_CCG_Supported_Aggregate): Return False for records with + representation clauses and fix the logic for dealing with nested + aggregates. + +2019-07-04 Piotr Trojanek + + * opt.adb (Set_Config_Switches): Keep assertions policy as + enabled when analysing internal units in GNATprove mode. + +2019-07-04 Arnaud Charlet + + * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip + N_Variable_Reference_Marker when checking for the presence of + actions. + +2019-07-04 Arnaud Charlet + + * exp_aggr.adb (Check_Component): Take into account type + conversions. + +2019-07-04 Dmitriy Anisimkov + + * doc/gnat_ugn/platform_specific_information.rst: Document + Windows socket timeout particularity. + * gnat_ugn.texi: Regenerate. + * gsocket.h: Include versionhelpers.h. + * socket.c (__gnat_minus_500ms): New function. + * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New + imported function. + * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove + 500ms from the requested timeout only on old Windows version. + +2019-07-04 Thomas Quinot + + * get_scos.adb: Remove bogus, dead code. + +2019-07-04 Ed Schonberg + + * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the + component is an entity name, its dimensions are those of its + type. + +2019-07-03 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in + GNATpp. + +2019-07-03 Hristian Kirtchev + + * binde.adb: Remove with clause for System.OS_Lib. + (Force_Elab_Order): Refactor the majority of the code in Butil. + Use the new forced units iterator to obtain unit names. + * bindo-builders.adb: Add with and use clauses for Binderr, + Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables. Add + a hash table which maps units to line number in the forced + elaboration order file. + (Add_Unit): New routine. + (Build_Library_Graph): Create forced edges between pairs of + units listed in the forced elaboration order file. + (Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number, + Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info, + Is_Duplicate_Unit, Missing_Unit_Info): New routines. + * bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit): + Refactor some of the behavior to Bindo-Units. + * bindo-graphs.ads: Enable the enumeration literal for forced + edges. + * bindo-units.adb, bindo-units.ads (Is_Internal_Unit, + Is_Predefined_Unit): New routines. + * butil.adb: Add with and use clauses for Opt, GNAT, and + System.OS_Lib. Add with clause for Unchecked_Deallocation. + (Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name, + Read_Forced_Elab_Order_File): New routines. + * butil.ads: Add with and use clauses for Types. Add new + iterator over the units listed in the forced elaboration order + file. + (Has_Next, Iterate_Forced_Units, Next): New routine. + * namet.adb, namet.ads (Present): New routine. + +2019-07-03 Bob Duff + + * sem_ch3.adb (Access_Definition): The code was creating a + master in the case where the designated type is a class-wide + interface type. Create a master in the noninterface case as + well. That is, create a master for all limited class-wide types. + +2019-07-03 Yannick Moy + + * erroutc.adb (Sloc_In_Range): New function to determine whether + the range of a pragma Warnings covers a location, taking + instantiations into account. + +2019-07-03 Johannes Kanig + + * osint.ads, osint.adb (Get_First_Main_File_Name): New routine + to access the first file provided on the command line. + +2019-07-03 Ed Schonberg + + * inline.adb (Process_Formals_In_Aspects): New procedure within + Expand_Inlined_Call, to perform a replacement of references to + formals that appear in aspect specifications within the body + being inlined. + +2019-07-03 Justin Squirek + + * sem_ch8.adb (Analyze_Object_Renaming): Add call to search for + the appropriate actual subtype of the object renaming being + analyzed. + (Check_Constrained_Object): Minor cleanup. + +2019-07-03 Yannick Moy + + * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to + return go through traversal function call. + (Check_Type): Consistently use underlying type. + (Get_Perm): Adapt for case of elaboration code where variables + are not declared in the environment. Remove incorrect handling + of borrow and observe. + +2019-07-03 Hristian Kirtchev + + * inline.adb (Build_Return_Object_Formal): New routine. + (Can_Split_Unconstrained_Function): Code clean up. + (Copy_Formals,Copy_Return_Object): New routines. + (Split_Unconstrained_Function): Code clean up and refactoring. + +2019-07-03 Gary Dismukes + + * bindo-augmentors.adb, bindo-augmentors.ads, + bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb, + sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial + corrections and reformatting. + +2019-07-03 Bob Duff + + * sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning + if an Iterator_Specification is present. + +2019-07-03 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document default + new-line behavior. + +2019-07-03 Hristian Kirtchev + + * ali.adb: Add with and use clauses for GNAT, + GNAT.Dynamic_HTables, and Snames. Add a map from invocation + signature records to invocation signature ids. Add various + encodings of invocation-related attributes. Sort and update + table Known_ALI_Lines. + (Add_Invocation_Construct, Add_Invocation_Relation, + Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind, + Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind, + Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New + routines. + (Initialize_ALI): Sort the initialization sequence. Add + initialization for all invocation-related tables. + (Invocation_Construct_Kind_To_Code, + Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code, + Invocation_Signature_Of, Present): New routines. + (Scan_ALI): Add the default values for invocation-related ids. + Scan invocation graph lines. + (Scan_Invocation_Graph_Line): New routine. + * ali.ads: Add with clause for GNAT.Dynamic_Tables. Add types + for invocation constructs, relations, and signatures. Add + tables for invocation constructs, relations, and signatures. + Update Unit_Record to capture invocation-related ids. Relocate + table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array + from Binde. + (Add_Invocation_Construct, Add_Invocation_Relation, + Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind, + Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind, + Code_To_Invocation_Graph_Line_Kind, + Invocation_Construct_Kind_To_Code, + Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code, + Invocation_Signature_Of, Present): New routines. + * binde.adb: Add with and use clause for Types. Add use clause + for ALI.Unit_Id_Tables; + * binde.ads: Relocate table Unit_Id_Tables and subtypes + Unit_Id_Table, Unit_Id_Array to ALI. + * bindgen.adb: Remove with and use clause for ALI. + * bindgen.ads: Remove with and use clause for Binde. Add with + and use clause for ALI. + * bindo.adb, bindo.ads, bindo-augmentors.adb, + bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads, + bindo-diagnostics.adb, bindo-diagnostics.ads, + bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb, + bindo-graphs.ads, bindo-units.adb, bindo-units.ads, + bindo-validators.adb, bindo-validators.ads, bindo-writers.adb, + bindo-writers.ads: New units. + * debug.adb: Use and describe GNAT debug switches -gnatd_F and + -gnatd_G. Add GNATbind debug switches in the ranges dA .. dZ, + d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and + d_1 .. d_9. Use and describe GNATbind debug switches -d_A, + -d_I, -d_L, -d_N, -d_O, -d_T, and -d_V. + * exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to + Sem_Util. + * gnatbind.adb: Add with and use clause for Bindo. Use the new + Bindo elaboration order only when -d_N is in effect. + * lib-writ.adb + (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement, + Scope, Signature, Target): New routines. + (Write_ALI): Output all invocation-related data. + (Write_Invocation_Graph): New routine. + * lib-writ.ads: Document the invocation graph ALI line. + * namet.adb, namet.ads (Present): New routines. + * sem_ch8.adb (Find_Direct_Name): Capture the status of + elaboration checks and warnings of an identifier. + (Find_Expanded_Name): Capture the status of elaboration checks + and warnings of an expanded name. + * sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure + that invocation graph-related data within the body of the main + unit is encoded in the ALI file. + (Analyze_Generic_Subprogram_Declaration): Ensure that invocation + graph-related data within the body of the main unit is encoded + in the ALI file. + (Analyze_Package_Instantiation): Perform minimal decoration of + the instance entity. + (Analyze_Subprogram_Instantiation): Perform minimal decoration + of the instance entity. + * sem_elab.adb: Perform heavy refactoring of all code. The unit + is now split into "services" which specialize in one area of ABE + checks. Add processing in order to capture invocation-graph + related attributes of the main unit, and encode them in the ALI + file. The Processing phase can now operate in multiple modes, + all described by type Processing_Kind. Scenarios and targets + are now distinct at the higher level, and carry their own + representations. This eliminates the need to constantly + recompute their attributes, and offers the various processors a + uniform interface. The various initial states of the Processing + phase are now encoded using type Processing_In_State, and + xxx_State constants. + * sem_elab.ads: Update the literals of type + Enclosing_Level_Kind. Add Inline pragmas on several routines. + * sem_prag.adb (Process_Inline): Ensure that invocation + graph-related data within the body of the main unit is encoded + in the ALI file. + * sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit): + Code clean up. + (Exceptions_OK): Relocated from Sem_Util. + (Mark_Save_Invocation_Graph_Of_Body): New routine. + * sem_util.ads (Exceptions_OK): Relocated from Sem_Util. + (Mark_Save_Invocation_Graph_Of_Body): New routine. + * sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to + N_Variable_Reference_Marker. + (Is_Elaboration_Warnings_OK_Node): Now applicable to + N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker. + (Is_Read): Use Flag4. + (Is_SPARK_Mode_On_Node): New applicable to + N_Variable_Reference_Marker. + (Is_Write): Use Flag5. + (Save_Invocation_Graph_Of_Body): New routine. + (Set_Is_Elaboration_Checks_OK_Node): Now applicable to + N_Variable_Reference_Marker. + (Set_Is_Elaboration_Warnings_OK_Node): Now applicable to + N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker. + (Set_Is_SPARK_Mode_On_Node): New applicable to + N_Variable_Reference_Marker. + (Set_Save_Invocation_Graph_Of_Body): New routine. + * sinfo.ads: Update the documentation of attributes + Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node, + Is_SPARK_Mode_On_Node. Update the flag usage of attributes + Is_Read, Is_Write. Add attribute Save_Invocation_Graph_Of_Body + and update its occurrence in nodes. + (Save_Invocation_Graph_Of_Body): New routine along with pragma + Inline. + (Set_Save_Invocation_Graph_Of_Body): New routine along with + pragma Inline. + * switch-b.adb (Scan_Binder_Switches): Refactor the scanning of + debug switches. + (Scan_Debug_Switches): New routine. + * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine. + * libgnat/g-graphs.adb (Associate_Vertices): Update the use of + Component_Vertex_Iterator. + (Contains_Component, Contains_Edge, Contains_Vertex, Has_Next): + Reimplemented. + (Iterate_Component_Vertices): New routine. + (Iterate_Vertices): Removed. + (Next): Update the parameter profile. + (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New + routines. + * libgnat/g-graphs.ads: Update the initialization of + No_Component. Add type Component_Vertex_Iterator. Remove type + Vertex_Iterator. + (Has_Next): Add new versions and remove old ones. + (Iterate_Component_Vertices): New routine. + (Iterate_Vertices): Removed. + (Next): Add new versions and remove old ones. + (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New + routines. + * libgnat/g-sets.adb (Contains): Reimplemented. + * gcc-interface/Make-lang.in (GNATBIND_OBJS): Add + GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units. + * rtsfind.ads: Remove extra space. + +2019-07-03 Yannick Moy + + * sem_spark.adb: Add support for locally borrowing and observing + a path. + (Get_Root_Object): Add parameter Through_Traversal to denote + when we are interesting in getting to the traversed parameter. + (Is_Prefix_Or_Almost): New function to support detection of + illegal access to borrowed or observed paths. + (Check_Pragma): Add analysis of assertion pragmas. + +2019-07-03 Ed Schonberg + + * sem_ch13.adb (Build_Predicate_Functions): In a generic context + we do not build the bodies of predicate fuctions, but the + expression in a static predicate must be elaborated to allow + case coverage checking within the generic unit. + (Build_Discrete_Static_Predicate): In a generic context, return + without building function body once the + Static_Discrete_Predicate expression for the type has been + constructed. + +2019-07-03 Hristian Kirtchev + + * bindgen.adb, inline.adb, layout.adb, sem_ch12.adb, + sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting. + +2019-07-03 Bob Duff + + * par-ch3.adb (P_Defining_Identifier): Call + Check_Defining_Identifier_Casing. + * style.ads, styleg.ads, styleg.adb + (Check_Defining_Identifier_Casing): New procedure to check for + mixed-case defining identifiers. + * stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New + flag for checking for mixed-case defining identifiers. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document new feature. + * gnat_ugn.texi: Regenerate. + +2019-07-03 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst + (Warning message control): Document that -gnatw.z/Z apply to + array types. + * freeze.adb (Freeze_Entity): Give -gnatw.z warning for array + types as well, but not if the specified alignment is the minimum + one. + * gnat_ugn.texi: Regenerate. + +2019-07-03 Bob Duff + + * einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid" + correctly. + +2019-07-03 Ed Schonberg + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error + message on attribute applied to a renaming when the renamed + object is an aggregate (from code reading). + (Check_Aspect_At_End_Of_Declarations): In a generic context + where freeze nodes are not generated, the original expression + for an aspect may need to be analyzed to precent spurious + conformance errors when compared with the expression that is + anakyzed at the end of the current declarative list. + +2019-07-03 Eric Botcazou + + * layout.adb (Layout_Type): Do not set the component size of an + array with a scalar component if the component type is + overaligned. + +2019-07-03 Ed Schonberg + + * inline.adb (Make_Loop_Labels_Unique): New procedure to modify + the source code of subprograms that are inlined by the + front-end, to prevent accidental duplication between loop labels + in the inlined code and the code surrounding the inlined call. + +2019-07-03 Hristian Kirtchev + + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update + the section on resolving elaboration circularities to eliminate + certain combinations of switches which together do not produce + the desired effect and confuse users. + * gnat_ugn.texi: Regenerate. + +2019-07-03 Arnaud Charlet + + * bindgen.adb (Gen_Main): Disable generation of reference to + Ada_Main_Program_Name for CCG. + * bindusg.adb (Display): Add -G to the command-line usage for + gnatbind. + * opt.ads (Generate_C_Code): Update comment. + * switch-b.adb (Scan_Binder_Switches): Add handling for -G. + +2019-07-03 Arnaud Charlet + + * sem_ch7.adb (Has_Referencer): Do not consider inlined + subprograms when generating C code, which allows us to generate + static inline subprograms. + +2019-07-03 Justin Squirek + + * sem_ch6.adb (Check_Conformance): Add expression checking for + constant modifiers in anonymous access types (in addition to + "non-null" types) so that they are considered "matching" for + subsequent conformance tests. + +2019-07-03 Arnaud Charlet + + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Clarify wording on No_Multiple_Elaboration. + * gnat_rm.texi: Regenerate. + +2019-07-03 Ed Schonberg + + * sem_ch8.adb (Find_Selected_Component): If the prefix is the + current instance of a type or subtype, complete the resolution + of the name by finding the component of the type denoted by the + selector name. + +2019-07-03 Eric Botcazou + + * doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C): + Document that boolean types with convention C now map to C99 bool. + * gnat_rm.texi: Regenerate. + +2019-07-03 Javier Miranda + + * exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup: + removing code that it is now never executed in the CCG compiler + (dead code). + +2019-07-02 Iain Sandoe + + * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for + PPC Darwin. + +2019-07-01 Ed Schonberg + + * sem_ch12.adb (Is_Defaulted): New predicate in + Check_Formal_Package_Intance, to skip the conformance of checks + on parameters of a formal package that are defaulted, + +2019-07-01 Hristian Kirtchev + + * checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb, + sem_prag.adb, sem_spark.adb: Minor reformatting. + +2019-07-01 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix + of attribute to be an attribute reference of a discrete type. + +2019-07-01 Eric Botcazou + + * sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up + handling of Has_Pragma_Inline_Always and deal with + Has_Pragma_No_Inline. + +2019-07-01 Ed Schonberg + + * sem_ch3.adb (Build_Derived_Record_Type): If the parent type is + declared as a subtype of a private type with an inherited + discriminant constraint, its generated full base appears as a + record subtype, so we need to retrieve its oen base type so that + the inherited constraint can be applied to it. + +2019-07-01 Yannick Moy + + * sem_spark.adb: Completely rework the algorithm for ownership + checking, as the rules in SPARK RM have changed a lot. + * sem_spark.ads: Update comments. + +2019-07-01 Dmitriy Anisimkov + + * gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in + the sockaddr_in structure to determine the existence of length field + before the sin_family. + +2019-07-01 Ed Schonberg + + * sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only + applies to entities with run-time addresses, not to types. + +2019-07-01 Piotr Trojanek + + * einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update + references to the SPARK RM after the removal of Rule 7.1.4(5). + +2019-07-01 Piotr Trojanek + + * sysdep.c: Cleanup references to LynuxWorks in docs and + comments. + +2019-07-01 Ed Schonberg + + * checks.adb (Insert_Valid_Check): Do not apply validity check + to variable declared within a protected object that uses the + Lock_Free implementation, to prevent unwarranted constant + folding, because entities within such an object msut be treated + as volatile. + +2019-07-01 Eric Botcazou + + * exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline. + +2019-07-01 Ed Schonberg + + * exp_unst.adb (Visit_Node, Check_Static_Type): Improve the + handling of private and incomplete types whose full view is an + access type, to detect additional uplevel references in dynamic + bounds. This is relevant to N_Free_Statement among others that + manipulate types whose full viww may be an access type. + +2019-07-01 Pat Rogers + + * doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct + size indicated for R as a component of an array. + * gnat_rm.texi: Regenerate. + +2019-07-01 Justin Squirek + + * libgnat/s-win32.ads: Add definition for ULONG, modify + OVERLAPPED type, and add appropriate pragmas. + +2019-07-01 Bob Duff + + * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is + ignored-ghost. + +2019-07-01 Yannick Moy + + * sem_ch4.adb (Operator_Check): Refine error message. + +2019-07-01 Piotr Trojanek + + * libgnat/a-calend.ads: Revert "Global => null" contracts on + non-pure routines. + +2019-07-01 Piotr Trojanek + + * exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments: + componant -> component. + +2019-07-01 Hristian Kirtchev + + * libgnat/g-graphs.adb: Use type Directed_Graph rather than + Instance in various routines. + * libgnat/g-graphs.ads: Change type Instance to Directed_Graph. + Update various routines that mention the type. + +2019-07-01 Hristian Kirtchev + + * libgnat/g-sets.adb: Use type Membership_Set rathern than + Instance in various routines. + * libgnat/g-sets.ads: Change type Instance to Membership_Set. + Update various routines that mention the type. + +2019-07-01 Hristian Kirtchev + + * libgnat/g-lists.adb: Use type Doubly_Linked_List rather than + Instance in various routines. + * libgnat/g-lists.ads: Change type Instance to + Doubly_Linked_List. Update various routines that mention the + type. + +2019-07-01 Hristian Kirtchev + + * libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than + Instance in various routines. + * libgnat/g-dynhta.ads: Change type Instance to + Dynamic_Hash_Table. Update various routines that mention the + type. + +2019-07-01 Hristian Kirtchev + + * exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb, + sem_util.adb, uintp.adb, uintp.ads: Minor reformatting. + +2019-07-01 Javier Miranda + + * exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of + 'Min/'Max on integer, enumeration, fixed point and floating + point types since the CCG backend now provides in file + standard.h routines to support it. + +2019-07-01 Hristian Kirtchev + + * impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95. + * Makefile.rtl, gcc-interface/Make-lang.in: Register unit + GNAT.Graphs. + * libgnat/g-dynhta.adb: Various minor cleanups (use Present + rather than direct comparisons). + (Delete): Reimplement to use Delete_Node. + (Delete_Node): New routine. + (Destroy_Bucket): Invoke the provided destructor. + (Present): New routines. + * libgnat/g-dynhta.ads: Add new generic formal Destroy_Value. + Use better names for the components of iterators. + * libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit. + * libgnat/g-lists.adb: Various minor cleanups (use Present + rather than direct comparisons). + (Delete_Node): Invoke the provided destructor. + (Present): New routine. + * libgnat/g-lists.ads: Add new generic formal Destroy_Element. + Use better names for the components of iterators. + (Present): New routine. + * libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset, + Reset): New routines. + +2019-07-01 Dmitriy Anisimkov + + * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6 + is not defined. + +2019-07-01 Ed Schonberg + + * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value): + Resolve result of call to Get_Simple_Init_Val, which may be a + conversion of a literal. + +2019-07-01 Hristian Kirtchev + + * freeze.adb (Freeze_Expression): Remove the horrible useless + name hiding of N. Insert the freeze nodes generated by the + expression prior to the expression when the nearest enclosing + scope is transient. + +2019-07-01 Pierre-Marie de Rodat + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix + formatting issues in the -gnatR section. + * gnat_ugn.texi: Regenerate. + +2019-06-30 Iain Sandoe + + * gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches. + Push -shared-libgcc explicitly, when it is the target default (unless + overidden by the static flag). + When the user has put an instance of shared/static-libgcc do not push + a duplicate of this. + +2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED, + and tweak comment on the assertion about the scopes of Itypes. Do not + skip the regular processing for Itypes that are E_Record_Subtype with + a Cloned_Subtype. Get the Cloned_Subtype for every E_Record_Subtype + if the type is dummy and hasn't got its own freeze node. + : Save again the DECL of the Cloned_Subtype, if any. + : Save again the DECL of the equivalent type. + (Gigi_Equivalent_Type) : New case. + +2019-06-29 Eric Botcazou + + * gcc-interface/utils.c (unchecked_convert): Tweak comment. Only skip + dereferences when padding to have the same size on both sides. Do it + for destination types with self-referential size too. + +2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : If the + type requires strict alignment, then set the RM size to the type size. + Rework handling of alignment and sizes of tagged types in ASIS mode. + (validate_size): Rename local variable and remove special handling for + strict-alignment types. + * gcc-interface/utils.c (finish_record_type): Constify local variables + and use properly typed constants. + +2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for + fields requiring strict alignment, add explicit test on Storage_Unit + for position and size, and mention type alignment for position. + +2019-06-29 Eric Botcazou + + * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on + the main variant of a type, if any. + +2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add + missing guard for the presence of TYPE_CANONICAL. + (set_reverse_storage_order_on_array_type): Likewise. + +2019-06-29 Eric Botcazou + + * gcc-interface/gigi.h (make_packable_type): Remove default value. + (value_factor_p): Tweak prototype. + * gcc-interface/decl.c (gnat_to_gnu_entity): Add comment. + (gnat_to_gnu_component_type): Likewise. + (gnat_to_gnu_field): Likewise. Fetch the position of the field earlier + and simplify the condition under which the type is packed. Declare + local variable is_bitfield. Pass 1 as max_align to make_packable_type + if it is set to true. + (copy_and_substitute_in_layout): Pass 0 to make_packable_type. + * gcc-interface/utils.c (make_packable_array_type): New function. + (make_packable_type): Use it to rewrite the type of array field. + (maybe_pad_type): Pass align parameter to make_packable_type. + (create_field_decl): Minor tweaks. + (value_factor_p): Assert that FACTOR is a power of 2 and replace the + modulo computation by a masking operation. + +2019-06-25 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test + in previous change. + * gcc-interface/gigi.h (maybe_character_type): Fix formatting. + (maybe_character_value): Likewise. + +2019-06-24 Jan Hubicka + + * gcc-interface/decl.c (gnat_to_gnu_entity): Check that + type is array or integer prior checking string flag. + * gcc-interface/gigi.h (maybe_character_type): Likewise. + (maybe_character_value): Likewise. + +2019-06-24 Martin Sebor + + * gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute + name. + +2019-06-18 Arnaud Charlet + + PR ada/80590 + * sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation + during normal processing. + +2019-06-17 Arnaud Charlet + + PR ada/80590 + * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two + conditions to avoid a unnecessary exception propagation in the default + case. + +2019-05-28 Eric Botcazou + + * gcc-interface/utils.c (handle_stack_protect_attribute): Move around. + +2019-05-28 Eric Botcazou + + * doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute): + Document additional optional parameters. + * sem_prag.adb (Analyze_Pragma) : Accept + more than one optional parameter. + * gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize + the list of supported pragmas. Simplify the handling of parameters + and add support for more than one optional parameter. + * gcc-interface/utils.c (attr_cold_hot_exclusions): New constant. + (gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten, + used, cold, hot, target and target_clones. + (begin_subprog_body): Do not create the RTL for the subprogram here. + (handle_noicf_attribute): New static function. + (handle_noipa_attribute): Likewise. + (handle_flatten_attribute): Likewise. + (handle_used_attribute): Likewise. + (handle_cold_attribute): Likewise. + (handle_hot_attribute): Likewise. + (handle_target_attribute): Likewise. + (handle_target_clones_attribute): Likewise. + +2019-05-28 Eric Botcazou + + * gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0 + for 'Size too. + (Identifier_to_gnu): Use the actual subtype for a reference to a + packed array in a return statement. + (Attribute_to_gnu) : Do not strip VIEW_CONVERT_EXPRs from + the prefix in every case. + +2019-05-28 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on + Backend_Overflow_Checks_On_Target and rework comments. + +2019-05-28 Eric Botcazou + + * gcc-interface/trans.c (walk_nesting_tree): New static function. + (finalize_nrv): Use it to walk the entire nesting tree. + +2019-05-28 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Remove + obsolete test on Is_For_Access_Subtype. + +2019-05-28 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Set a name on the type + created for the REP part, if any. + * gcc-interface/utils.c (finish_record_type): Only take the maximum + when merging sizes for a variant part at offset 0. + (merge_sizes): Rename has_rep parameter into max. + +2019-05-28 Eric Botcazou + + * gcc-interface/utils.c (gnat_internal_attribute_table): Add support + for stack_protect attribute. + (handle_stack_protect_attribute): New static function. + +2019-05-28 Eric Botcazou + + * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return + false if the internal builtin uses a variable list. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary + created out of addressability concerns if it's for the _Init parameter + of an initialization procedure. + +2019-05-27 Eric Botcazou + + * gcc-interface/ada-builtin-types.def: New file. + * gcc-interface/ada-builtins.def: Likewise. + * gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro. + (BUILT_IN_UNLIKELY): Likewise. + * gcc-interface/trans.c (independent_iterations_p): Initialize the + auto-vector to 16 elements. + (Call_to_gnu): Remove local variable and change the vector of actual + parameters to an auto-vector. Do not convert actual parameters to + the argument type for front-end built-in functions. Add support for + front-end built-in functions. + (build_noreturn_cond): Use internal instead of built-in function. + * gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def + (install_builtin_function_types): Likewise. + (install_builtin_functions): Include ada-builtins.def first. + +2019-05-27 Eric Botcazou + + * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the + specific case of component types preferably. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks. + (gnat_to_gnu): Do not convert the result if it is a reference to an + unconstrained array used as the prefix of an attribute reference that + requires an lvalue. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (Gigi_Types_Compatible): New predicate. + (Identifier_to_gnu): Use it to assert that the type of the identifier + and that of its entity are compatible for gigi. Rename a couple of + local variables and separate the processing of the result type. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when + putting back an intermediate conversion the type of the actuals. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Convert the + count to the unsigned version of its base type before proceeding. + +2019-05-16 Martin Sebor + + * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote + reserved names. + +2019-05-08 Arnaud Charlet + + * standard.ads.h: New file. + +2019-05-07 Rainer Orth + + * gcc-interface/Makefile.in (install-gcc-specs): Use foreach. + Honor DESTDIR. + +2019-04-29 Michael K. Darling + + * gnatvsn.ads: Bump Library_Version to 10. + +2019-04-24 Ramana Radhakrishnan + Bernd Edlinger + Jakub Jelinek + + PR target/89093 + * raise-gcc.c (TARGET_ATTRIBUTE): Define. + (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add + TARGET_ATTRIBUTE. + +2019-04-07 Eric Botcazou + + * libgnat/i-cexten.ads (CFloat_128): New type. + +2019-03-22 Dmitriy Anisimkov + + PR ada/89583 + * libgnat/g-socket.adb (Bind_Socket, Connect_Socket, + Send_Socket): Fix the computation of structure lengths passed to + low level routines. + (Is_IPv6_Address): Fix the number of expected colons. + +2019-03-11 Martin Liska + + * gcc-interface/misc.c (gnat_post_options): Wrap option name in string + format message and fix GNU coding style. + +2019-02-08 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Minor tweak. + * gcc-interface/utils.c (convert): Do not pad when doing an unchecked + conversion here. Use TREE_CONSTANT throughout the function. + (unchecked_convert): Also pad if the source is a CONSTRUCTOR and the + destination is a more aligned array type or a larger aggregate type, + but not between original and packable versions of a type. + +2019-02-08 Eric Botcazou + + * gcc-interface/utils.c (max_size) : Be prepared for an + operand with VOID_TYPE. + +2019-02-08 Eric Botcazou + + * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the + entities of a package renaming another one. + +2019-02-08 Eric Botcazou + + * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on + individual flag_unswitch_loops and flag_tree_loop_vectorize switches + with test on global optimize switch. + (Raise_Error_to_gnu): Likewise. + +2019-02-07 Eric Botcazou + + * libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value. + +2019-02-06 Arnaud Charlet + + * libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads + +2019-01-27 Eric Botcazou + + * repinfo.adb (List_Component_Layout): Remove superfluous space for + zero-sized field. + * gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro. + * gcc-interface/gigi.h (create_extra_subtype): Declare. + * gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise. + (update_n_elem): New function. + (gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes + instead of doing it manually. + : Use update_n_elem to compute the maximum size. Use the + index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE + of the array to the maximum size. + : Create an extra subtype using the index type of the + base array type for self-referential bounds. Use update_n_elem to + compute the maximum size. Set TYPE_ARRAY_MAX_SIZE of the array to the + maximum size. + (gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants. + * gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of + the base type for an extra subtype. + (gnat_type_max_size): Remove obsolete code. + * gcc-interface/trans.c (Attribute_to_gnu): Minor tweak. + (can_be_lower_p): Deal with pathological types. + * gcc-interface/utils.c (create_extra_subtype): New function. + (create_field_decl): Minor tweak. + (max_size) : Compute a better value by using the extra + subtypes on the self-referential bounds. + : Rewrite. Deal with "negative value" in unsigned types. + : Likewise. + * gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds + of the arrays upfront. Swap only if the second length is not constant. + Use comparisons on the original bounds consistently for the null tests. + (build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro. + (build_allocator): Minor tweak. + +2019-01-27 Eric Botcazou + + * gcc-interface/decl.c (array_type_has_nonaliased_component): Return + the same value for every dimension of a multidimensional array type. + +2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the + iteration scheme, if present, throughout the translation. + +2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Use + DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned + by a call to memset if the LHS is a DECL. + +2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (struct loop_info_d): Remove artificial field. + (Loop_Statement_to_gnu): Do not set it. + +2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting. + (Acc_gnat_to_gnu): Likewise. + (Acc_Data_to_gnu): Likewise. + (Acc_Var_to_gnu): Likewise. + (Acc_Reduc_to_gnu): Likewise. + (Acc_Size_List_to_gnu): Likewise. + (Pragma_to_gnu) : Likewise. + ): Likewise. + (find_loop_for): Remove default value for parameters. + * gcc-interface/trans.c (gnat_to_gnu) : Merge into... + ): ...this. + +2019-01-26 Eric Botcazou + + * gcc-interface/decl.c (annotate_value) : Use test on + the sign bit instead of on the sign of the value. + : Turn addition of negative constant into subtraction. + : Add test for degenerate case. + : Simplify. + +2019-01-18 Sebastian Huber + + * s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS. + +2019-01-09 Sandra Loosemore + + PR other/16615 + * exp_ch11.adb: Change "can not" to "cannot". + * sem_ch4.adb: Likewise. + +2019-01-09 Sandra Loosemore + + PR other/16615 + * exp_ch9.adb: Mechanically replace "can not" with "cannot". + * libgnat/s-regpat.ads: Likewise. + * par-ch4.adb: Likewise. + * set_targ.adb: Likewise. + * types.ads: Likewise. + +2019-01-08 Justin Squirek + + Revert: + 2018-07-31 Justin Squirek + + * lib-writ.adb (Write_With_Lines): Modfiy the generation + of dependencies within ali files so that source unit + bodies are properly listed even if said bodies are + missing. Perform legacy behavior in GNATprove mode. + * lib-writ.ads: Modify documentation to reflect current + behavior. + + and: + 2018-09-26 Justin Squirek + + * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add + documentation and an extra conditional check for RCI + units so that generated ali files will list the spec + only instead of a body when a body is not found. + +2019-01-04 Eric Botcazou + + * gnatvsn.ads: Bump copyright year. + +2019-01-01 Jakub Jelinek + + Update copyright years. + + * gnat_ugn.texi: Bump @copying's copyright year. + * gnat_rm.texi: Likewise. + +Copyright (C) 2019 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. -- 2.30.2