From f4f50084ad13d00dc3c5e554ca6cbacafc34b758 Mon Sep 17 00:00:00 2001 From: Piotr Trojanek Date: Thu, 10 Oct 2019 15:22:38 +0000 Subject: [PATCH] [Ada] Use declared type for deciding on SPARK pointer rules 2019-10-10 Piotr Trojanek gcc/ada/ * 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. From-SVN: r276810 --- gcc/ada/ChangeLog | 5444 +------------------------------------------------- gcc/ada/sem_prag.adb | 3 +- 2 files changed, 5 insertions(+), 5442 deletions(-) diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 0463038..bb08e2d 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,5441 +1,5 @@ -2019-10-04 Joseph Myers +2019-10-10 Piotr Trojanek - * 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. + * 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. \ No newline at end of file diff --git a/gcc/ada/sem_prag.adb b/gcc/ada/sem_prag.adb index 5f7e6e5..c7c267a 100644 --- a/gcc/ada/sem_prag.adb +++ b/gcc/ada/sem_prag.adb @@ -2429,8 +2429,7 @@ package body Sem_Prag is -- Constant related checks elsif Ekind (Item_Id) = E_Constant - and then - not Is_Access_Type (Underlying_Type (Etype (Item_Id))) + and then not Is_Access_Type (Etype (Item_Id)) then -- Unless it is of an access type, a constant is a read-only -- 2.7.4