From 7e7065b976573cb392d435856a5f9e5a6424a57c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Wed, 1 Jan 2020 12:14:37 +0100 Subject: [PATCH] gcc.c (process_command): Update copyright notice dates. * gcc.c (process_command): Update copyright notice dates. * gcov-dump.c (print_version): Ditto. * gcov.c (print_version): Ditto. * gcov-tool.c (print_version): Ditto. * gengtype.c (create_file): Ditto. * doc/cpp.texi: Bump @copying's copyright year. * doc/cppinternals.texi: Ditto. * doc/gcc.texi: Ditto. * doc/gccint.texi: Ditto. * doc/gcov.texi: Ditto. * doc/install.texi: Ditto. * doc/invoke.texi: Ditto. gcc/fortran/ * gfortranspec.c (lang_specific_driver): Update copyright notice dates. * gfc-internals.texi: Bump @copying's copyright year. * gfortran.texi: Ditto. * intrinsic.texi: Ditto. * invoke.texi: Ditto. gcc/d/ * gdc.texi: Bump @copyrights-d year. gcc/go/ * gccgo.texi: Bump @copyrights-go year. gcc/ada/ * gnat_ugn.texi: Bump @copying's copyright year. * gnat_rm.texi: Likewise. libitm/ * libitm.texi: Bump @copying's copyright year. libgomp/ * libgomp.texi: Bump @copying's copyright year. libquadmath/ * libquadmath.texi: Bump @copying's copyright year. From-SVN: r279811 --- gcc/ChangeLog | 15 + gcc/ada/ChangeLog | 6714 +------------------------------ gcc/ada/ChangeLog-2019 | 6716 ++++++++++++++++++++++++++++++++ gcc/ada/gnat_rm.texi | 2 +- gcc/ada/gnat_ugn.texi | 2 +- gcc/d/ChangeLog | 326 +- gcc/d/ChangeLog-2019 | 331 ++ gcc/d/gdc.texi | 2 +- gcc/doc/cpp.texi | 2 +- gcc/doc/cppinternals.texi | 4 +- gcc/doc/gcc.texi | 2 +- gcc/doc/gccint.texi | 2 +- gcc/doc/gcov.texi | 2 +- gcc/doc/install.texi | 4 +- gcc/doc/invoke.texi | 2 +- gcc/fortran/ChangeLog | 3122 +-------------- gcc/fortran/ChangeLog-2019 | 3132 +++++++++++++++ gcc/fortran/gfc-internals.texi | 2 +- gcc/fortran/gfortran.texi | 2 +- gcc/fortran/gfortranspec.c | 2 +- gcc/fortran/intrinsic.texi | 2 +- gcc/fortran/invoke.texi | 4 +- gcc/gcc.c | 2 +- gcc/gcov-dump.c | 2 +- gcc/gcov-tool.c | 2 +- gcc/gcov.c | 2 +- gcc/go/ChangeLog | 4 + gcc/go/gccgo.texi | 2 +- libgomp/ChangeLog | 4 + libgomp/libgomp.texi | 2 +- libitm/ChangeLog | 4 + libitm/libitm.texi | 2 +- libquadmath/ChangeLog | 4 + libquadmath/libquadmath.texi | 2 +- 34 files changed, 10244 insertions(+), 10180 deletions(-) create mode 100644 gcc/ada/ChangeLog-2019 create mode 100644 gcc/d/ChangeLog-2019 create mode 100644 gcc/fortran/ChangeLog-2019 diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 76211fc34d8..6996ca81571 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,18 @@ +2020-01-01 Jakub Jelinek + + * gcc.c (process_command): Update copyright notice dates. + * gcov-dump.c (print_version): Ditto. + * gcov.c (print_version): Ditto. + * gcov-tool.c (print_version): Ditto. + * gengtype.c (create_file): Ditto. + * doc/cpp.texi: Bump @copying's copyright year. + * doc/cppinternals.texi: Ditto. + * doc/gcc.texi: Ditto. + * doc/gccint.texi: Ditto. + * doc/gcov.texi: Ditto. + * doc/install.texi: Ditto. + * doc/invoke.texi: Ditto. + 2020-01-01 Jan Hubicka * ipa.c (walk_polymorphic_call_targets): Fix updating of overall diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog index 5e92f1ac2e0..d13a86a02ec 100644 --- a/gcc/ada/ChangeLog +++ b/gcc/ada/ChangeLog @@ -1,6715 +1,9 @@ -2019-12-22 Maciej W. Rozycki +2020-01-01 Jakub Jelinek - * gcc-interface/Makefile.in (toolexeclibdir): New variable. - -2019-12-18 Eric Botcazou - - * gcc-interface/trans.c (Pragma_to_gnu) : Push a - diagnostics state for pragma Warnings (Off) before turning off all - the warnings and only pop it for pragma Warnings (On). - -2019-12-18 Justin Squirek - - * sem_ch6.adb (Analyze_Function_Return): Modify handling of - extended return statements to check accessibility of access - discriminants. - (Check_Aggregate_Accessibility): Removed. - (Check_Return_Obj_Accessibility): Added to centralize checking - of return aggregates and subtype indications in the case of an - extended return statement. - -2019-12-18 Arnaud Charlet - - * libgnat/s-regpat.adb (Parse_Literal, Parse_Piece): Ensure - Expr_Flags is always fully initialized. - -2019-12-18 Arnaud Charlet - - * libgnat/s-atopar.ads, libgnat/s-atopex.ads (Atomic_Type): Can - now be marked Atomic. This requires marking the unit Ada 202x. - -2019-12-18 Arnaud Charlet - - * libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb, - libgnat/a-nbnbre.ads, libgnat/a-nbnbre.adb: Replace - Optional_Big_* types by a simple check and exception raise in - Get_Bignum. - (Set_Bignum): Arg should be 'out' and not 'in out'. - (Invalid_Big_Integer, No_Big_Real): Removed. - (Is_Valid): Now convention Intrinsic. - -2019-12-18 Piotr Trojanek - - * doc/gnat_rm/implementation_defined_pragmas.rst, - doc/gnat_rm/obsolescent_features.rst, - doc/gnat_ugn/gnat_and_program_execution.rst, exp_attr.adb, - exp_ch9.adb, init.c, libgnat/s-valrea.adb, par-ch6.adb, - sem_attr.adb, sem_ch4.adb, sem_util.ads: Fix trivial typos. - * gnat_rm.texi, gnat_ugn.texi: Regenerate. - -2019-12-18 Gary Dismukes - - * sem_res.adb (Resolve_Type_Conversion): Add handling for access - types with designated operand and target types that are - referenced in places that have a limited view of an interface - type by retrieving the nonlimited view when it exists. Add ??? - comments related to missing limited_with_clause handling for - Target (in the non-access case). - -2019-12-18 Ed Schonberg - - * par-ch12.adb (P_Formal_Derived_Type_Definition): In Ada_2020 - the keyword WITH can indicate the start of aspect specifications - and not a private type extension. - * sem_ch12.adb (Analyze_Formal_Type): Indicate that it is a - first subtype. - (Instantiate_Type): New procedure - Check_Shared_Variable_Control_Aspects to verify matching rules - between formal and actual types. Note that an array type with - aspect Atomic_Components is considered compatible with an array - type whose component type is Atomic, even though the array types - do not carry the same aspect. - * sem_ch13.adb (Analyze_One_Aspect): Allow shared variable - control aspects to appear on formal types. - (Rep_Item_Too_Early): Exclude aspects on formal types. - * sem_prag.adb (Mark_Type): Handle properly pragmas that come - from aspects on formal types. - (Analyze_Pragma, case Atomic_Components): Handle formal types. - -2019-12-18 Eric Botcazou - - * cstand.adb (Create_Standard): Remove duplicate line and - adjust. - -2019-12-18 Javier Miranda - - * debug.adb: Document -gnatd_K as a reserved switch for the - detection of known problem issues of previous releases. - -2019-12-18 Ghjuvan Lacambre - - * par-ch13.adb: Check if declarations allow aspect - specifications. - -2019-12-18 Piotr Trojanek - - * einfo.ads (Is_Ghost_Entity): Fix typo in comment. - -2019-12-18 Eric Botcazou - - * layout.adb (Layout_Type): In the case of composite types, do - not copy the Esize onto the RM_Size if the latter is not set. - * gcc-interface/decl.c (gnat_to_gnu_entity) : - Also cap the alignment if an Object_Size clause has been - specified. Pass VAR_DECL in the call to validate_size for the - Esize of a type. - (validate_size): Be prepared to give an error on an Object_Size - clause. - -2019-12-18 Eric Botcazou - - * einfo.ads (Handling of Type'Size Value): Add references to the - introduction of Object_Size in Ada 2020. - * sem_eval.adb (Subtypes_Statically_Match): Likewise. - -2019-12-18 Bob Duff - - * sem_ch3.adb (Derive_Subprogram): Do not set the - Requires_Overriding flag in the above-mentioned case. - -2019-12-18 Bob Duff - - * sem_ch8.adb (Note_Redundant_Use): It was already checking for - a use clause in the visible part of the child. Add an additional - check for a use clause in the context clause of the child. - -2019-12-16 Bob Duff - - * errout.adb (Handle_Serious_Error): Disable the above-mentioned - warnings. - -2019-12-16 Bob Duff - - * errout.adb, errout.ads: Improve comments. - -2019-12-16 Bob Duff - - * sem_util.ads: Minor comment fix. - -2019-12-16 Bob Duff - - * errout.ads, errout.adb (Is_Size_Too_Small_Message): Check for - "size for" instead of "size for& too small, minimum allowed is - ^". - -2019-12-16 Eric Botcazou - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Set only - the RM_Size on the subtype built for a Component_Size clause - when the component type is a biased integer type. - -2019-12-16 Arnaud Charlet - - * socket.c: Shutdown warning. - -2019-12-16 Arnaud Charlet - - * libgnarl/s-tataat.ads (Deallocator): Mark as Favor_Top_Level. - -2019-12-16 Arnaud Charlet - - * libgnat/s-aotase.adb, libgnat/s-aotase.ads, - libgnat/s-atoope.ads, libgnat/s-atopar.adb, - libgnat/s-atopar.ads, libgnat/s-atopex.adb, - libgnat/s-atopex.ads: New files. - * libgnat/s-atopri.ads: Add new intrinsics. - * Makefile.rtl: Add new runtime files. - * impunit.adb: Add new units to Ada 2020 list. - -2019-12-16 Eric Botcazou - - * freeze.adb (Check_Strict_Alignment): Remove new check on - Has_Aliased_Components for array types. - -2019-12-16 Ed Schonberg - - * sem_ch4.adb (Try_Container_Indexing): In the case of a derived - container type, use the base type to look for candidate indexing - operations, because the object may be a constrained subtype or - itype with no explicit declaration. Candidate indexing - operations are found in the same scope and list of declarations - as the declaration of the base type. - -2019-12-16 Ed Schonberg - - * scng.adb (Scan): In Ada2020, a left-bracket indicates the - start of an homogenous aggregate. - * par-ch4.adb (P_Reduction_Attribute_Reference): New procedure. - (P_Aggregate): Recognize Ada2020 bracket-delimited aggregates. - (P_Primary): Ditto. - * par-util.adb (Comma_Present): Return false on a right bracket - in Ada2020, indicating the end of an aggregate. - * snames.ads-tmpl: Introduce Name_Reduce and Attribute Reduce. - * sinfo.ads, sinfo.adb (Is_Homogeneous_Aggregate): New flag on - aggregates, to designate an Ada2020 array or container aggregate - that is bracket-delimited in the source. - * sem_attr.adb (Analyze_Attribute): For attribute Reduce, verify - that two arguments are present, and verify that the prefix is a - stream or an object that is iterable (array or contrainer). - (Resolve_Attribute): For attribute Reduce, resolve initial value - with the type of the context. Type-checking of element type of - prefix is performed after expansion. - * exp_attr.adb (Expand_N_Attribute_Reference): For attribute - Reduce, expand into a loop: a) If prefix is an aggregate with a - single iterated component association, use its iterator - specification to construct a loop, b) If prefix is a name, build - a loop using an element iterator loop. - * scans.ads: Add brackets tokens. - -2019-12-16 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to - validate_size. - (gnat_to_gnu_component_type): Likewise. - (gnat_to_gnu_field): Likewise and pass string for error messages. - (components_need_strict_alignment): Remove test on Is_Aliased and - add test for the independence of the component. - (validate_size): Add S1 and S2 string parameters and use them to - give better error messages for fields. Tweak a couple of messages. - * einfo.ads (Has_Independent_Components): Document more cases. - (Is_Independent): Likewise. - (Strict_Alignment): Document new semantics. - * exp_ch9.adb (Install_Private_Data_Declarations): Also set the - Is_Independent flag along with Is_Aliased on the renaming - entity. - * freeze.adb (Size_Known): Remove always-false test and add test - for the strict-alignment on the record type. Remove redundant - tests and add test for the strict-alignment on the component - type. - (Check_Strict_Alignment): Set the flag if the type is by-ref and - remove now redundant conditions. Set the flag on an array type - if it has aliased components. In the record type case, do not - set type for C_Pass_By_Copy convention. - (Freeze_Array_Type): Move code checking for conflicts between - representation aspects and clauses to before specific handling - of packed array types. Give a warnind instead of an error for a - conflict with pragma Pack. Do not test Has_Pragma_Pack for the - specific handling of packed array types. - (Freeze_Record_Type): Move error checking of representation - clause to... - (Freeze_Entity): ...here after Check_Strict_Alignment is called. - * sem_aggr.adb (Array_Aggr_Subtype): Also set the Is_Independent - flag along with Is_Aliased on the Itype. - * sem_ch13.adb (Check_Record_Representation_Clause): Do not set - the RM size for a strict-alignment type. - * sem_ch3.adb (Add_Interface_Tag_Components): Also set the - Is_Independent flag along with Is_Aliased on the tag. - (Add_Interface_Tag_Components): Likewise on the offset. - (Analyze_Component_Declaration): Likewise on the component. - (Analyze_Object_Declaration): Likewise on the object. - (Constrain_Array): Likewise on the array. - (Record_Type_Declaration: Likewise on the tag. - (Array_Type_Declaration): Also set the - Has_Independent_Components flag along with - Has_Aliased_Components on the array. - (Copy_Array_Base_Type_Attributes): Copy - Has_Independent_Components. - (Copy_Array_Subtype_Attributes): Copy Is_Atomic, Is_Independent - and Is_Volatile_Full_Access. - (Analyze_Iterator_Specification): Set Is_Independent on the loop - variable according to Independent_Components on the array. - * sem_ch5.adb: Likewise. - * sem_ch6.adb (Process_Formals): Also set the Is_Independent - flag along with Is_Aliased on the formal. - -2019-12-16 Eric Botcazou - - * sem_ch8.adb (Analyze_Object_Renaming): Set Atomic, Independent - and Volatile_Full_Access aspects on the entity of the renaming - the same way as the Volatile aspect is set. - * sem_util.ads (Is_Atomic_Object_Entity): Move declaration to... - (Is_Independent_Object): New function. - (Is_Volatile_Full_Access_Object): Likewise. - * sem_util.adb (Is_Atomic_Object_Entity): ...here. - (Prefix_Has_Atomic_Components): Minor tweak. - (Is_Atomic_Object): Test Is_Atomic on the Etype uniformly. - (Is_Atomic_Or_VFA_Object): Call Is_Volatile_Full_Access_Object. - (Is_Independent_Object): New predicate. - (Is_Subcomponent_Of_Atomic_Object): Remove redundant test. - (Is_Volatile_Full_Access_Object): New predicate. - (Is_Volatile_Prefix): Rename into... - (Prefix_Has_Volatile_Components): ... and call - Is_Volatile_Object. - (Object_Has_Volatile_Components): Delete. - (Is_Volatile_Object): Simplify. - * gcc-interface/trans.c (node_is_volatile_full_access): Adjust - comment. - -2019-12-16 Bob Duff - - * par.adb: Add Scopes function to do range checking on the scope - stack. Call Scopes all over the parser. Add - SIS_Aspect_Import_Seen flag. - * par-ch6.adb (P_Subprogram): Initialize SIS_Aspect_Import_Seen - to False at the start, and check it at the end. - * par-ch13.adb (Get_Aspect_Specifications): Set - SIS_Aspect_Import_Seen to True when appropriate. - * par-ch10.adb, par-ch12.adb, par-ch2.adb, par-ch3.adb, - par-ch5.adb, par-ch7.adb, par-ch9.adb, par-endh.adb, - par-util.adb: Call Scopes. - -2019-12-16 Eric Botcazou - - * sem_prag.adb (Atomic_Components): Remove local variable and - fix consistency issues. Call Component_Type on the Etype of E. - (Independent_Components): Remove local variable. - * sem_util.adb (Is_Subcomponent_Of_Atomic_Object): Properly deal - with prefixes that are access values. - * gcc-interface/trans.c (atomic_acces_t): New enumeral type. - (node_is_atomic) : Test the prefix. - (node_has_volatile_full_access): Rename into... - (node_is_volatile_full_access): ...this. - (node_is_component): New predicare. - (gnat_strip_type_conversion): Delete. - (outer_atomic_access_required_p): Likewise. - (atomic_access_required_p): Rename into... - (get_atomic_access): ...this. Implement the 3 different semantics - of Atomic and Volatile_Full_Access. - (simple_atomic_access_required_p): New predicate. - (Call_to_gnu): Remove outer_atomic_access parameter and change the - type of atomic_access parameter to atomic_acces_t. Replace call to - atomic_access_required_p with simple_atomic_access_required_p for - the in direction and call get_atomic_access for the out direction - instead of [outer_]atomic_access_required_p. - (lhs_or_actual_p): Constify local variables. - (present_in_lhs_or_actual_p): Likewise. - (gnat_to_gnu) : Replace call to atomic_access_required_p - with simple_atomic_access_required_p. - : Likewise. - : Likewise. - : Likewise. - : Call get_atomic_access for the name instead - of [outer_]atomic_access_required_p. Adjust call to Call_to_gnu. - : Adjust call to Call_to_gnu. - (get_controlling_type): Fix typo in comment. - -2019-12-16 Eric Botcazou - - * fe.h (Ada_Version_Type): New typedef. - (Ada_Version): Declare. - * opt.ads (Ada_Version_Type): Add Convention C and WARNING line. - (Ada_Version): Add WARNING line. - (Exception_Mechanism_Type): Likewise. - -2019-12-16 Gary Dismukes - - * checks.adb, sem_util.adb: Minor reformatting and U.S. spelling - adjustment. - -2019-12-16 Bob Duff - - * sem_ch10.adb (Analyze_Subunit): Give an error if the subunit - is not a proper body. This hides the confusing "duplicate body" - message that was previously given. - -2019-12-16 Eric Botcazou - - * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Document - third special case of renamings requiring special handling. - (Evaluation_Required): Return true for an atomic or VFA prefix. - -2019-12-16 Ed Schonberg - - * checks.adb (Apply_Float_Conversion_Check): Use node of type - conversion and not its parent, when inserting the declaration - for the temporary that hold the result of the conversion. - Previously the declaration was inserted above the parent of the - conversion, apparently as a small optimization for the - subsequent traversal in Insert_Actions. Unfortunately a similar - optimization takes place in Insert_Actions, assuming that the - insertion point must be above the expression that creates the - actions to insert. This is not correct in the presence of - conditional expressions (i.e. since Ada2012), where the - insertion must be in the list of actions attached to the current - alternative. - -2019-12-16 Bob Duff - - * sem_attr.adb (Analyze_Attribute): Use Known_RM_Size. But we - still need Size_Known_At_Compile_Time, because when the size - really is known, sometimes only one or the other of these is - True. - -2019-12-16 Eric Botcazou - - * sem_util.adb (Is_Atomic_Or_VFA_Object): Also return true for - components whose type is Volatile_Full_Access or which are - subject to the aspect/pragma individually. - * sem_util.ads (Is_Atomic_Object_Entity): Small comment fix. - -2019-12-16 Yannick Moy - - * exp_ch6.adb: Fix comment. - * sem_res.adb (Resolve_Call): Do not check No_Recursion - restriction or indirectly No_Secondary_Stack restriction, when - inside an ignored ghost subprogram. - -2019-12-16 Arnaud Charlet - - * impunit.adb: Add a-nbnbin, a-nbnbre, a-nubinu to Ada 2020 - units. - * Makefile.rtl: Enable new file. - * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads, - libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads, - libgnat/a-nubinu.ads: New files. Provide default standalone - implementation of Ada.Numerics.Big_Numbers.Big_* based on - System.Generic_Bignum. - * libgnat/a-nbnbin__gmp.adb: Alternate implementation of - Ada.Numerics.Big_Numbers.Big_Integers based on GMP. Not enabled - for now. - * libgnat/s-bignum.ads, libgnat/s-bignum.adb: Now a simple - wrapper on top of s-genbig.ads. - * libgnat/s-genbig.ads, libgnat/s-genbig.adb: New files, making - s-bignum generic for reuse in Ada.Numerics.Big_Numbers. - -2019-12-16 Bob Duff - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Correct documentation of -gnatw_C switch - * gnat_ugn.texi: Regenerate. - -2019-12-16 Joel Brobecker - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst - (_Switches_for_gnatbind): Reword the section explaining the - impact of -minimal on debugging. - * gnat_ugn.texi: Regenerate. - -2019-12-16 Gary Dismukes - - * libgnat/g-exptty.adb, libgnat/g-exptty.ads: Typo fixes and - minor reformatting. - -2019-12-16 Eric Botcazou - - * exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): New predicate. - (Expand_Actuals): Use it to decide whether to add call by copy - code as per the RM C.6(19) clause. - * fe.h (Is_Atomic_Object): Remove. - (Is_Volatile_Object): Likewise. - * sem_util.ads (Is_Atomic_Object): Remove WARNING note. - (Is_Volatile_Object): Likewise. - * gcc-interface/trans.c (atomic_or_volatile_copy_required_p): Delete. - (Call_to_gnu): Do not implement the RM C.6(19) clause. - -2019-12-16 Ghjuvan Lacambre - - * sem_ch12.adb (Validate_Access_Subprogram_Instance): Add - Can_Never_Be_Null checks. - -2019-12-16 Eric Botcazou - - * doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Document - extension of the no-aliasing rule to any subcomponent. - * freeze.adb (Freeze_Object_Declaration): Small comment tweak. - (Freeze_Record_Type): Do not deal with delayed aspect - specifications for components here but... - (Freeze_Entity): ...here instead. - * sem_ch12.adb (Instantiate_Object): Improve wording of errors - given for legality rules in C.6(12) and implement the new rule - in C.6(13). - * sem_res.adb (Resolve_Actuals): Likewise. - * sem_prag.adb (Check_Atomic_VFA): New procedure implementing - the new legality rules in C.6(13). - (Process_Atomic_Independent_Shared_Volatile): Call - Check_Atomic_VFA to check the legality rules. Factor out code - marking types into... - (Mark_Type): ...this new procedure. - (Check_VFA_Conflicts): Do not check the legality rules here. - (Pragma_Atomic_Components): Call Check_Atomic_VFA on component - type. - * sem_util.ads (Is_Subcomponent_Of_Atomic_Object): Declare. - * sem_util.adb (Is_Subcomponent_Of_Atomic_Object): New - predicate. - * gnat_rm.texi: Regenerate. - -2019-12-13 Gary Dismukes - - * doc/gnat_rm/implementation_defined_pragmas.rst: Minor - rewording of one sentence. - * gnat_rm.texi: Regenerate. - -2019-12-13 Arnaud Charlet - - * exp_unst.adb (Unnest_Subprogram): Account for trees produced - by Annex E constructs. - -2019-12-13 Ghjuvan Lacambre - - * doc/gnat_rm/implementation_defined_pragmas.rst: Update - Initialize_Scalars documentation. - * gnat_rm.texi: Regenerate. - -2019-12-13 Javier Miranda - - * sem_ch13.adb (Analyze_Aspect_Specification): Processing a - precondition, if the expression is of the form A and then B, do - not generate separate Pre/Post aspects for the separate clases - when we are processing a generic unit. Required to avoid - reporting spurious visibility errors on the instantiations. - -2019-12-13 Eric Botcazou - - * sem_res.adb (Resolve_Actuals): Give canonical error for - illegal case of atomic/volatile parameter also if the formal is - aliased. - -2019-12-13 Eric Botcazou - - * sem_util.ads (Is_Atomic_Object): Mention relevant RM clauses. - * sem_util.adb (Is_Atomic_Object): For an indexed component, - only look at the Has_Atomic_Components aspect of the prefix and - do not recurse on it; for a selected component, do not look at - the prefix. - (Is_Atomic_Or_VFA_Object): Minor tweak. - -2019-12-13 Arnaud Charlet - - * libgnat/a-calfor.ads, libgnat/a-calfor.adb (Split_Duration): - New procedure. - (Split, Image): Use Split_Duration. Update Image spec. - -2019-12-13 Javier Miranda - - * exp_unst.adb (Unnest_Subprogram): Generate an extra temporary - to facilitate the C backend processing dereferences. - -2019-12-13 Javier Miranda - - * sem_prag.adb (Analyze_Pragma): Propagate the - Linker_Section_Attribute to the ultimate alias of the subprogram - to facilitate the C backend processing this attribute. - -2019-12-13 Yannick Moy - - * sem_util.adb (Original_Aspect_Pragma_Name): Go through - Original_Node for pragma. - -2019-12-13 Piotr Trojanek - - * exp_aggr.adb, exp_unst.adb: Minor fix typo in comment. - -2019-12-13 Steve Baird - - * sem_res.adb (Resolve, Valid_Conversion): Add Base_Type call - when testing whether a type is a general access type. - -2019-12-13 Javier Miranda - - * exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Generate an - extra temporary for cases unsupported by the C backend. - -2019-12-13 Steve Baird - - * einfo.ads: Correct comment for Derived_Type_Link to reflect - that fact that this function is now used for more than just - generation of warnings. - * sem_ch3.adb (Build_Derived_Type): Do not call - Set_Derived_Type_Link if the derived type and the parent type - are in different compilation units. Such a derivation cannot be - a problematic "early" derivation (identifying these is what the - Derived_Type_Link attribute is used for) and we don't like - inter-unit references that go in the opposite direction of - semantic dependencies. - * sem_ch13.adb (Is_Type_Related_Rep_Item): A new function, - analogous to the existing function Is_Operational_Item. - (Rep_Item_Too_Late): Generate a hard error (with same text as - the warning that was previously being generated) if the - AI12-0109 legality rule is violated. - -2019-12-13 Eric Botcazou - - * doc/gnat_rm/implementation_defined_pragmas.rst: Minor tweak to - Volatile_Full_Access wording in GNAT RM. - * gnat_rm.texi: Regenerate. - -2019-12-13 Gary Dismukes - - * exp_attr.adb (Expand_N_Attribute_Reference, - Attribute_Address): Suppress generation of a call to - Base_Address in the case where the Address attribute is being - used to initialize a corresponding component of an activation - record. - (Is_Unnested_Component_Init): New function to determine whether - an attribute reference for Address is used to initialized a - component of an activation record object that corresponds to the - object denoted by the prefix of the attribute (an assignment - used in support of unnesting for back ends like LLVM). - -2019-12-13 Ed Schonberg - - * sem_res.adb (Resolve): IF an entity reference is overloaded - because its type has an Implicit_Dereference aspect, we must - examine the discriminants of the type to determine whether an - explicit dereference must be inserted for use in code - generation. Previously this was done for other expressions but - not for entity references by themselves. This was sufficient to - handle uses of the aspect in container handling and iteration, - but not more generally. - -2019-12-13 Javier Miranda - - * exp_disp.ads (Expand_Interface_Thunk): Adding one formal (the - interface type). - * exp_disp.adb (Expand_Interface_Thunk): Using the added formal - to ensure the correct profile of the thunk generated for - predefined primitives; in addition, the added formal is also - used to perform a check that ensures that the controlling type - of the thunk is the one expected by the GCC backend. - (Make_Secondary_DT, Register_Primitive): Adding the new formal - to the calls to Expand_Interface_Thunk. - * exp_ch6.adb (Register_Predefined_DT_Entry): Adding the new - formal to the call to Expand_Interface_Thunk. - * exp_intr.adb (Expand_Unc_Deallocation): When deallocating a - controlled type and the call to unchecked deallocation is - performed with a pointer to one of the convered interface types, - displace the pointer to the object to reference the base of the - object to deallocate its memory. - * gcc-interface/trans.c (maybe_make_gnu_thunk): Assert that the - controlling type of the thunk is an interface type. - -2019-12-13 Bob Duff - - * exp_attr.adb (Is_Available): Remove this function, and replace - all calls with RTE_Available. RTE_Available will return True if - "not Configurable_Run_Time_Mode". Remove the "???" comment. - -2019-12-13 Ed Schonberg - - * sem_ch7.adb (Analyze_Package_Body_Helper): Do not call - Declare_Inherited_Private_Subprograms on s child body: the - required operations have already been created when analyzing the - corresponding package declaration. This prevents a redeclaration - of inehrited operation, and a crash when inserting the new - operation in the current scope. - -2019-12-13 Yannick Moy - - * sem_prag.adb (Analyze_Depends_In_Decl_Part, - Analyze_Global_In_Decl_Part, - Analyze_Refined_Depends_In_Decl_Part, - Analyze_Refined_Global_In_Decl_Part, Check_Missing_Part_Of): - Skip redundant checking involving visibility inside - instantiations. - -2019-12-13 Yannick Moy - - * sem_res.adb (Resolve_Call): Prevent inlining inside while loop - conditions. - * sem_util.adb, sem_util.ads (In_While_Loop_Condition): New - query function. - -2019-12-13 Bob Duff - - * impunit.ads: Add Ada_202X_Unit. - * impunit.adb: Add a table Non_Imp_File_Names_2X analogous to - the other tables. Add code to search this table. - * opt.ads: Add Warn_On_Ada_202X_Compatibility flag, currently - always True. - * sem_ch10.adb (Analyze_With_Clause): Give a warning if an Ada - 2020 unit is with-ed when Ada_Version < Ada_2020. Change 'if' - to 'case': Full coverage rules rule. - -2019-12-13 Bob Duff - - * rtsfind.ads: Minor comment fix. - -2019-12-13 Gary Dismukes - - * sem_util.adb (Scope_Within): For the case of checking for a - task type procedure, check the Implementation_Base_Type of Curr. - (Scope_Within_Or_Same): For the case of checking for a task type - procedure, check the Implementation_Base_Type of Curr. - -2019-12-13 Arnaud Charlet - - * impunit.adb (Non_Imp_File_Names_12): Add - Ada.Containers.Vectors.Generic_Parallel_Sorting. - -2019-12-13 Justin Squirek - - * sem_res.adb (Resolve_Allocator): Add calls to - Check_Cond_Expr_Accessibility when a conditional expression is - found. - (Check_Allocator_Discrim_Accessibility_Exprs): Created to - recursively traverse a potentially compound conditional - expression and perform accessibility checks for each - alternative. - * sem_util.adb (Dynamic_Accessibility_Level): Avoid use of - original node of the expression in question so we can handle - dynamic accessibility in the limited case of a constant folded - conditional expression. - -2019-12-13 Steve Baird - - * exp_ch4.adb (Expand_N_Op_Eq.Is_Equality): Move this function - from within Expand_N_Op_Eq.Find_Equality out to immediately - within Expand_N_Op_Eq in order to give it greater visibility. - Add a new Typ parameter (defaulted to Empty) which, if - non-empty, means the function will return False in the case of - an equality op for some other type. - * (Expand_N_Op_Eq.User_Defined_Primitive_Equality_Op): A new - function. Given an untagged record type, finds the corresponding - user-defined primitive equality op (if any). May return Empty. - Ignores visibility. - * (Expand_N_Op): For Ada2012 or later, check for presence of a - user-defined primitive equality op before falling back on the - usual predefined component-by-component comparison. If found, - then call the user-defined op instead. - -2019-12-13 Justin Squirek - - * sem_ch6.adb (Check_Overriding_Indicator): Modify condition to - take into account the modification of the Is_Hidden flag within - generic instances. - (Verify_Overriding_Indicator): Add an exception for controlled - primitives within an instance. - -2019-12-13 Ed Schonberg - - * sinfo.ads, sinfo.adb (Aspect_On_Partial_View, - Set_Aspect_On_Partial_View): New flag for use by SPARK, to - indicate whether an aspect that appears on a type declaration - applies to the partial view of that type. - * sem_ch13.adb (Analyze_Aspect_Specification): Set new flag - appropriately. - -2019-12-12 Ed Schonberg - - * sem_ch13.adb (Same_Reprewentation): if the actual in a call is - a generic actual type, use its bsae type to determine whether a - change of representastion may be necessary for proper parameter - passing. - -2019-12-12 Ed Schonberg - - * sem_type.adb (Find_Unique_Type): A call to the universal - access equality operator requires one operand to be a universal - access, and the other to be an access type. There is no - requirement, as previously implied by this routine, that - pool-specific access types were illegal in this context. - -2019-12-12 Steve Baird - - * sem_ch6.adb - (New_Overloaded_Entity.Check_Conforming_Paramters): Add new - Conformance_Type parameter. With the value of - Subtype_Conformant, the behavior of Check_Conforming_Parameters - is unchanged. The call in Matching_Entry_Or_Subprogram to - instead passes in Type_Conformant. This corresponds to the use - of "type conformant" in Ada RM 9.4(11.4/3). - (New_Overloaded_Entity.Has_Matching_Entry_Or_Subprogram): Add - new Normalized_First_Parameter_Type function to help in ignoring - the distinction between protected and access-to-protected first - parameters when checking prefixed-view profile matching. Replace - computations of the type of the first parameter with calls to - this function as appropriate. - -2019-12-12 Ed Schonberg - - * sem_ch5.adb: (Analyze_Iterator_Specification): If the - iteration is over a slice, complete the resolution of its - bounds, which may be aebitrary expressions. The previous - pre-analysis may have created itypes for the slice but has not - performed the expansion that for example may introduce actions - that specify explicit dereferences and run-time checks. - -2019-12-12 Ed Schonberg - - * sem_ch8.adb: Improve error message for dispatching subprogram - formals. - -2019-12-12 Gary Dismukes - - * exp_ch9.adb (Build_Protected_Entry): Set the Scope of the new - block to be the entity of the procedure created for the entry. - -2019-12-12 Steve Baird - - * sem_ch10.adb (Install_With_Clause): Check for the case of a - circular dependency involving a predefined (or GNAT-defined) - unit and handle that case by generating an appropropriate error - message. - -2019-12-12 Gary Dismukes - - * sem_ch4.adb, sem_res.adb: Minor reformatting. - -2019-12-12 Justin Squirek - - * sem_ch4.adb (Analyze_One_Call): Add condition to check for - incorrectly resolved hidden controlled primitives. - -2019-12-12 Ed Schonberg - - * sem_res.adb: Fix processing of standard predefined operators. - -2019-12-12 Piotr Trojanek - - * libgnarl/a-dispat.ads (Yield): Update Global contract. - -2019-12-12 Piotr Trojanek - - * libgnat/g-altive.ads: Fix typo in comment. - * bindo-graphs.adb: Fix repeated words in comment. - * exp_ch4.adb: Likewise. - * exp_ch5.adb: Likewise. - * exp_ch7.adb: Likewise. - * exp_pakd.adb: Likewise. - * exp_unst.adb: Likewise. - * exp_util.adb: Likewise. - * freeze.adb: Likewise. - * inline.adb: Likewise. - * layout.adb: Likewise. - * sem_ch12.adb: Likewise. - * sem_ch13.adb: Likewise. - * sem_ch4.adb: Likewise. - * sem_ch9.adb: Likewise. - * sem_elab.adb: Likewise. - * doc/gnat_ugn/gnat_and_program_execution.rst: Fix repeated - words in user documentation. - * gnat_ugn.texi: Regenerate. - -2019-12-12 Eric Botcazou - - * exp_attr.adb (Expand_Size_Attribute): Look directly at the - prefix to detect the bit-packed slices. Apply the checks last - in case the attribute needs to be processed by the back-end. - * exp_ch4.adb (Expand_N_Slice): Do not create a temporary for - a prefix of the Size attribute. - -2019-12-12 Steve Baird - - * sem_ch12.adb - (Instantiate_Type.Validate_Derived_Type_Instance): Implement the - legality check of AI12-0036 - -2019-12-12 Ed Schonberg - - * sem_ch10.adb (Analyze_Subunit): Fix spurious visibility error - on subunit with optimization. - -2019-12-12 Arnaud Charlet - - * raise-gcc.c (__gnat_personality_v0): Define for SEH. - -2019-12-12 Gary Dismukes - - * exp_ch9.adb (Build_Protected_Entry): Analyze the block created - to hold the declarations and statements of the protected entry - body right after it's created, and then call Reset_Scopes_To on - that block to reset the Scope of nested entities to the block - scope. - (Reset_Scope): Add handling for N_Freeze_Entity nodes, calling - Reset_Scopes recursively on the Actions of such nodes. Also, for - subprogram bodies that are encountered that might not have a - separate declaration (such as type init procedures), reset the - Scope of the subprogram's entity. - -2019-12-12 Justin Squirek - - * sem_attr.adb (Analyze_Attribute): Add error message for - invalid usage of Attribute_Result. - -2019-12-12 Bob Duff - - * sem_attr.adb (Eval_Attribute): Never mark T'Descriptor_Size as - static, even if T is a static subtype, because otherwise we will - request the value of the attribute, which will crash because we - have not evaluated it. - -2019-12-12 Ed Schonberg - - * exp_ch5.adb (Expand_N_Assognment_Statement): Extend the - processing involving private types with unknown discriminants to - handle the case where the full view of the type is an - unconstrained array type. - -2019-12-12 Bob Duff - - * sem_ch4.adb (Transform_Object_Operation): Deal properly with - prefix notation in instances. - -2019-12-12 Claire Dross - - * libgnat/a-cofove.adb, libgnat/a-cfinve.adb (Find_Index): Use - Extended_Index for call to Last. - -2019-12-12 Gary Dismukes - - * sem_ch3.adb, sem_util.adb: Minor reformatting. - -2019-12-12 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatmetric - documentation for average lengths - -2019-12-12 Ed Schonberg - - * sem_ch3.adb (Constrain_Access): Remove obsolete comments and - warning concerning component types of an access type whose - designated type is a constrained record type. (Such constraints - were previously ignored). Set scope of itype for component to - the scope of the enclosing record. - * sem_ch4.adb: Remove call to Set_Ekind. - * sem_util.adb (Build_Actual_Subtype_Of_Component): Handle - components whose type is an access to a constrained - discriminant, where the constraints may be given by the - discriminants of the enclosing type. New subprogram - Build_Access_Record_Constraint. - -2019-12-12 Justin Squirek - - * exp_ch6.adb (Expand_Call_Helper): Added null case for - 'Loop_Entry, 'Old, and 'Result when calculating whether to - create extra accessibility parameters. - * sem_util.adb (Dynamic_Accessibility_Level): Added null case - for 'Loop_Entry, 'Old, and 'Result when calculating - accessibility level based on access-valued attributes. Also - added special handling for uses of 'Loop_Entry when used in its - indexed component form. - -2019-12-12 Arnaud Charlet - - * raise-gcc.c: Remove references to VMS - -2019-12-12 Eric Botcazou - - * atree.ads, comperr.ads, debug.ads, einfo.ads, elists.ads, - err_vars.ads, errout.ads, exp_ch11.ads, exp_code.ads, - exp_dbug.ads, exp_tss.ads, exp_util.ads, lib.ads, namet.ads, - nlists.ads, opt.ads, repinfo.ads, restrict.ads, scos.ads, - sem_aggr.ads, sem_aux.ads, sem_eval.ads, sem_util.ads, - sinfo.ads, sinput.ads, stringt.ads, targparm.ads, types.ads, - urealp.ads warnsw.ads: Add WARNING line(s) in commentary. - * atree.h, elists.h, namet.h, nlists.h, repinfo.h, scos.h, - stringt.h, types.h, uintp.h, urealp.h: Tidy up. - * fe.h: Likewise. Document WARNING mark. - -2019-12-12 Dmitriy Anisimkov - - * libgnat/g-comlin.ads (Get_Argument): New routine similar to - original Get_Argument but with one more out parameter - End_Of_Arguments. - (Get_Arguments): Comment improved. - * libgnat/g-comlin.adb (Get_Argument): Implementation taken from - original Get_Argument and improved. - (Get_Argument): Calls new routine Get_Argument with additional - parameter. - -2019-12-03 Eric Botcazou - - * gcc-interface/utils.c (potential_alignment_gap): Delete. - (rest_of_record_type_compilation): Do not call above function. Use - the alignment of the field instead of that of its type, if need be. - When the original field has variable size, always lower the alignment - of the pointer type. Reset the bit-field status of the new field if - it does not encode a bit-field. - -2019-12-03 Eric Botcazou - - * gcc-interface/utils.c (fold_convert_size): New function. - (fold_bit_position): Invoke it to do further folding. - -2019-12-03 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_subprog_type): With the Copy-In/ - Copy-Out mechanism, do not promote the mode of the return type to an - integral mode if it contains a field on a non-integral type and even - demote it for 64-bit targets. - -2019-11-25 Eric Botcazou - - PR ada/92362 - * gcc-interface/trans.c (gnat_to_gnu) : - Use a temporary instead of clobbering the result with a freeze node. - -2019-11-25 Eric Botcazou - - PR ada/92575 - * expect.c (__gnat_expect_poll [VMS, HPUX]): Fix typo. - -2019-11-06 Eric Botcazou - Alexandre Oliva - - * gcc-interface/misc.c (callgraph_info_file): Delete. - -2019-10-27 Jakub Jelinek - - * locales.c (iso_3166): Add missing comma after "United-States". - -2019-10-15 Arnaud Charlet - - * Makefile.rtl (a-except.o): Put -O1 earlier so that it can be - overriden if needed by other variables. - -2019-10-12 Eric Botcazou - - PR ada/91995 - * sem_ch8.adb (Chain_Use_Clause): Remove second argument in calls - to Defining_Entity. - * sem_elab.adb (Find_Unit_Entity): Likewise. Deal with N_Subunit - here in lieu of in Defining_Entity. - * sem_util.ads (Defining_Entity): Remove 2nd and 3th parameters. - * sem_util.adb (Defining_Entity): Remove 2nd and 3th parameters, - and adjust accordingly. Deal with N_Compilation_Unit. - -2019-10-11 Eric Botcazou - - * gcc-interface/decl.c (elaborate_reference_1): Specifically deal with - pointer displacement. - - * gcc-interface/decl.c (components_to_record): Use proper name. - - * gcc-interface/trans.c (Sloc_to_locus): Use standard types. - -2019-10-11 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_field): Adjust again the packing - for a field without strict alignment and with an oversized clause. - -2019-10-11 Eric Botcazou - - * gcc-interface/decl.c (annotate_value) : Really test the - sign of the value when deciding to build a NEGATE_EXPR. - : Remove redundant line. - : Do the negation here. - -2019-10-11 Eric Botcazou - - * gcc-interface/decl.c (Gigi_Equivalent_Type) : New - case. Return the base type if the subtype is not constrained. - -2019-10-11 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : - New case to deal with the definition of named numbers. - : Minor tweaks. Set DECL_IGNORED_P on the CONST_DECL - if a corresponding variable is built. - * gcc-interface/trans.c (gnat_to_gnu) : Return - error_mark_node instead of aborting on overflow for named numbers. - : Reuse the case and - deal with error_mark_node specifically. - * gcc-interface/utils.c (create_var_decl): Do not set DECL_IGNORED_P - on CONST_DECLs. - (gnat_write_global_declarations): Output global constants. - -2019-10-10 Gary Dismukes - - * exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): When - encountering a loop at the top level of a package declaration - list (that is, within the declarations of a package spec or - body) that has nested subprograms, call Unnest_Loop to create a - new library-level procedure that will contain the loop, to allow - for proper handling of up-level references from within nested - subprograms, such as to loop parameters. - (Unnest_Loop): New procedure that takes a loop statement and - creates a new procedure body to enclose the loop statement, - along with generating a call to the procedure. - -2019-10-10 Arnaud Charlet - - * freeze.adb (Freeze_Subprogram): Ensure constructor is a C++ - constructor. - -2019-10-10 Gary Dismukes - - * libgnat/a-ststio.ads (File_Type): Apply pragma - Preelaborable_Initialization to the type. - -2019-10-10 Yannick Moy - - * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not peek - under private types whose completion is SPARK_Mode Off. - -2019-10-10 Gary Dismukes - - * exp_ch4.adb, sem_cat.adb, sem_ch12.adb, sem_ch3.adb, - sem_ch6.adb, sem_prag.adb, sem_util.adb, sem_util.ads: Minor - typo fixes. - -2019-10-10 Ed Schonberg - - * sem_warn.adb (Warn_On_Useless_Assignment): Do not warn if the - second assignment is at the same source position as the first. - -2019-10-10 Gary Dismukes - - * sem_util.adb (Enclosing_Subprogram): Handle the case of - E_Entry_Family, returning the entry family's associated - Protected_Body_Subprogram (as was already done for E_Entry). - * exp_ch9.adb (Expand_N_Accept_Statement): Call Reset_Scopes_To - on the block created for an accept statement to reset the scopes - of any local entities to the block scope. - -2019-10-10 Ed Schonberg - - * sem_ch12.adb (Analyze_Formal_Package_Declaration): Propagate - an aspect specification for Abstract_State from generic package - to formal package, so that it is available when analyzing the - constructed formal. - -2019-10-10 Eric Botcazou - - * sem_ch6.adb (Set_Actual_Subtypes): Put the freeze node of the - actual subtype after its declaration when the type of the formal - has a predicate. - -2019-10-10 Eric Botcazou - - * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Do not use - the Esize of the component to compute its layout, but only the - Component_Clause. Do not issue a warning for the _Tag - component. Also set the Esize of the component at the end of - the layout. - (Analyze_Record_Representation_Clause): Remove Hbit local - variable. Lay out the Original_Record_Component only if it's - distinct from the component. - (Check_Record_Representation_Clause): Fix off-by-one bug for the - Last_Bit of the artificial clause built for the _Tag component. - -2019-10-10 Bob Duff - - * treepr.ads, treepr.adb (ppar): New procedure. - -2019-10-10 Bob Duff - - * sem_aggr.adb (Resolve_Aggregate): Add missing cases in the - Others_Allowed => True case -- N_Case_Expression_Alternative and - N_If_Expression. Use Nkind_In. - * atree.adb, atree.ads, sinfo.adb, sinfo.ads (Nkind_In): New - 16-parameter version. - -2019-10-10 Ed Schonberg - - * sem_aggr.adb (Resolve_Array_Aggregate): Set properly the - Predicated_Parent link of an itype created for an aggregate, so - that the predicate_function of the parent can support proofs on - the object that it initializes. - -2019-10-10 Eric Botcazou - - * sem_ch3.adb (Analyze_Number_Declaration): Set - Debug_Info_Needed in the case where the expression is an integer - literal. - -2019-10-10 Yannick Moy - - * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add subprograms - with deep parameter or result type as not candidates for - inlining. - -2019-10-10 Vadim Godunko - - * libgnat/g-exptty.ads (TTY_Process_Descriptor): Set default - value for Process. - -2019-10-10 Bob Duff - - * sem_prag.adb (Defer_Compile_Time_Warning_Error_To_BE): In - addition to saving the pragma for further processing, copy the - pragma into the main unit if necessary. - -2019-10-10 Bob Duff - - * einfo.ads, einfo.adb (Invariants_Ignored): New flag on types. - This leaves just one unused flag. - * sem_prag.adb (Invariant): Set the flag if appropriate. - * exp_util.adb (Make_Invariant_Call): Check the flag. - -2019-10-10 Arnaud Charlet - - * gnat1drv.adb (Gnat1drv): Skip code generation when handling an - incomplete unit with -gnatceg. - -2019-10-10 Gary Dismukes - - * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Various - cleanups. - (Set_Elab_Proc): New procedure to create the defining identifier - for a procedure created to encapsulate top-level blocks - occurring as a part of library package elaboration. - (First_Local_Scope): Function replaced by - Reset_Scopes_To_Elab_Proc. - (Reset_Scopes_To_Elab_Proc): New recursive procedure based on - First_Local_Scope, which it replaces, that is called to traverse - the statements of a library package body to locate top-level - blocks and determine whether they contain nested subprograms - that might address library-level objects of the package. Such - blocks (and loops) and certain top-level subprograms within the - statements will have their Scope reset here to match an - encapsulating procedure created by - Check_Unnesting_Elaboration_Code that will contain the - statements. - (Check_Unnesting_In_Decls_Or_Stmts): Code for handling blocks - factored out into Unnest_Block. Add handling for package - declarations and bodies, making recursive calls for - visible/private declarations, body declarations, statements, and - exception handlers. Also remove test for Is_Compilation_Unit: - caller tests for Is_Library_Level_Entity instead. Also, this - proc's name was changed from Check_Unnesting_In_Declarations. - (Check_Unnesting_In_Handlers): New procedure to traverse a - sequence of exception handlers, calling - Check_Unnesting_In_Decls_Or_Stmts on the statements of each - handler. - (Expand_N_Package_Body): Call Check_Unnesting_* routines only - when Unnest_Subprogram_Mode is set and the current scope is a - library-level entity (which includes packages and instantiations - nested directly within a library unit). - (Expand_N_Package_Declaration): Call Check_Unnesting_* routines - only when Unnest_Subprogram_Mode is set and the current scope is - a library-level entity (which includes packages and - instantiations nested directly within a library unit). - (Unnest_Block): New procedure factored out of - Check_Unnesting_In_Decls_Or_Stmts, for creating a new procedure - to replace a block statement and resetting the Scope fields of - the block's top-level entities. - -2019-10-10 Anthony Leonardo Gracio - - * doc/gnat_ugn/about_this_guide.rst, - doc/gnat_ugn/building_executable_programs_with_gnat.rst, - doc/gnat_ugn/getting_started_with_gnat.rst, - doc/gnat_ugn/gnat_and_program_execution.rst, errout.ads, - exp_ch3.adb, gnatls.adb, impunit.adb, lib-writ.ads, opt.ads, - sem_ch7.adb, sem_prag.adb, sem_res.adb, sem_warn.adb, - terminals.c: Replace GPS by GNAT Studio. - * gnat_ugn.texi: Regenerate. - -2019-10-10 Ed Schonberg - - * exp_ch6.adb (Expand_Simple_Function_Return_Statement): If the - function to which the return statement applies is an - Ignored_Ghost_Function, do not indicate that it uses the - secondary stack when the return type is unconstrained. - -2019-10-10 Bob Duff - - * libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb, - libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb, - libgnat/a-cborma.adb, libgnat/a-cborse.adb, - libgnat/a-cdlili.adb, libgnat/a-cidlli.adb, - libgnat/a-cihama.adb, libgnat/a-cihase.adb, - libgnat/a-cimutr.adb, libgnat/a-ciorma.adb, - libgnat/a-ciorse.adb, libgnat/a-cobove.adb, - libgnat/a-cohama.adb, libgnat/a-cohase.adb, - libgnat/a-coinve.adb, libgnat/a-comutr.adb, - libgnat/a-conhel.adb, libgnat/a-convec.adb, - libgnat/a-coorma.adb, libgnat/a-coorse.adb (Reference, - Constant_Reference): Use Busy instead of Lock, so we forbid - tampering with cursors, rather than tampering with elements. - -2019-10-10 Ed Schonberg - - * sem_cat.adb (Set_Categorization_From_Pragma): Do not modify - any visibility settings if there are no compilation_unit pragmas - following the package declaration. Add comments for future - cleanup. - -2019-10-10 Patrick Bernardi - - * bindgen.adb (System_Secondary_Stack_Package_In_Closure): - Renamed flag System_Secondary_Stack_Used to be clearer of what - it represents. - (Gen_Adainit): Refactor secondary stack related code to make it - clearer. - * rtsfind.adb (Load_RTU): Don't set Sec_Stack_Used flag here - (RTE): Set Sec_Stack_Used if the System.Secondary_Stack is - referenced, but not if we're ignoring ghost code. - -2019-10-10 Piotr Trojanek - - * sem_prag.adb (Analyze_Global_In_Decl_Part): Simplify previous - test, just like in a recent commit we simplified a similar test - for Depends contract. - -2019-10-04 Joseph Myers - - * gcc-interface/utils.c (flag_isoc2x): New variable. - -2019-10-01 Maciej W. Rozycki - - * gcc-interface/Makefile.in (ADA_RTL_DSO_DIR): New variable. - (install-gnatlib): Use it in place of ADA_RTL_OBJ_DIR for shared - library installation. - -2019-10-01 Maciej W. Rozycki - - * gcc-interface/Make-lang.in (ada.install-common): Split into... - (gnat-install-tools, gnat-install-lib): ... these. - -2019-09-26 Alexandre Oliva - - * gcc-interface/decl.c (components_to_record): Set - DECL_SIZE_UNIT for zero-sized fields. - -2019-09-26 Arnaud Charlet - - * osint.adb (OS_Time_To_GNAT_Time): Remove dependency on To_C/To_Ada - -2019-09-23 Rainer Orth - - * libgnarl/s-osinte__solaris.ads (sysconf): Declare. - (SC_NPROCESSORS_ONLN): Define. - * libgnarl/s-tasinf__solaris.ads (Number_Of_Processors): Declare. - * libgnarl/s-tasinf__solaris.adb (N_CPU): New variable. - (Number_Of_Processors): New function. - -2019-09-23 Eric Botcazou - - * gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop - if -Og is enabled. - (build_return_expr): Do not perform NRV if -Og is enabled. - (Subprogram_Body_to_gnu): Likewise. - (gnat_to_gnu) : Likewise. - (Handled_Sequence_Of_Statements_to_gnu): Do not inline finalizers if - -Og is enabled. - * gcc-interface/utils.c (convert_to_index_type): Return early if -Og - is enabled. - -2019-09-23 Eric Botcazou - - * gcc-interface/trans.c (gnat_compile_time_expr_list): New variable. - (Pragma_to_gnu): Rename local variable. Save the (first) expression - of pragma Compile_Time_{Error|Warning} for later processing. - (Compilation_Unit_to_gnu): Process the expressions saved above. - -2019-09-23 Eric Botcazou - - * gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep - on the underlying type of the node. - (Call_to_gnu): Likewise with the type of the prefix. - -2019-09-23 Eric Botcazou - - * gcc-interface/decl.c (components_to_record): Do not reorder fields - in packed record types if they contain fixed-size fields that cannot - be laid out in a packed manner. - -2019-09-19 Tom Tromey - - * gcc-interface/misc.c (gnat_get_type_bias): Return the bias - when -fgnat-encodings=gdb. - -2019-09-19 Steve Baird - - * sem_prag.adb (Preferred_String_Type): A new function. Given an - expression, determines whether the preference rules defined for - the third-and-later arguments of pragma Annotate suffice to - determine the type of the expression. If so, then the preferred - type is returned; if not then Empty is returned. Handles - concatenations. - (Analyze_Pragma): Replace previous code, which dealt only with - string literals, with calls to the new Preferred_String_Type - function, which also handles concatenations. - * doc/gnat_rm/implementation_defined_pragmas.rst: Update - documentation for pragma Annotate. - * gnat_rm.texi: Regenerate. - -2019-09-19 Eric Botcazou - - * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not return true - on pure alignment considerations if the target does not require - the strict alignment of memory accesses. - -2019-09-19 Eric Botcazou - - * sem_ch12.adb (Check_Private_View): Add a comment to indicate - future work. - -2019-09-19 Eric Botcazou - - * exp_aggr.adb (Has_Mutable_Components): Look at the underlying - type of components to find out whether they are mutable. - -2019-09-19 Eric Botcazou - - * sem_ch12.adb (Instantiate_Package_Body): Check that the body - has not already been instantiated when the body of the parent - was being loaded. - -2019-09-19 Eric Botcazou - - * sem_util.adb (In_Instance): Test whether the current unit has - been analyzed instead of being on the scope stack to detect the - case of actuals of an instantiation of a generic child unit done - as a compilation unit. - -2019-09-19 Dmitriy Anisimkov - - * libgnat/g-socket.ads, libgnat/g-socket.adb - (Create_Socket_Pair): New routine. - * libgnat/g-socthi.ads (OS_Has_Socketpair): Boolean constant. - (C_Socketpair): New imported routine. - * libgnat/g-socthi__mingw.ads, libgnat/g-socthi__vxworks.ads - (Default_Socket_Pair_Family): New constant. - (C_Socketpair): New routine. - * libgnat/g-socthi__mingw.adb, libgnat/g-socthi__vxworks.adb - (C_Socketpair): Is separated in anouther file. - * libgnat/g-sthcso.adb (C_Socketpair): Non UNIX implementation. - * libgnat/g-stsifd__sockets.adb: Reuse C_Socketpair. - -2019-09-19 Yannick Moy - - * sem_prag.adb (Analyze_Depends_In_Decl_Part): Simplify previous - test. - -2019-09-19 Ed Schonberg - - * sem_ch7.adb (Install_Parent_Private_Declarations): If a - generic child unit is instantiated within a sibling child unit, - the analysis of its private part requires that the private part - of the ancestor be available, as is done when the context - includes an instance of the ancestor. - -2019-09-19 Yannick Moy - - * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add special - case for traversal functions. - -2019-09-19 Yannick Moy - - * sem_prag.adb (Analyze_Global_In_Decl_Part): Do not issue an - error when a constant of an access type is used as output in a - Global contract. - (Analyze_Depends_In_Decl_Part): Do not issue an error when a - constant of an access type is used as output in a Depends - contract. - -2019-09-19 Arnaud Charlet - - * exp_attr.adb: Remove obsolete comment. - -2019-09-19 Eric Botcazou - - * sem_ch3.adb (Build_Derived_Access_Type): If this is an access- - to-subprogram type, copy Can_Use_Internal_Rep from the parent. - -2019-09-19 Yannick Moy - - * gcc-interface/Make-lang.in: Remove references to sem_spark. - * sem_spark.adb, sem_spark.ads: Remove unit. - -2019-09-19 Eric Botcazou - - * exp_attr.adb (Is_Inline_Floating_Point_Attribute): Treat - Machine_Rounding as an alias for Rounding. - * sem_res.adb (Simplify_Type_Conversion): Likewise. - -2019-09-19 Gary Dismukes - - * exp_unst.adb (Unnest_Subprogram): Bypass the transformation of - up-level references unless Opt.Generate_C_Code is enabled. - -2019-09-19 Eric Botcazou - - * exp_ch4.adb (Expand_Array_Equality): If optimization is - enabled, generate a simple conjunction of comparisons for the - specific case of constrained 1-dimensional 2-element arrays. - Fix formatting. - -2019-09-19 Piotr Trojanek - - * exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Remove. - (Append_Homonym_Number): Use Homonym_Number instead of - Get_Homonym_Number. - * exp_util.ads, exp_util.adb (Homonym_Number): Mirror style of - the removed Get_Homonym_Number routine, i.e. initialize local - objects at declaration and refine the type of result. - * sem_util.adb (Add_Homonym_Suffix): Use Homonym_Number instead - of Get_Homonym_Number. - -2019-09-19 Ed Schonberg - - * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Simplify - handling of expressions in predicates when the context is a - generic unit. - -2019-09-19 Bob Duff - - * sem_attr.adb (Resolve_Attribute): Make sure the secondary - stack is properly managed in the case of a 'Range attribute in a - loop. - -2019-09-19 Raphael Amiard - - * libgnat/a-cfhase.ads (Set): Add comments to public primitives. - -2019-09-19 Raphael Amiard - - * libgnat/a-cbhama.ads, libgnat/a-cbhase.ads, - libgnat/a-chtgop.ads (Clear): Refine comments - -2019-09-19 Eric Botcazou - - * sem_ch12.adb (Restore_Private_Views): Comment out new code - that clear the Is_Generic_Actual_Type also on the full view. - -2019-09-19 Bob Duff - - * exp_ch3.adb (Rewrite_As_Renaming): Return False if there are - any aspect specifications, because otherwise Insert_Actions - blows up. - -2019-09-19 Eric Botcazou - - * exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Add - Bit_Packed_Array parameter and documet it. Always insert a copy - if it is set True. - (Expand_Actuals): Adjust the calls to - Add_Simple_Call_By_Copy_Code. - -2019-09-19 Bob Duff - - * xref_lib.adb (Get_Symbol_Name): If we reach EOF in the first - loop without finding the symbol, return "???". Otherwise, it's - an infinite loop. - (Parse_EOL): Assert that we're not already at EOF. Remove - processing of LF/CR -- there are no operating systems that use - that. - -2019-09-19 Eric Botcazou - - * exp_ch6.adb (Is_Legal_Copy): Also return false for an aliased - formal and a formal passed by reference in convention Ada. Add - missing guard to the existing test on Is_Valued_Procedure. - -2019-09-19 Bob Duff - - * rtsfind.ads (RTE_Available): Improve comment. - -2019-09-18 Bob Duff - - * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Move call - to RTE_Available later, so it doesn't disturb the elab order. - The RE_Copy_Bitfield entity is defined in package - System.Bitfields which has a dependency on package - System.Bitfield_Utils, which has it its spec: - pragma Elaborate_Body; - The query on RTE_Available forces loading and analyzing - System.Bitfields and all its withed units. - -2019-09-18 Eric Botcazou - - * checks.ads (Alignment_Warnings_Record): Add P component. - * checks.adb (Apply_Address_Clause_Check): Be prepared to kill - the warning also if the clause is of the form X'Address. - (Validate_Alignment_Check_Warning): Kill the warning if the - clause is of the form X'Address and the alignment of X is - compatible. - -2019-09-18 Ed Schonberg - - * sem_res.adb (Set_Mixed_Node_Expression): If a conditional - expression has universal_real alternaitves and the context is - Universal_Fixed, as when it is an operand in a fixed-point - multiplication or division, resolve the expression with a - visible fixed-point type, which must be unique. - -2019-09-18 Ed Schonberg - - * sem_ch3.adb (Constrain_Component_Type): For a discriminated - type, handle the case of a constraint given by a conversion of a - discriminant of the enclosing type. Necessary when compiling a - discriminated task for a restricted run-time, when the generated - Secondary_Stack component may be set by means of an aspect on - the task type. - -2019-09-18 Ed Schonberg - - * exp_aggr.adb (Expand_Record_Aggregate, Rewrite_Discriminant): - After rewriting a reference to an outer discriminant as a - selected component of the enclosing object, analyze the selected - component to ensure that the entity of the selector name is - properly set. This is necessary when the aggregate appears - within an expression that may have been analyzed already. - -2019-09-18 Justin Squirek - - * sem_ch8.adb (Use_One_Type): Add guard to prevent warning on a - reundant use package clause where there is no previous - use_clause in the chain. - -2019-09-18 Justin Squirek - - * exp_ch4.adb (Expand_N_Type_Conversion): Add calculation of an - alternative operand for the purposes of generating accessibility - checks. - -2019-09-18 Eric Botcazou - - * exp_aggr.adb (Build_Array_Aggr_Code): In STEP 1 (c), duplicate - the expression and reset the Loop_Actions for each loop - generated for an others choice. - -2019-09-18 Justin Squirek - - * einfo.adb, einfo.ads (Minimum_Accessibility): Added new field. - (Set_Minimum_Accessibility): Added to set new field. - (Minimum_Accessibility): Added to fetch new field. - * exp_ch6.adb (Expand_Subprogram_Call): Modify calls to fetch - accessibility levels to the new subprogram Get_Accessibility - which handles cases where minimum accessibility might be needed. - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Add section to - generate a Minimum_Accessibility object within relevant - subprograms. - * sem_util.adb, sem_util.ads (Dynamic_Accessibility_Level): - Additional documentation added and modify section to use new - function Get_Accessibility. - (Get_Accessibility): Added to centralize processing of - accessibility levels. - -2019-09-18 Steve Baird - - * sem_util.ads (Interval_Lists): A new visible package. This - package is visible because it is also intended for eventual use - in Sem_Eval.Subtypes_Statically_Compatible when that function is - someday upgraded to handle static predicates correctly. This - new package doesn't really need to be visible for now, but it - still seems like a good idea. - * sem_util.adb (Gather_Components): Implement AI12-0086 via the - following strategy. The existing code knows how to take a static - discriminant value and identify the corresponding variant; in - the newly-permitted case of a non-static value of a static - subtype, we arbitrarily select a value of the subtype and find - the corresponding variant using the existing code. Subsequently, - we check that every other value of the discriminant's subtype - corresponds to the same variant; this is done using the newly - introduced Interval_Lists package. - (Interval_Lists): Provide a body for the new package. - -2019-09-18 Javier Miranda - - * exp_ch4.adb (Expand_N_Op_Eq): The frontend assumes that we can - do a bit-for-bit comparison of two access to protected - subprogram pointers. However, there are two reasons why we may - not be able to do that: (1) there may be padding bits for - alignment before the access to subprogram, and (2) the access to - subprogram itself may not be compared bit-for- bit because the - activation record part is undefined: two pointers are equal iff - the subprogram addresses are equal. This patch fixes it by - forcing a field-by-field comparison. - * bindgen.adb (Gen_Adainit): The type No_Param_Proc is defined - in the library as having Favor_Top_Level, but when we create an - object of that type in the binder file we don't have that - pragma, so the types are different. This patch fixes this issue. - * libgnarl/s-interr.adb, libgnarl/s-interr__hwint.adb, - libgnarl/s-interr__sigaction.adb, libgnarl/s-interr__vxworks.adb - (Is_Registered): This routine erroneously assumes that the - access to protected subprogram is two addresses. We need to - create the same record that the compiler makes to ensure that - any padding is the same. Then we have to look at just the first - word of the access to subprogram. This patch fixes this issue. - -2019-09-18 Bob Duff - - * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): The call - to Copy_Bitfield is now enabled. - (Expand_Assign_Array_Bitfield): Multiply 'Length times - 'Component_Size "by hand" instead of using 'Size. - -2019-09-18 Vasiliy Fofanov - - * doc/gnat_rm/implementation_defined_pragmas.rst: Fix minor - formatting issue. - -2019-09-18 Javier Miranda - - * exp_disp.adb (Make_DT, Make_Secondary_DT): Remove generation - of alignment representation clause for the following tables: - Predef_Prims, Iface_DT, TSD, ITable, DT. - -2019-09-18 Steve Baird - - * sem_eval.adb (Expr_Value): Do not fail "the type of a null - literal must be an access type" assertion if errors have already - been posted on the given node. - -2019-09-18 Piotr Trojanek - - * exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Refine type - from Nat to Pos. - * sem_util.adb (Add_Homonym_Suffix): Refine type of a local - variable. - -2019-09-18 Yannick Moy - - * exp_dbug.adb (Append_Homonym_Number): Use new function - Get_Homonym_Number. - (Get_Homonym_Number): New function to return the homonym number. - (Qualify_Entity_Name): Remove special case for GNATprove. - * exp_dbug.ads (Get_Homonym_Number): Make the new function - public for use in GNATprove. - * frontend.adb (Frontend): Do not qualify names in GNATprove - mode. - * sem_util.adb (Unique_Name): Append homonym suffix where needed - for entities which have local homonyms in the same scope. - -2019-09-18 Nicolas Roche - - * libgnat/s-valrea.adb (Scan_Integral_Digits): New procedure. - (Scan_Decimal_Digits): New procedure. - (As_Digit): New function. - (Scan_Real): Use Scan_Integral_Digits and Scan_Decimal_Digits. - -2019-09-18 Claire Dross - - * exp_attr.adb (Expand_N_Attribute_Reference): Call routine from - Exp_Util to know the value of the Constrained attribute in the - static case. - * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Make - implicit dereferences inside the Constrained attribute explicit. - * exp_util.ads, exp_util.adb - (Attribute_Constrained_Static_Value): New routine to compute the - value of a statically known reference to the Constrained - attribute. - -2019-09-18 Vadim Godunko - - * libgnat/g-expect.adb (Expect_Internal): Don't include invalid - file descriptors into the set of file descriptors for Poll. - Raise Process_Died exception when computed set of file - descriptors to monitor is empty. - -2019-09-18 Frederic Konrad - - * adaint.c: Include dosFsLib.h and vwModNum.h for VxWorks 6. - (__gnat_rename): Map S_dosFsLib_FILE_NOT_FOUND to ENOENT. - -2019-09-18 Steve Baird - - * freeze.adb (Freeze_Object_Declaration): Do not call - Check_Large_Modular_Array when the object declaration being - frozen is an ignored ghost entity. - -2019-09-18 Tom Tromey - - * make.adb (Initialize): Fix typo. - -2019-09-18 Olivier Hainque - - * libgnat/s-win32.ads (DWORD_PTR): New type, pointer size - unsigned int. - (SYSTEM_INFO): Use it for dwActiveProcessorMask. - -2019-09-18 Arnaud Charlet - - * doc/gnat_rm/implementation_defined_pragmas.rst: Improve doc on - Warning_As_Error. - * gnat_rm.texi: Regenerate. - -2019-09-18 Arnaud Charlet - - * doc/gnat_rm/implementation_defined_characteristics.rst, - doc/gnat_rm/implementation_defined_pragmas.rst, - doc/gnat_rm/implementation_of_specific_ada_features.rst: Remove - remaining references to VMS support - * gnat_rm.texi: Regenerate. - -2019-09-18 Arnaud Charlet - - * libgnat/s-stausa.adb: Fix a typo - -2019-09-18 Bob Duff - - * libgnat/a-cbhama.adb, libgnat/a-cbhase.adb, - libgnat/a-cbmutr.adb, libgnat/a-cborma.adb, - libgnat/a-cborse.adb, libgnat/a-cobove.adb (Copy): Avoid reading - the uninitialized variable C in the Checks = False case. Change - variable to be a constant. - -2019-09-18 Claire Dross - - * libgnat/a-cofuma.adb (Remove, Elements_Equal_Except, - Keys_Included, Keys_Included_Except): Rename loop indexes and - global constants from I to J. - -2019-09-18 Arnaud Charlet - - * exp_unst.adb (Unnest_Subprograms): Refine previous change. - -2019-09-17 Claire Dross - - * libgnat/a-cofuma.ads, libgnat/a-cofuma.adb (Remove): New - function which returns a copy of the input container without a - given mapping. - -2019-09-17 Yannick Moy - - * libgnat/s-arit64.adb (Double_Divide): Correctly handle the - special case when rounding. - -2019-09-17 Javier Miranda - - * sem_ch3.adb (Complete_Private_Subtype): Propagate attributes - Has_Attributes and Predicate_Function to the cloned subtype. - -2019-09-17 Eric Botcazou - - * sem.adb (Do_Analyze): Save Style_Check_Max_Line_Length on - entry and restore it on exit instead of recomputing it. - -2019-09-17 Tom Tromey - - * exp_dbug.ads: Update character type comment. - -2019-09-17 Yannick Moy - - * libgnat/s-arit64.adb (Double_Divide): Simplify needlessly - complex computation. Fix comments. - (Scaled_Divide): Fix comments. Explain why implementation does - not suffer from bugs in Algorithm D from 2nd Edition of TAOCP. - -2019-09-17 Yannick Moy - - * libgnat/s-arit64.adb (Scaled_Divide): Add protection against - undesirable wrap-around. - -2019-09-17 Yannick Moy - - * libgnat/s-arit64.adb (Double_Divide): Fix two possible - overflows. - -2019-09-17 Dmitriy Anisimkov - - * make_util.ads (On_Windows): Move... - * osint.ads (On_Windows): There. - * osint.adb (OS_Time_To_GNAT_Time): If odd incremented on - Windows before conversion to Time_Stamp_Type. - -2019-09-17 Yannick Moy - - * sem_spark.adb (Check_Declaration): Do not check the assignment - from an illegal declaration. - -2019-09-17 Bob Duff - - * doc/gnat_ugn/gnat_and_program_execution.rst: Clarify - documentation. - * gnat_ugn.texi: Regenerate. - * libgnat/s-stausa.ads: Clarify comments. - -2019-09-17 Steve Baird - - * sem_util.adb (Wrong_Type): In deciding to suppress a message, - it is not enough for In_Instance to be True; in addition, - In_Generic_Actual (Expr) must be False. - * sem_type.adb (In_Generic_Actual): Fix bug where traversal of - parents skips every other node. - -2019-09-17 Claire Dross - - * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): If the - definition of a local borrower contains calls to traversal - functions, the borrowed expression is the first parameter of the - first traversal function call in the definition. - -2019-09-17 Ed Falis - - * doc/gnat_rm/implementation_defined_pragmas.rst: Remove - section. - * gnat_rm.texi, gnat_ugn.texi: Regenerate. - -2019-09-17 Vadim Godunko - - * libgnat/g-exptty.ads (Close_Input): New subprogram. - * libgnat/g-exptty.adb (Close_Input): New subprogram. - (Close): Move close of TTY to Close_Input. - * terminals.c (__gnat_close_tty): Set file descriptors to - invalid value after close. - -2019-09-17 Vadim Godunko - - * libgnat/g-expect.adb (Expect_Internal): Try to call 'poll' few - times. - -2019-09-17 Vadim Godunko - - * libgnat/g-expect.ads, libgnat/g-expect.adb (Close_Input): New - subprogram. - (Get_Command_Output): Call Close_Input to close input stream. - (Expect_Internal): Likewise. - (Close): Likewise. - * libgnat/g-exptty.adb (Close): Likewise. - -2019-09-17 Piotr Trojanek - - * sem_util.ads, sem_util.adb (Is_Attribute_Old): New utility - routine. - -2019-09-17 Yannick Moy - - * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add handling - for dispatching operations. - -2019-09-17 Ed Schonberg - - * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In a - generic context, for a Predicate aspect, use - Preanalyze_Spec_Expression to verify conformance. - -2019-09-17 Javier Miranda - - * sem_ch3.adb (Constrain_Corresponding_Record): Propagate - attribute Is_Tagged_Type. - -2019-09-17 Javier Miranda - - * exp_ch3.adb (Build_Record_Init_Proc): Do not generate code to - adjust the tag component when the record is initialized with a - raise expression. - * sem_aggr.adb (Valid_Limited_Ancestor): Return True for - N_Raise_Expression nodes. - (Valid_Ancestor_Type): Return True for raise expressions. - * sem_ch3.adb (Analyze_Component_Declaration): Do not report an - error when a component is initialized with a raise expression. - * sem_ch4.adb (Analyze_Qualified_Expression): Do not report an - error when the aggregate has a raise expression. - -2019-09-17 Piotr Trojanek - - * ali.ads: Fix casing in comment. - * ali-util.ads, ali-util.adb (Read_Withed_ALIs): Remove - Ignore_Errors parameter; it was only set to non-default value of - True when running in GNATprove_Mode and wrongly reset to False - when calling this routine recursively. Now in GNATprove mode we - want it to be always True, so in fact it is equivalent to - GNATProve_Mode flag itself (which was already used in this - routine). - -2019-09-17 Arnaud Charlet - - * adaint.c (_REENTRANT, _THREAD_SAFE): Only define if needed. - -2019-09-17 Arnaud Charlet - - * libgnat/s-bitfie.ads (Val_Bits, Val_Bytes): Define from - Long_Long_Integer'Size. - -2019-09-17 Javier Miranda - - * exp_ch6.ads (Needs_BIP_Task_Actuals): New subprogram. - * exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): Code - cleanup. - (Check_Number_Of_Actuals): New subprogram. - (Make_Build_In_Place_Call_In_Allocator): Adding assertion. - (Make_Build_In_Place_Call_In_Anonymous_Context): Adding - assertion. - (Make_Build_In_Place_Call_In_Assignment): Adding assertion. - (Make_Build_In_Place_Call_In_Object_Declaration): Code cleanup - plus assertion addition. - (Needs_BIP_Task_Actuals): New subprogram. - * sem_ch6.adb (Create_Extra_Formals): Rely on - Needs_BIP_Task_Actuals() to check if the master of the tasks to - be created, and the caller's activation chain formals are - needed. - -2019-09-17 Bob Duff - - * libgnat/s-bituti.adb (Get_Val_2, Set_Val_2): Use new routines - for getting and setting a Val_2, avoiding touching the second - half when that half might not exist. - * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Correct - tests for potential volatile or independent components. In - particular, do not call Prefix unless we know it's a slice. - -2019-09-17 Dmitriy Anisimkov - - * gsocket.h: Include sys/un.h. - * s-oscons-tmplt.c (AF_UNIX): New constant generation. - (SIZEOF_sockaddr_un): Idem. - * libgnat/g-socket.ads (Family_Type): New value Family_Unix - added. - (Family_Inet_4_6): New subtype only for network families. - (Sock_Addr_Type): Add Unbounded_String field for Family_Unix - variant. - (Unix_Socket_Address): Create Sock_Addr_Type from socket - pathname. - (Network_Socket_Address): Create Sock_Addr_Type from - Inet_Addr_Type and Port_Type parameters. - * libgnat/g-socket.adb: Support local unix address in socket - routines. - (Get_Address_Info): Disable warning about Result may be - referenced before it has a value. Remove duplicated code to exit - from Look_For_Supported. - * libgnat/g-sothco.ads (Unix_Name_Length): New constant defining - maximum number of characters in local socket address path. - (Sockaddr): Add variant for Family_Unix address family. Move - Sin_Port and Sin_Family to Family_Inet section. Add Sin6_Port - and Sin6_Family to Family_Inet6 section. - (Set_Address): Add out parameter Length to return valuable - Sockaddr data length. - (Get_Address): Add input parameter Length to set valuable - Sockaddr data length. - * libgnat/g-sothco.adb: Support local unix address in socket - routines. - -2019-09-17 Eric Botcazou - - * exp_attr.adb (Expand_Size_Attribute): Chain the special cases - on the back-end path and rewrite the attribute appled to slices - of bit-packed arrays into the product of the Length and the - Compoent_Size attributes of the slices. - * exp_ch5.adb (Expand_Assign_Array_Bitfield): Use Size attribute - directly to compute the bitfield's size. - -2019-09-17 Bob Duff - - * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Add tests - for potential volatile or independent components. - * libgnat/s-bituti.adb (Copy_Small_Bitfield, - Copy_Large_Bitfield): Move declarations to more appropriate - place. - -2019-09-13 Maciej W. Rozycki - - * make.adb (Scan_Make_Arg): Also accept `--sysroot=' for the - compiler and the linker. - -2019-08-30 Eric Botcazou - - * gcc-interface/decl.c (maybe_saturate_size): New function. - (gnat_to_gnu_entity): Invoke it on the Esize of types before sending - it for back-annotations. - * gcc-interface/trans.c: Fix typo. - -2019-08-30 Eric Botcazou - - * gcc-interface/ada-tree.h (DECL_FORCED_BY_REF_P): New macro. - * gcc-interface/decl.c (gnat_to_gnu_param): Set it on parameters - whose mechanism was forced to by-reference. - * gcc-interface/trans.c (Call_to_gnu): Do not issue a warning about a - misaligned actual parameter if it is based on a CONSTRUCTOR. Remove - obsolete warning for users of Starlet. Issue a warning if a temporary - is make around the call for a parameter with DECL_FORCED_BY_REF_P set. - (addressable_p): Return true for REAL_CST and ADDR_EXPR. - -2019-08-30 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu): Do not set the location on an - expression used for a tag. - -2019-08-30 Eric Botcazou - - * gcc-interface/gigi.h (aggregate_type_contains_array_p): Declare. - * gcc-interface/decl.c (gnat_to_gnu_entity) : For an - extension, test Has_Record_Rep_Clause instead of Has_Specified_Layout. - (adjust_packed): Return 0 if the type of the field is an aggregate - type that contains (or is) a self-referential array. - (type_has_variable_size): Delete. - * gcc-interface/utils.c (inish_record_type): Constify a variable. - (aggregate_type_contains_array_p): Add parameter SELF_REFERENTIAL. - : Pass it in the recursive call. - : If it is true, return true only if the array type is - self-referential. - (create_field_decl): Streamline the setting of the alignment on the - field. Pass false to aggregate_type_contains_array_p. - -2019-08-30 Eric Botcazou - - * gcc-interface/trans.c (lvalue_required_p) : Adjust GNU_TYPE - in the recursive call. - : Likewise. - -2019-08-30 Eric Botcazou - - * gcc-interface/utils.c (build_template): Deal with parameters - passed by pointer to component of multi-dimensional arrays. - -2019-08-30 Eric Botcazou - - * gcc-interface/decl.c (annotate_value) : Inline the call - also if List_Representation_Info is greater than 3. - -2019-08-30 Eric Botcazou - - * gcc-interface/trans.c (Attribute_to_gnu) : Add assertion. - -2019-08-30 Eric Botcazou - - * gcc-interface/gigi.h (gigi_checking_assert): New macro. - * gcc-interface/decl.c (gnat_to_gnu_entity) : - Remove redundant test and adjust comments. Minor tweaks. - * gcc-interface/trans.c (Call_to_gnu): Do not generate range checks, - instead assert that the Do_Range_Check flag is not set. Adjust call - to convert_with_check. - (gnat_to_gnu): Likewise. - (assoc_to_constructor): Likewise. - (pos_to_constructor): Likewise. Remove GNAT_COMPONENT_TYPE parameter. - (emit_range_check): Delete. - (convert_with_check): Remove RANGE_P parameter and adjust. Do a single - overflow check for modular types. - -2019-08-23 Jakub Jelinek - - PR middle-end/91283 - * gcc-interface/misc.c (gnat_post_options): Set flag_excess_precision - instead of flag_excess_precision_cmdline. - -2019-08-21 Vadim Godunko - - * libgnat/g-expect.adb (Expect_Internal): Attempt to read - several times when 'read' returns non-positive. - -2019-08-21 Piotr Trojanek - - * einfo.adb (Is_Discriminal): Remove extra parens. - (Is_Constant_Object): Simplify by reusing Ekind_In. - (Is_Prival): Remove extra parens. - * checks.adb, exp_ch4.adb, sem_ch3.adb, sem_spark.adb: Minor - reformattings. - -2019-08-21 Claire Dross - - * libgnat/a-cofove.ads (Vector): Add an Iterable aspect to allow - iteration. - (Iter_First, Iter_Next): Primitives used for iteration. - -2019-08-21 Yannick Moy - - * sem_ch3.adb (Analyze_Subtype_Declaration): Inherit RM_Size - field for formal type parameters in generic instantiations. - -2019-08-21 Yannick Moy - - * sem_spark.adb: Update references to the SPARK RM. - -2019-08-21 Eric Botcazou - - * repinfo.adb (List_Array_Info): In -gnatR4 mode, set the - relevant flag on the component type here instead of... - (List_Object_Info): Likewise for the object type. - (List_Entities): ...here. In -gnatR4 mode, recurse into - entities local to a record type. - (List_Component_Layout): In -gnatR4 mode, mark the type as - relevant. - -2019-08-21 Bob Duff - - * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and - s-biutin.o. - * exp_ch5.adb (Expand_Assign_Array_Bitfield): New function to - generate a call to Copy_Bitfield. This is disabled for now. - (Expand_Assign_Array_Loop_Or_Bitfield): New function to decide - whether to call Expand_Assign_Array_Bitfield. - (Expand_Assign_Array): Call Expand_Assign_Array_Loop_Or_Bitfield - instead of Expand_Assign_Array_Loop. - * libgnat/s-bitfie.ads, libgnat/s-bituti.adb, - libgnat/s-bituti.ads: New units. - * rtsfind.ads: Add enum literals for accessing Copy_Bitfield. - -2019-08-21 Piotr Trojanek - - * bindo-graphs.ads (Iterate_Edges_To_Successors): Fix typo in - pragma Inline. - * bindo-graphs.adb (Delete_Edge): Fix layout in parameter list. - -2019-08-21 Gary Dismukes - - * exp_ch3.adb (Build_Master): Suppress call to - Build_Class_Wide_Master in the case where the - access-to-limited-class-wide type was created for a component in - an entry's formal parameter - block (Is_Parameter_Block_Component_Type), to prevent a master - from being created for such access types generated by the front - end in a task spec for entry formals in a parameter block. Add - a ??? about whether this suppression should be done more - generally (such as by using Comes_From_Source). - -2019-08-21 Eric Botcazou - - * exp_ch6.adb (Expand_N_Extended_Return_Statement): In the case - of a built-in-place function that doesn't need a BIP_Alloc_Form - parameter but returns unconstrained, build the return - consistently using the function's result subtype. Remove bypass - added in previous change. - -2019-08-21 Piotr Trojanek - - * sem_prag.adb (Max_Entry_Queue_Length): Do not substitute - expression of the pragma argument with its value during - analysis. - * sem_util.adb (Get_Max_Queue_Length): Compute value of the - pragma argument when needed. - -2019-08-21 Yannick Moy - - * checks.adb (Install_Null_Excluding_Check): Do not install - check in GNATprove mode. - -2019-08-21 Yannick Moy - - * sem_spark.adb (Process_Path): Do nothing on address of - subprogram. - -2019-08-21 Eric Botcazou - - * exp_util.adb (Finalize_Address): Deal consistently with - subtypes of private protected types. - -2019-08-21 Piotr Trojanek - - * exp_util.adb (Corresponding_Runtime_Package): Use high-level - Is_Protected_Type. - * sem_ch8.adb (Analyze_Renamed_Entry): Likewise. - * sem_ch9.adb (Analyze_Requeue): Likewise. - -2019-08-21 Javier Miranda - - * sem_util.adb (Update_Named_Associations): Update - First_Named_Actual when the subprogram call has a single named - actual. - -2019-08-21 Joel Brobecker - - * doc/Makefile (mk_empty_dirs): New (PHONY) rule. - (%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on - mk_empty_dirs. - -2019-08-21 Justin Squirek - - * doc/gnat_rm/implementation_defined_pragmas.rst: Modify - documentation to reflect expected behavior. - * gnat_rm.texi: Regenerate. - * sem_prag.adb (Analyze_Pragma): Modify handling of pragma - Max_Entry_Queue_Length to not reject integer values of negative - one. - * sem_util.adb (Get_Max_Queue_Length): Add processing for values - of negative one to fit within the current scheme. - -2019-08-20 Arnaud Charlet - - * exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take - inlining (-gnatn) into account. - -2019-08-20 Ed Schonberg - - * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case - Storage_Size): If the expression for Storage_Size is not static - it may depend on characterstics of another type that may bot be - frozen yet, so the elaboration of the expression for the aspect - must be attached directly to the freeze actions of the type to - which it applies. - -2019-08-20 Piotr Trojanek - - * exp_util.adb (Build_DIC_Procedure_Declaration): Set the last - entity of the generated Default_Initial_Condition procedure in - order to construct a proper entity chain. - -2019-08-20 Yannick Moy - - * exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component): - Renaming of function to apply to slices as well. - (Expand_SPARK): Expand prefix of slices of access type. - -2019-08-20 Bob Duff - - * exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in - the nonlimited case in STEP 4. This improves the efficiency of - things like (1 .. 1000 => <>). We still generate some code for - that, unfortunately, but it is much improved. - (Aggr_Assignment_OK_For_Backend): Return false if <> components - are present. - -2019-08-20 Bob Duff - - * exp_ch6.adb (Needs_BIP_Alloc_Form): Call - Requires_Transient_Scope rather than checking constrainedness - and so forth. We have previously improved - Requires_Transient_Scope to return False in various cases, - notably a limited record with an access discriminant. This - change takes advantage of that to avoid using the secondary - stack for functions returning such types. - (Make_Build_In_Place_Call_In_Allocator): Be consistent by - calling Needs_BIP_Alloc_Form rather than Is_Constrained and so - forth. - * sem_ch4.adb (Analyze_Allocator): The above change causes the - compiler to generate code that is not legal Ada, in particular - an uninitialized allocator for indefinite subtype. This is - harmless, so we suppress the error message in this case. - -2019-08-20 Gary Dismukes - - * ali.adb, ali.ads, aspects.adb, checks.ads, checks.adb, - doc/gnat_rm/implementation_defined_pragmas.rst, - doc/gnat_ugn/building_executable_programs_with_gnat.rst, - einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.ads, exp_ch4.adb, - exp_disp.adb, inline.adb, libgnat/a-locale.ads, - libgnat/s-soflin.ads, par_sco.adb, repinfo.adb, sem_ch5.adb, - sem_disp.adb, sem_elab.adb, sem_eval.adb, sem_spark.adb, - sem_spark.ads, sinfo.ads: Minor reformattings, typo fixes and - and rewordings. - -2019-08-20 Dmitriy Anisimkov - - * adaint.c (__gnat_to_gm_time): On _WIN32, don't round time up - to even second. - -2019-08-20 Ed Schonberg - - * sem_ch3.adb (Analyze_Object_Declaration): If actual type is - private and distinct from nominal type in declaration, propagate - flags Is_Constr_Subt_For_U_Nominal and _UN_Aliased to full view - of private type. - -2019-08-20 Ed Schonberg - - * exp_attr.adb (Expand_Loop_Entry_Attribute): When expanding a - loop entry attribute for a while_loop we construct a function - that incorporates the expanded condition of the loop. The itypes - that may be generated in that expansion must carry the scope of - the constructed function for proper handling in gigi. - -2019-08-20 Ed Schonberg - - * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When a - dispatching call tp a subprogram with a class-wide precondition - occurrs in the same declarative part as the ancestor subprogram - being called, the`expression for the precondition has not been - analyzed yet. Such a call may appear, e.g. in an expression - function. In that case, the replacement of formals by actuals in - the call cannot use the formal entities of the subprogram being - called, and the occurrence of the formals in the expression must - be located by name (Chars fields) as would be done at a later - freeze point, when the expression is resolved in the context of - the subprogram itself. - -2019-08-20 Bob Duff - - * sem_prag.adb (Persistent_BSS): If an initialization is present - because of Initialize_Scalars or Normalize_Scalars, generate an - implicit pragma Suppress_Initialization to remove that, because - initialization is not allowed for these variables. Other - initializations remain illegal. - -2019-08-20 Gary Dismukes - - * sem_ch3.adb (OK_For_Limited_Init_In_05): In the case of type - conversions, apply the recursive call to the Original_Node of - the expression Exp rather than the Expression of the - Original_Node, in the case where Exp has been rewritten; - otherwise, when Original_Node is the same as Exp, apply the - recursive call to the Expression. - (Check_Initialization): Revise condition for special check on - type conversions of limited function calls to test Original_Node - (avoiding spurious errors on expanded unchecked conversions - applied to build-in-place dispatching calls). - -2019-08-20 Patrick Bernardi - - * exp_aggr.adb (Expand_Record_Aggregate): Always convert a - record Aggregate to assignment statements if the option - Aggregate_Individually_Assign is set. - * opt.ads (Aggregate_Individually_Assign): New option. - * par-prag.adb (Prag): Add Pragma_Aggregate_Individually_Assign. - * sem_prag.adb (Analyze_Pragma): Likewise. - * snames.ads-tmpl: Add Pragma_Aggregate_Individually_Assign and - Name_Aggregate_Individually_Assign. - * doc/gnat_rm/implementation_defined_pragmas.rst: Document - pragma Aggregate_Individually_Assign. - * gnat_rm.texi: Regenerate. - -2019-08-20 Bob Duff - - * par-ch4.adb: Minor wording change in error messages. - * sem_aggr.adb (Resolve_Delta_Aggregate): Emit an error for Ada - versions prior to Ada 2020. - -2019-08-20 Bob Duff - - * freeze.adb (Is_Atomic_VFA_Aggregate): Make the temp for - initialization of the atomic variable be constant. This is - cleaner, and might improve efficiency. - -2019-08-20 Eric Botcazou - - * repinfo.adb (List_Record_Info): In -gnatR4 mode, set the - relevant flag on the implicit base type of a record subtype. - -2019-08-20 Bob Duff - - * sem_eval.adb (Expr_Value): Implement the case of an unchecked - conversion of a static expression. - -2019-08-20 Bob Duff - - * sem_ch13.adb (Is_Null_Array): New function, used to detect the - null array case; used to warn about uncheckedly converting to a - zero-sized array. It is unfortunate that we can't just check - the size, and warn on all cases of converting from a - nonzero-sized type to a zero-sized one. That's because "0" means - two different things: "size is zero" and "size is unknown". - Until we fix that design flaw, we need this more targeted fix. - -2019-08-20 Bob Duff - - * libgnat/a-cborma.adb, libgnat/a-cborse.adb (Clear): Repeatedly - call Delete. This avoids clearing the free list, which - substantially speeds up future Delete operations. - -2019-08-20 Bob Duff - - * sem_ch13.adb (Component_Order_Check): New procedure to check - for out-of-order clauses. - * warnsw.ads, warnsw.adb: New -gnatw_r switch. - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Document new switch. - * gnat_ugn.texi: Regenerate. - -2019-08-20 Bob Duff - - * sem_ch13.adb (Object_Size): Give an error for zero. It really - rubs me the wrong way that we don't honor "for T'Object_Size use - 0;", but it's not important enough to fix. In any case, if we're - not going to obey the clause, we should give an error. - -2019-08-20 Bob Duff - - * errout.adb (Error_Msg_Internal): Set Warn_Err in case of - Is_Style_Msg. - * erroutc.adb (Output_Msg_Text): Do Warnings_Treated_As_Errors - processing and [warning-as-error] modification for style - messages. Clean up code, simplify, remove unnecessary block - statement, add renaming of table entry. - * erroutc.ads (Warning_Treated_As_Error): Fix comment: no such - thing as Set_Warning_As_Error. - * opt.ads: Clean up comments and move related declarations near - each other. - * par-prag.adb: Process Warning_As_Error. This is necessary - because many style warning happen during parsing. - * sem_prag.adb: Use new Acquire_Warning_Match_String. - * sem_util.ads, sem_util.adb (Acquire_Warning_Match_String): New - function shared by par-prag.adb and sem_prag.adb. Replaces the - procedure in sem_prag.adb. Avoid use of global variables. - * stringt.ads, stringt.adb (To_String): New function to convert - String_Id to String. - * doc/gnat_rm/implementation_defined_pragmas.rst: Document the - new feature. - * gnat_rm.texi: Regenerate. - -2019-08-20 Eric Botcazou - - * lib.ads: Add with clause for GNAT.HTable. - Add pragma Inline for Is_Loaded and alphabetize the list. - (Unit_Name_Table_Size): New constant. - (Unit_Name_Header_Num): New subtype. - (Unit_Name_Hash): New function declaration. - (Unit_Names): New simple hash table. - (Init_Unit_Name): New procedure declaration. - * lib.adb (Set_Unit_Name): Unregister the old name in the table, - if any, and then register the new name. - (Init_Unit_Name): New procedure. - (Is_Loaded): Reimplement using a lookup in the names table. - (Remove_Unit): Unregister the name. - (Unit_Name_Hash): New function. - * lib-load.adb (Create_Dummy_Package_Unit): Call Init_Unit_Name. - (Load_Unit): Use a lookup in the names table to find out whether - the unit has already been loaded. Call Init_Unit_Name and then - Remove_Unit if the loading has failed. - (Make_Child_Decl_Unit): Call Init_Unit_Name. - (Make_Instance_Unit): Likewise. - * lib-writ.adb (Ensure_System_Dependency): Likewise. - -2019-08-20 Bob Duff - - * sem_ch13.adb (Record_Hole_Check): Initialize After_Last. - -2019-08-20 Piotr Trojanek - - * impunit.adb (Get_Kind_Of_Unit): Revert change for adapting - this routine for gnatprove. - -2019-08-20 Arnaud Charlet - - * doc/gnat_rm/implementation_defined_pragmas.rst: Document - requirements for Pragma Lock_Free. - * gnat_rm.texi: Regenerate. - -2019-08-20 Philippe Gil - - * bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv - only when still uninitialized. - -2019-08-20 Bob Duff - - * libgnat/g-comlin.ads (Exit_From_Command_Line): Fix - documentation for GNAT.Command_Line. - -2019-08-20 Pierre-Marie de Rodat - - PR ada/91492 - * gcc-interface/lang.opt (-fdump-scos): Add missing dot at the - end of the documentation. - -2019-08-20 Richard Sandiford - - * gcc-interface/misc.c (default_pass_by_ref): Update call to - pass_by_reference. - -2019-08-19 Bob Duff - - * doc/gnat_rm/implementation_advice.rst: Fix documentation for - stream oriented attributes. - * gnat_rm.texi: Regenerate. - -2019-08-19 Gary Dismukes - - * einfo.ads (E_Function, E_Procedure): Update comments to - reflect that Renamed_Entity is also used for nongeneric - subprograms. - -2019-08-19 Eric Botcazou - - * sem_prag.adb (Is_Before_First_Decl): Deal with rewritten - pragmas. - -2019-08-19 Bob Duff - - * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning - on formal parameters of dispatching operations. - -2019-08-19 Ed Schonberg - - * sem_res.adb (Resolve_Call): A call to an expression function - freezes when expander is active, unless the call appears within - the body of another expression function, - -2019-08-19 Dmitriy Anisimkov - - * libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New - routines. - -2019-08-19 Bob Duff - - * exp_attr.adb (Attribute_Valid): Correct the handling of - private types where the full type is modular. System.Address is - an example. Otherwise, we convert uncheckedly to a signed type, - so we get an incorrect range 0 .. -1, for which all values will - fail. The 'Valid attribute is illegal for such types, but we - generate such illegal attribute_references for 'Valid_Scalars, - and we generate 'Valid_Scalars when the -gnateV switch is used. - Rename Btyp --> PBtyp to avoid hiding the outer Btyp, which was - confusing. - * libgnat/a-except.adb: Set the Exception_Raised component. - Otherwise, we have incorrect reads of invalid data. - -2019-08-19 Pierre-Marie de Rodat - - * libgnat/a-cgaaso.ads, libgnat/a-cgarso.ads, - libgnat/a-cogeso.ads, libgnat/a-contai.ads, - libgnat/a-locale.ads: Import documentation from the RM. - -2019-08-19 Jerome Guitton - - * Makefile.rtl (system.o): New target to add generation of - target properties. - * gcc-interface/Makefile.in (install-gnatlib): Install - ada_target_properties. - -2019-08-19 Eric Botcazou - - * inline.adb (Add_Inlined_Body): Do not special-case instances - that are compilation units. - (Add_Pending_Instantiation): Likewise. - (Instantiate_Body): Skip instantiations that are compilation - units and have already been performed. - * sem_ch12.adb (Needs_Body_Instantiated): Do not special-case - instances that are compilation units. - (Load_Parent_Of_Generic): Be prepared for parent that is a - compilation unit but whose instantiation node has not been - replaced. - -2019-08-19 Eric Botcazou - - * inline.adb (Initialize, Lock): Deal with - Called_Pending_Instantiations. - -2019-08-19 Ed Schonberg - - * sem_ch6.adb (Check_Synchronized_Overriding): Complete - predicate that applies legality check in 9.4 (11.9/2): if an - inherited subprogram is implemented by a protected procedure or - entry, its first paarameter must be out, in_out or - access_to_varible. - -2019-08-19 Javier Miranda - - PR ada/65696 - * exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims): - Adding formal to specify how many predefined primitives are - inherited from the parent type. - * exp_disp.adb (Number_Of_Predefined_Prims): New subprogram. - (Make_Secondary_DT): Compute the number of predefined primitives - of all tagged types (including tagged types not defined at - library level). Previously we unconditionally relied on the - Max_Predef_Prims constant value when building the dispatch - tables of tagged types not defined at library level (thus - consuming more memory for their dispatch tables than required). - (Make_DT): Compute the number of predefined primitives that must - be inherited from their parent type when building the dispatch - tables of tagged types not defined at library level. Previously - we unconditionally relied on the Max_Predef_Prims constant value - when building the dispatch tables of tagged types not defined at - library level (thus copying more data than required from the - parent type). - -2019-08-19 Bob Duff - - * sem_ch13.adb (Record_Hole_Check): Procedure to check for holes - that incudes processing type extensions. A type extension is - processed by first calling Record_Hole_Check recursively on the - parent type to compute the bit number after the last component - of the parent. - -2019-08-19 Gary Dismukes - - * checks.adb (Length_Mismatch_Info_Message): New function in - Selected_Length_Checks to return a message indicating the - element counts for the mismatched lengths for a failed - compile-time length check. - (Plural_Or_Singular_Ending): Support function in - Length_Mismatch_Info_Message to return either "" or "s", for - concatenating to the end of words. - (Selected_Length_Checks): Pass the result of - Length_Mismatch_Info_Message as an extra warning message to - Compile_Time_Constraint_Error to indicate the mismatched lengths - for a failed compile-time length check. - * sem_util.ads (Compile_Time_Constraint_Error): Add an optional - message formal (Extra_Msg), defaulted to the empty string. - * sem_util.adb (Compile_Time_Constraint_Error): Output an extra - message following the main warning message (when Extra_Msg is - not the empty string). - -2019-08-19 Patrick Bernardi - - * socket.c: Removed the redefinition of getaddrinfo, getnameinfo - and freeaddrinfo to internal VxWorks kernel calls because they - are, well, internal kernel calls and cannot be called from RTPs. - VxWorks provides the necessary components to call these routines - directly. - -2019-08-19 Eric Botcazou - - * exp_dist.adb (Is_Generic_Actual_Subtype): New predicate. - (Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call): - Use it instead of Is_Generic_Actual_Type flag to detect subtypes - representing generic actual types. - -2019-08-19 Ed Schonberg - - * sem_warn.adb (Check_References, Generic_Body_Formal): When a - formal parameter of a generic subprogram is not referenced in - the body, place the corresponding warning on the corresponding - entity in the specification of the generic body, as is done for - non-generic subprograms. - -2019-08-19 Bob Duff - - * errout.ads (Size_Too_Small_Message): New constant. - * errout.adb, freeze.adb, sem_ch13.adb: Use it. - -2019-08-19 Eric Botcazou - - * exp_dist.adb (Build_Package_Stubs): Do not specifically visit - the declarations of an N_Subprogram_Instantiation node. - -2019-08-19 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Document missing - metrics switches. - -2019-08-19 Piotr Trojanek - - * sem_ch12.adb (Get_Unit_Instantiation_Node): Simplify Nkind_In - membership test. - * sem.adb (Depends_On_Main): Whitespace cleanup; only assign a - local variable if needed. - -2019-08-19 Claire Dross - - * sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New - parameter of the generic. Function used to decide whether a - function is a pledge function. - (Check_Not_Borrowed): Disable check inside the second parameter - of a pledge function for the path borrowed by the first - parameter. Also disable checks for entities inside a Global - contract. - -2019-08-19 Joffrey Huguet - - * libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads, - libgnat/a-cfinve.ads, libgnat/a-cforma.ads, - libgnat/a-cofove.ads, libgnat/a-cofuma.ads, - libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R : - Element_Type) to the generic packages. - -2019-08-19 Eric Botcazou - - * opt.ads: Clean up left-overs of earlier implementation in - comment: - -2019-08-19 Ed Schonberg - - * sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous - base type if the bounds in the derived type declaration are - literals of the type. - -2019-08-19 Yannick Moy - - * sem_res.adb (Resolve_Call): Check non-aliasing rules before - GNATprove inlining. - -2019-08-19 Eric Botcazou - - * inline.adb (Add_Inlined_Body): Do not add pending - instantiations. - * sem_ch12.adb (Needs_Body_Instantiated): New predicate. - (Analyze_Package_Instantiation): Use it to decide whether to add - a pending instantiation for the body of the package. - -2019-08-19 Olivier Hainque - - * gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc - BIND_EXPR node we have constructed on purpose. Remove unused - variable. - -2019-08-19 Pierre-Marie de Rodat - - * gcc-interface/lang.opt (fdump-scos): Define. - * gcc-interface/misc.c (gnat_handle_option): Handle - OPT_fdump_scos. - -2019-08-14 Joffrey Huguet - - * libgnat/a-cofuba.ads: Add a Length attribute to type - Container. Add a type Array_Base which replaces the previous - Elements attribute of Container. - (Content_Init): New subprogram. It is used to initialize the - Base attribute of Container. - * libgnat/a-cofuba.adb (Resize): New subprogram. It is used to - resize the underlying array of a container if necessary. - (=, <=, Find, Get, Intersection, Length, Num_Overlaps, Set, - Union): Update to match changes in type declarations. - (Add): Modify body to damp the time and space cost in a specific - case. - (Content_Init): New subprogram. It is used to initialize the - Base attribute of Container. - (Remove): Modify body to damp the time and space cost in a - specific case. - -2019-08-14 Bob Duff - - * sem_ch13.adb (Get_Alignment_Value): Return 1 for Alignment 0, - and do not give an error. - * doc/gnat_rm/representation_clauses_and_pragmas.rst: Update the - corresponding documentation. - * gnat_rm.texi: Regenerate. - -2019-08-14 Eric Botcazou - - * inline.adb (Add_Pending_Instantiation): Fix off-by-one error - in the comparison against the maximum number of instantiations. - -2019-08-14 Eric Botcazou - - * inline.adb (Add_Pending_Instantiation): Use greater-or-equal - in the comparison against the maximum number of instantiations. - -2019-08-14 Ed Schonberg - - * sem_aux.adb (Next_Rep_Item): If a node in the rep chain - involves a Ghost aspect it may have been replaced by a null - statement; use the original node to find next Rep_Item. - * repinfo.adb (List_Entities): Do not list an Ignored - Ghost_Entity, for which information may have been deleted. - -2019-08-14 Bob Duff - - * sem_prag.ads, sem_prag.adb - (Process_Compile_Time_Warning_Or_Error): In parameterless - version, improve detection of whether we are in a generic unit - to cover the case of an instance within a generic unit. - (Process_Compile_Time_Warning_Or_Error): Rename the - two-parameter version to be - Validate_Compile_Time_Warning_Or_Error, and do not export it. - Issue a warning if the condition is not known at compile time. - The key point is that the warning must be given only for pragmas - deferred to the back end, because the back end discovers - additional values that are known at compile time. Previous - changes in this ticket have enabled this by deferring to the - back end without checking for special cases such as 'Size. - (Validate_Compile_Time_Warning_Or_Error): Rename to be - Defer_Compile_Time_Warning_Error_To_BE. - * warnsw.ads, warnsw.adb (Warn_On_Unknown_Compile_Time_Warning): - Add new switches -gnatw_c and -gnatw_C to control the above - warning. - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Document new switches. - * gnat_ugn.texi: Regenerate. - -2019-08-14 Eric Botcazou - - * sem_ch12.adb (Might_Inline_Subp): Rework comment and restrict - the shortcut based on Is_Inlined to the back-end inlining case. - -2019-08-14 Bob Duff - - * inline.adb (Check_And_Split_Unconstrained_Function): Ignore - protected functions to get rid of spurious error. The - transformation done by this procedure triggers legality errors - in the generated code in this case. - -2019-08-14 Bob Duff - - * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Defer - processing to the back end in all cases where the pragma's - condition is not known at compile time during the front end - (except in generics), as opposed to detecting 'Size attributes - and the like. This ensures that we take advantage of whatever - can be compile-time known after running the back end, as opposed - to having the front end guess what the back end can do. Remove - a little duplicated code at the call site. - * gnat1drv.adb (Post_Compilation_Validation_Checks): Unlock the - Elists while in Validate_Compile_Time_Warning_Errors, because it - does analysis and name resolution, which sometimes involves - adding Elists. - -2019-08-14 Eric Botcazou - - * einfo.ads (Is_Called): Document new usage on E_Package - entities. - * einfo.adb (Is_Called): Accept E_Package entities. - (Set_Is_Called): Likewise. - * exp_ch6.adb (Expand_Call_Helper): Move code dealing with - instances for back-end inlining to Add_Inlined_Body. - * inline.ads: Remove with clauses for Alloc and Table. - (Pending_Instantiations): Move to... - * inline.adb: Add with clauses for Alloc, Uintp, Table and - GNAT.HTable. - (Backend_Instances): New variable. - (Pending_Instantiations): ...here. - (Called_Pending_Instantiations): New table. - (Node_Table_Size): New constant. - (Node_Header_Num): New subtype. - (Node_Hash): New function. - (To_Pending_Instantiations): New hash table. - (Add_Inlined_Body): Bail out early for subprograms in the main - unit or subunit. Likewise if the Is_Called flag is set. If the - subprogram is an instance, invoke Add_Inlined_Instance. Call - Set_Is_Called earlier. If the subrogram is within an instance, - invoke Add_Inlined_Instance. Also deal with the case where the - call itself is within an instance. - (Add_Inlined_Instance): New procedure. - (Add_Inlined_Subprogram): Remove conditions always fulfilled. - (Add_Pending_Instantiation): Move the defence against ludicruous - number of instantiations to here. When back-end inlining is - enabled, associate an instantiation with its index in table and - mark a few selected kinds of instantiations as always needed. - (Initialize): Set Backend_Instances to No_Elist. - (Instantiate_Body): New procedure doing the work extracted - from... - (Instantiate_Bodies): ...here. When back-end inlining is - enabled, loop over Called_Pending_Instantiations instead of - Pending_Instantiations. - (Is_Nested): Minor tweak. - (List_Inlining_Info): Also list the contents of - Backend_Instances. - * sem_ch12.adb (Might_Inline_Subp): Return early if Is_Inlined - is set and otherwise set it before returning true. - (Analyze_Package_Instantiation): Remove the defence against - ludicruous number of instantiations. Invoke - Remove_Dead_Instance instead of doing the removal manually if - there is a guaranteed ABE. - -2019-08-14 Gary Dismukes - - * exp_ch3.adb (Predef_Spec_Or_Body): For an equality operation - of an interface type, create an expression function (that - returns False) rather than declaring an abstract function. - * freeze.adb (Check_Inherited_Conditions): Set Needs_Wrapper to - False unconditionally at the start of the loop creating wrappers - for inherited operations. - -2019-08-14 Bob Duff - - * table.adb: Assert that the table is not locked when increasing - Last, even if it doesn't cause reallocation. In other words, - assert that on operations that MIGHT cause reallocation. - * table.ads: Fix comment accordingly. - -2019-08-14 Arnaud Charlet - - * doc/gnat_ugn/gnat_and_program_execution.rst: Remove - documentation of gnatelim. - -2019-08-14 Bob Duff - - * sem_prag.adb (Validate_Compile_Time_Warning_Error): Attach the - warning to the Sloc of the first pragma argument, rather than to - the pragma itself. This is to make pragmas processed after the - back end use the same Sloc as pragmas processed earlier, in the - front end. There's no reason for this discrepancy, and it - hinders further work on this ticket. - -2019-08-14 Bob Duff - - * sem.ads (Inside_A_Generic): Remove the ??? comment. - -2019-08-14 Eric Botcazou - - * inline.ads (Pending_Descriptor): Delete. - * inline.adb (Initialize): Do not initialize it. - * sem_ch12.adb (Delay_Descriptors): Delete. - (Analyze_Package_Instantiation): Call - Set_Delay_Subprogram_Descriptors instead of Delay_Descriptors - throughout. - -2019-08-14 Bob Duff - - * exp_aggr.adb (Init_Hidden_Discriminants): Avoid processing the - wrong discriminant, which could be of the wrong type. - -2019-08-14 Eric Botcazou - - * sem_ch12.adb (Analyze_Instance_And_Renamings): Do not reset - the Is_Generic_Instance flag previously set on the package - generated for the instantiation of a generic subprogram. - -2019-08-14 Ed Schonberg - - * exp_ch4.adb (Expand_N_Quantified_Expression): Freeze - explicitly the type of the loop parameter. - -2019-08-14 Javier Miranda - - * sem_util.adb (New_Copy_Tree.Copy_Node_With_Replacement): - Update the Chars attribute of identifiers. - -2019-08-14 Yannick Moy - - * sem_spark.adb, sem_spark.ads (Is_Legal): New function exposed - for use in GNATprove, to test legality rules not related to - permissions. - (Check_Declaration_Legality): Extract the part of - Check_Declaration that checks rules not related to permissions. - (Check_Declaration): Call the new Check_Declaration_Legality. - (Check_Type_Legality): Rename of Check_Type. Introduce - parameters to force or not checking, and update a flag detecting - illegalities. - (Check_Node): Ignore attribute references in statement position. - -2019-08-14 Yannick Moy - - * sem_spark.adb (Check_Old_Loop_Entry): New procedure to check - correct use of Old and Loop_Entry. - (Check_Node): Check subprogram contracts. - (Check_Pragma): Check Loop_Variant. - (Check_Safe_Pointers): Apply checking to library-level - subprogram declarations as well, in order to check their - contract. - -2019-08-14 Yannick Moy - - * sem_spark.adb (Is_Subpath_Expression): Take into account - conversion and qualification. - -2019-08-14 Eric Botcazou - - * sem_ch7.adb (Install_Private_Declarations) - : Do not rely solely on the - Is_Child_Unit flag on the unit to recurse. - (Uninstall_Declarations) : New - function. Use it to recurse on the private dependent entities - for child units. - -2019-08-14 Javier Miranda - - * exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for - arrays with bounds not known at compile time. - -2019-08-14 Ed Schonberg - - * sem_util.adb (New_Copy_Tree, Visit_Entity): A quantified - expression includes the implicit declaration of the loop - parameter. When a quantified expression is copied during - expansion, for example when building the precondition code from - the generated pragma, a new loop parameter must be created for - the new tree, to prevent duplicate declarations for the same - symbol. - -2019-08-14 Yannick Moy - - * sem_disp.adb (Check_Dispatching_Operation): Update assertion - for the separate declarations created in GNATprove mode. - * sem_disp.ads (Is_Overriding_Subprogram): Update comment. - * sem_elab.adb (SPARK_Processor): Fix test for checking of - overriding primitives. - -2019-08-14 Eric Botcazou - - * inline.adb (Add_Inlined_Body): Tweak comments. - (List_Inlining_Info): Also list information about non-main - units. - -2019-08-14 Gary Dismukes - - * sem_ch4.adb (Analyze_Selected_Component): In the case where - the prefix is of a concurrent type, and the selected entity - matching the selector is the first private declaration of the - type (such as the first local variable in a task's body), set - Is_Private_Op. - -2019-08-14 Piotr Trojanek - - * einfo.adb (Is_Generic_Actual_Subprogram): Replace repeated - calls to Ekind with Ekind_In. - -2019-08-13 Richard Sandiford - - PR middle-end/91421 - * gcc-interface/trans.c (gigi): Call set_decl_buillt_in_function. - (Call_to_gnu): Use DECL_FE_FUNCTION_CODE instead of DECL_FUNCTION_CODE. - -2019-08-13 Eric Botcazou - - * ali.ads (Linker_Option_Record): Remove Original_Pos component. - * ali.adb (Scan_ALI): Do not set it. - -2019-08-13 Eric Botcazou - - * sem_ch3.adb (Build_Derived_Concurrent_Type): Add a couple of - local variables and use them. When the derived type fully - constrains the parent type, rewrite it as a subtype of an - implicit (unconstrained) derived type instead of the other way - around. - (Copy_And_Build): Deal with concurrent types and use predicates. - (Build_Derived_Private_Type): Build the full derivation if - needed for concurrent types too. - (Build_Derived_Record_Type): Add marker comment. - (Complete_Private_Subtype): Use predicates. - -2019-08-13 Ed Schonberg - - * sem_ch3.adb (Check_Generic_Ancestor): New subprogram, - aubsidiary to Build_Derived_Record_Type. to enforce the rule - that a type extension declared in a generic body cznnot have an - ancestor that is a generic formal (RM 3.9.1 (4/2)). The rule - applies to all ancestors of the type, including interface - progenitors. - -2019-08-13 Eric Botcazou - - * sem_ch3.adb (Build_Underlying_Full_View): Delete. - (Complete_Private_Subtype): Do not set the full view on the - private subtype here. If the full base is itself derived from - private, do not re-derive the parent type but instead constrain - an existing underlying full view. - (Prepare_Private_Subtype_Completion): Do not get to the - underlying full view, if any. Set the full view on the private - subtype here. - (Process_Full_View): Likewise. - * sem_ch12.adb (Check_Generic_Actuals): Also set - Is_Generic_Actual_Type on the full view if the type of the - actual is private. - (Restore_Private_Views): Also reset Is_Generic_Actual_Type on - the full view if the type of the actual is private. - * sem_eval.adb (Subtypes_Statically_Match): Remove bypass for - generic actual types. - -2019-08-13 Javier Miranda - - * sem_res.adb (Resolve_Selected_Component): When the type of the - component is an access to a class-wide type and the type of the - context is an access to a tagged type the relevant type is that - of the component (since in such case we may need to generate - implicit type conversions or dispatching calls). - -2019-08-13 Ed Schonberg - - * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Preanalyze - expression, rather do a full analysis, to prevent unwanted - removal of side effects which mask the intent of the expression. - -2019-08-13 Eric Botcazou - - * impunit.adb (Non_Imp_File_Names_95): Add - GNAT.Branch_Prediction. - -2019-08-13 Eric Botcazou - - * exp_ch6.adb: Remove with and use clauses for Sem_Ch12. - (Expand_Call_Helper): Swap the back-end inlining case and the - special front-end expansion case. In back-end inlining mode, do - not invoke Add_Inlined_Body unless the call may be inlined. - * inline.ads (Add_Pending_Instantiation): New function moved - from... - * inline.adb (Add_Inlined_Body): Simplify comment. Turn test on - the enclosing unit into assertion. - (Add_Pending_Instantiation): New function moved from... - * sem_ch12.ads (Add_Pending_Instantiation): ...here. - * sem_ch12.adb (Add_Pending_Instantiation): ...here. - -2019-08-13 Eric Botcazou - - * sem.adb (Do_Analyze): Recompute Style_Check_Max_Line_Length - after restoring Style_Max_Line_Length. - -2019-08-13 Arnaud Charlet - - * sem_ch13.adb (Check_Iterator_Functions): Protect against - cascaded errors. - -2019-08-13 Ed Schonberg - - * sem_ch8.adb (Analyze_Subprogram_Renaming): Do no suppress mode - conformance checks on child unit instance that is a compilation - unit. - -2019-08-13 Gary Dismukes - - * exp_dbug.adb (Fully_Qualify_Name): Add full name qualification - for the E_Exception case. - -2019-08-13 Gary Dismukes - - * exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using - universal arithmetic, to avoid situations where the size - computation overflows. - -2019-08-13 Justin Squirek - - * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals - for displaying ordering to always be triggered when -gnatR4 is - in effect. - -2019-08-13 Justin Squirek - - * aspects.adb, aspects.ads: Register new aspect. - * par-prag.adb (Prag): Register new pragma - * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing - for new aspect similar to Aspect_Max_Entry_Queue_Length. - * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new - pragma and set it to use the same processing as - Pragma_Max_Queue_Length. - * snames.ads-tmpl: Move definition of - Name_Max_Entry_Queue_Length so that it can be processed as a - pragma in addition to a restriction and add an entry for the - pragma itself. - -2019-08-13 Yannick Moy - - * sem_ch4.adb (Analyze_Allocator): Do not insert subtype - declaration for allocator inside a spec expression. - -2019-08-13 Yannick Moy - - * sem_res.adb (Resolve_Call): Do not inline calls inside record - types. - -2019-08-13 Eric Botcazou - - * sem_ch4.adb (Analyze_One_Call): Remove bypass for type - mismatch in nested instantiations. - * sem_ch8.adb (Find_Nearer_Entity): New function. - (Find_Renamed_Entity): Use it to disambiguate the candidates for - the renaming generated for an instantiation when it is - ambiguous. - -2019-08-13 Eric Botcazou - - * gnat1drv.adb (Adjust_Global_Switches): Do not set - Back_End_Inlining in ASIS mode either. - -2019-08-13 Olivier Hainque - - * libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile - binding to use it instead of DWORD for the dwNumberOfBytesToMap - argument. - * libgnat/g-sercom__mingw.adb (Read): State which definition of - size_t to fetch in call to Last_Index. - -2019-08-13 Arnaud Charlet - - * gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass - LN_S to relevant gnatlib targets. - * gcc-interface/Makefile.in: Systematically pass LN_S to - relevant gnatlib targets. - -2019-08-13 Yannick Moy - - * sem_dim.adb (Analyze_Dimension, - Analyze_Dimension_Array_Aggregate, Analyze_Dimension_Call, - Analyze_Dimension_Extension_Or_Record_Aggregate): Return - immediately when inside an inlined body. - * sem_res.adb (Resolve_Call): Remove special checking now done - inside Analyze_Dimension_Call. - -2019-08-13 Justin Squirek - - * exp_ch4.adb (Expand_N_Allocator): Add condition to detect - library-level object declarations - -2019-08-13 Eric Botcazou - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst - (-gnateT): Document Double_Float_Alignment parameter and fix - description of Double_Scalar_Alignment parameter. - * gnat_ugn.texi: Regenerate. - -2019-08-13 Eric Botcazou - - * exp_ch6.adb (Expand_Call_Helper): If back-end inlining is - enabled, also instantiate the body of a generic unit containing - a subprogram subject to aspect/pragma Inline_Always at - optimization level zero. - * sem_ch12.adb (Might_Inline_Subp): Minor tweak. - (Analyze_Package_Instantiation): Do not instantiate the package - body because of inlining considerations if the instantiation is - done in a generic unit. Move around similar condition involving - the main unit. Add test on Back_End_Inlining to processing for - front-end inlining. - -2019-08-13 Javier Miranda - - * exp_disp.adb (Make_Secondary_DT): Handle record type - derivations that have interface components located at fixed - positions and interface components located at variable offset. - The offset of components located at fixed positions is computed - using the dummy object (similar to the case where all the - interface components are located at fixed positions). - (Make_DT): Build the dummy object for all tagged types that - implement interface types (that is, build it also for types with - variable size components), and use the dummy object to compute - the offset of all tag components located at fixed positions when - initializing the Interface_Table object. - -2019-08-13 Justin Squirek - - * gnatcmd.adb (GNATCmd): Add constant for new compiler switch - --help-ada, and include usage subprogram. Add line to usage help - explaining the new flag. - (GNATCmd_Usage): Rename from locally declared Usage so as not to - confuse with the newly imported version. Add new argument case - for --help-ada and add bug report email to implicit display of - help without the --help flag so as to unify output between the - two cases. - -2019-08-13 Dmitriy Anisimkov - - * libgnat/g-comlin.adb (Getopt): Quote unrecognized switch in - Invalid_Switch exception message. - -2019-08-13 Yannick Moy - - * sem_util.adb (Traverse_More_Func): Take into account - Loop_Actions inside N_Iterated_Component_Association nodes. - * sinfo.ads: Document correctly Loop_Actions as a field of nodes - of kind N_Iterated_Component_Association. - -2019-08-13 Claire Dross - - * libgnat/a-cfinve.adb, libgnat/a-cofove.adb (Find_Index, - Reverse_Find_Index): Use bigger type to avoid range check - failure at the last loop iteration. - -2019-08-12 Dmitriy Anisimkov - - * libgnat/g-socket.adb (Is_IPv6_Address): Check that no less - then 2 colons in IPv6 numeric address. - -2019-08-12 Dmitriy Anisimkov - - * libgnat/g-comlin.ads, libgnat/g-comlin.adb (Getopt): Add - parameter Quiet. Need to do not output error messages to - console. Invalid_Switch exception generation surrounded by an - error message. - -2019-08-12 Ed Schonberg - - * exp_ch6.adb (Expand_Actuals. Add_Call_By_Copy_Code): Add code - to generate proper checks when an actual for an in-out or out - parameter has a non-null access type. No constraints are - applied to an inbound access parameter, but on exit a not-null - check must be performed if the type of the actual requires it. - -2019-08-12 Ed Schonberg - - * sem_util.adb (Is_Expaned_Priority_Attribute): Check whether - call comes from a rewritten attribute before comparing name with - Get_Ceiling run-time subprogram. - -2019-08-12 Eric Botcazou - - * exp_util.ads (Component_May_Be_Bit_Aligned): Small comment - tweaks. - (Possible_Bit_Aligned_Component): Likewise. - (Type_May_Have_Bit_Aligned_Components): Likewise. - * exp_util.adb (Component_May_Be_Bit_Aligned): Likewise. - (Possible_Bit_Aligned_Component): Likewise. - (Type_May_Have_Bit_Aligned_Components): Likewise. - -2019-08-12 Eric Botcazou - - * exp_ch4.adb (Expand_N_Op_Eq): Expand the array equality if - either operand is a possibly unaligned slice. - * exp_ch6.adb (Expand_Simple_Function_Return): Do not generate a - copy for a possibly unaligned object if it is represented as a - scalar. - * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not always - return false if the target doesn't have strict alignment. - -2019-08-12 Bob Duff - - * sem_ch12.adb (Instantiate_Package_Body): Remove suppression of - checks in instances of internal units. - * sem_ch6.adb (Analyze_Function_Return): Do not generate a - constraint check on an extended_return_statement if the subtype - of the return object in the statement is identical to the return - subtype of the function. - -2019-08-12 Bob Duff - - * libgnat/a-cbmutr.adb (Is_Reachable): Declare Idx to be of the - base subtype. Clearly it makes no sense to loop "while Idx >= - 0", if Idx is of a nonnegative subtype. - -2019-08-12 Bob Duff - - * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being - negative, since Field is range 0 .. something. - -2019-08-12 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp, - gnatstub): Remove documentation for Ada language version - switches, and note that they are no longer needed. - -2019-08-12 Gary Dismukes - - * sem_ch5.adb (Prepare_Param_Spec_Loop): Set the parents of the - copied low and high bounds in the case where the loop range is - given by a discrete_subtype_indication, to prevent hanging (or - Assert_Failure) in Insert_Actions. - -2019-08-12 Ed Schonberg - - * sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined - equality has the same profile as the predefined equality before - applying legality rule in RM 4.5.2 (9.8). - -2019-08-12 Bob Duff - - * libgnat/a-except.ads: Update obsolete comment, still making - clear that this is a variant. Add explicit default for Id - component of Exception_Occurrence, because that value is used. - Define Null_Occurrence less redundantly. - * libgnat/a-einuoc.adb: Minor simplification of code. - -2019-08-12 Justin Squirek - - * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads (Is_Simple_Name, - Is_Root_Directory, Is_Parent_Directory, - Is_Current_Directory_Name, Is_Relative_Name, Initial_Directory, - Relative_Name, Compose): Add implementation and documentation. - * libgnat/a-direct.adb (Containing_Directory): Modify routine to - use routines from Ada.Directories.Hierarchical_File_Names and - remove incorrect special case for parent directories. - (Fetch_Next_Entry): Add check for current directory and parent - directory and ignore them under certain circumstances. - (Simple_Nmae): Add check for null result from - Simple_Name_Internal and raise Name_Error. - (Simple_Name_Internal): Add explicit check for root directories, - sanitize trailing directory separators, and modify behavior so - that current and parent directories are considered valid - results. - * Makefile.rtl: Add entry to GNATRTL_NONTASKING_OBJS. - -2019-08-12 Eric Botcazou - - * freeze.adb (Freeze_Entity): Give the same error for an - Object_Size clause on a variable-sized type as for a Size - clause. - -2019-08-12 Gary Dismukes - - * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization): - For private types, set the Suppress_Initialization flag on the - Full_View of the entity rather than the entity's base type. - -2019-08-12 Yannick Moy - - * aspects.adb, aspects.ads (Aspect_No_Caching): New aspect. - * contracts.adb, contracts.ads (Add_Contract_Item): Add handling - of No_Caching. - (Analyze_Object_Contract): Add handling of No_Caching. - * einfo.adb, einfo.ads - (Get_Pragma): Add handling of No_Caching. - * doc/gnat_rm/implementation_defined_aspects.rst, - doc/gnat_rm/implementation_defined_pragmas.rst: Document new - aspect/pragma. - * gnat_rm.texi: Regenerate. - * par-prag.adb (Prag): New pragma Pragma_No_Caching. - * sem_ch13.adb (Analyze_Aspect_Specifications, - Check_Aspect_At_Freeze_Point): Add handling of No_Caching. - * sem_prag.adb (Analyze_Pragma): Deal with pragma No_Caching. - * sem_prag.ads (Analyze_External_Property_In_Decl_Part): Now - applies to No_Caching. - * sem_util.adb, sem_util.ads (Is_Effectively_Volatile): Add - handling of No_Caching. - (No_Caching_Enabled): New query function. - * snames.ads-tmpl: New names for pragma. - -2019-08-12 Yannick Moy - - * sem_util.adb, sem_util.ads (Traverse_More_Func, - Traverse_More_Proc): Add formal parameter for Itypes traversal. - -2019-08-12 Yannick Moy - - * exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New - procedure to share part of the attribute expansion with - GNATprove mode. - (Expand_N_Attribute_Reference): Extract part of the - Size/Object_Size expansion in the new procedure - Expand_Size_Attribute. - * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand - Size/Object_Size attributes using the new procedure - Expand_Size_Attribute. - -2019-08-12 Yannick Moy - - * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Only - expand Enum_Rep attribute when its parameter is a literal. - -2019-08-12 Justin Squirek - - * sem_eval.adb (Check_Non_Static_Context): Add a condition to - determine if a range violation constitues a warning or an error. - (Out_Of_Range): Add a condition to determine if a range - violation constitues a warning or an error. - -2019-08-12 Eric Botcazou - - * exp_ch4.adb (Real_Range_Check): Do not rewrite the conversion - node but its expression instead, after having fetched its - current value. Clear the Do_Range_Check flag on entry. Return - early for a rewritten float-to-float conversion. Remove - redundant local variable. Suppress all checks when inserting - the temporary and do not reanalyze the node. - -2019-08-12 Eric Botcazou - - * sprint.ads: Minor comment tweak. - -2019-08-12 Eric Botcazou - - * checks.adb (Insert_Valid_Check): Do not retrieve the - Do_Range_Check flag from the Original_Node but from the - Validated_Object. Remove useless bypass for floating-point - types. - -2019-08-12 Yannick Moy - - * sem_util.adb, sem_util.ads (Traverse_More_Func, - Traverse_More_Proc): New traversal subprograms. - -2019-08-12 Jerome Lambourg - - * libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call - s-tpopsp.Self when actually needed. - -2019-08-12 Eric Botcazou - - * exp_ch4.adb (Discrete_Range_Check): Return if checks are - suppressed. - -2019-08-12 Eric Botcazou - - * sem_res.adb: Add with & use clause for Sem_Mech and - alphabetize. - (Resolve_Actuals): Do not apply a scalar range check for the - source of a conversion whose result is passed by reference to a - valued procedure. - -2019-08-12 Eric Botcazou - - * checks.adb (Insert_Valid_Check): Reset the Do_Range_Check flag - on the validated object. - * exp_ch6.adb (Add_Call_By_Copy_Code): Reset the Do_Range_Check - flag on the actual here, as well as on the Expression if the - actual is a N_Type_Conversion node. - (Add_Validation_Call_By_Copy_Code): Generate the incoming range - check if needed and reset the Do_Range_Check flag on the - Expression if the actual is a N_Type_Conversion node. - (Expand_Actuals): Do not reset the Do_Range_Check flag here. - Generate the incoming range check for In parameters here instead - of... - (Expand_Call_Helper): ...here. Remove redudant condition. - * sem_res.adb (Resolve_Actuals): Use local variable A_Typ and - remove obsolete comments. - (Resolve_Type_Conversion): Do not force the Do_Range_Check flag - on the operand if range checks are suppressed. - -2019-08-12 Eric Botcazou - - * checks.adb (Activate_Range_Check): Remove redundant argument. - (Generate_Range_Check): Likewise. - (Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on - entry and remove redundant condition. - -2019-08-02 Alexandre Oliva - - * libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New. - (Claimed_Cleanup): New. - (Begin_Handler, End_Handler): Document. - * gcc-interface/trans.c (gigi): Switch to exception handler - ABI #1. - (Exception_Handler_to_gnu_gcc): Save the original cleanup - returned by begin handler, pass it to end handler, and use - EH_ELSE_EXPR to pass a propagating exception to end handler. - (gnat_to_gnu): Leave the exception pointer alone for reraise. - (add_cleanup): Handle EH_ELSE_EXPR, require it by itself. - -2019-07-23 Ed Schonberg - - * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations, - Freeze_Entity_Checks): Include Aspect_CPU with other aspects - whose expresssion may depend on a discriminant, and thus require - that components of the type be made visible. - -2019-07-23 Eric Botcazou - - * checks.adb (Convert_And_Check_Range): Add Suppress parameter - and pass it in the call to Insert_Actions. Rename local - variable. - (Generate_Range_Check): Minor comment fixes. Pass Range_Check - in the first call to Convert_And_Check_Range and All_Checks in - the second call. - * exp_ch4.adb (Expand_N_Type_Conversion): Reset the - Do_Overflow_Check flag in the float-to-float case too if there - is also a range check. - -2019-07-23 Eric Botcazou - - * checks.adb (Activate_Overflow_Check): Remove redundant - argument. - * exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag. - (Expand_N_Type_Conversion): Do not reset it here. - -2019-07-23 Eric Botcazou - - * repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write. - (Write_Val): Likewise. - -2019-07-23 Ed Schonberg - - * aspects.ads: New table Operational_Aspect, used to distinguish - between aspects that are view-specific, such as those related to - iterators, and representation aspects that apply to all views of - a type. - * aspects.adb (Find_Aspect): If the aspect being sought is - operational, do not ecamine the full view of a private type to - retrieve it. - * sem_ch5.adb (Analyze_Iterator_Specification): Improve error - message when the intended domain of iteration does not implement - the required iterator aspects. - -2019-07-23 Yannick Moy - - * sem_spark.ads (Is_Local_Context): New function. - * sem_spark.adb (Check_Declaration): Issue errors on violations - of SPARK RM 3.10(4) - (Process_Path): Do not issue error on borrow/observe during - elaboration, as these are caught by the new rule. - -2019-07-23 Yannick Moy - - * exp_ch7.adb (Create_Finalizer): Force finalizer not to be - Ghost enabled. - * exp_dbug.adb (Get_External_Name): Explain special case of - Ghost finalizer. - -2019-07-22 Eric Botcazou - - * repinfo.adb (List_Entities): Also list compiled-generated - types present as Etype of objects. - -2019-07-22 Eric Botcazou - - * sinfo.ads: Update the documentation about the - Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags. - -2019-07-22 Eric Botcazou - - * exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment. - (Fixup_Universal_Fixed_Operation): Set the base type instead of - the type of the enclosing type conversion on the operation. - -2019-07-22 Ed Schonberg - - * exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute - 'Valid as a replacement for a range check on a discrete type - when the bounds of the range are given by type conversions, - because in such a case there are distinct types involved and the - subbested attribute replacement would be misplaced. - -2019-07-22 Yannick Moy - - * sem_spark.adb (Get_Root_Object, Is_Path_Expression, - Is_Subpath_Expression): Add parameter Is_Traversal to adapt - these functions to the case of paths returned from a traversal - function. - (Read_Indexes): Handle the case of an if-expression or - case-expression. - (Check_Statement): Check Emit_Messages only when issuing an - error message. This is important as Emit_Messages may store the - information that an error was detected. - -2019-07-22 Eric Botcazou - - * checks.adb (Apply_Type_Conversion_Checks): Do not set - Do_Range_Check flag on conversions from fixed-point types - either. - * exp_attr.adb: Add use and with clause for Expander. - (Expand_N_Attribute_Reference) : Set - the Conversion_OK flag and do not generate overflow/range checks - manually. - * exp_ch4.adb (Expand_N_Qualified_Expression): Remove - superfluous clearing of Do_Range_Check flag. - (Discrete_Range_Check): New procedure to generate a range check - for discrete types. - (Real_Range_Check): Remove redundant local variable and adjust. - Remove useless shortcut. Clear Do_Range_Check flag on all - paths. - (Expand_N_Type_Conversion): Remove redundant test on - Conversion_OK. Call Discrete_Range_Check to generate range - checks on discrete types. Remove obsolete code for - float-to-integer conversions. Add code to generate range checks - for conversions involving fixed-point types. - -2019-07-22 Eric Botcazou - - * sprint.ads: Fix pasto in comment. - -2019-07-22 Javier Miranda - - * sem_res.adb (Resolve_Actuals): Replace code that displaces the - pointer to an allocated object to reference its secondary - dispatch table by a type conversion (which takes care of - handling all cases). - -2019-07-22 Eric Botcazou - - * sprint.adb (Sprint_Node_Actual) - : Swap a couple of spaces. - (Write_Itype): Minor consistency fixes throughout. Add support - for printing ordinary and decimal fixed-point types and - subtypes. - -2019-07-22 Eric Botcazou - - * exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment. - -2019-07-22 Ed Schonberg - - * libgnat/s-valboo.ads, libgnat/s-valcha.ads, - libgnat/s-valdec.ads, libgnat/s-valenu.ads, - libgnat/s-valint.ads, libgnat/s-vallld.ads, - libgnat/s-vallli.ads, libgnat/s-valllu.ads, - libgnat/s-valrea.ads, libgnat/s-valuns.ads, - libgnat/s-valwch.ads: Change categorization of packages that - implement attribute 'Value from Pure to Preelaborate, to prevent - undesirable optimizations when the evaluation of the attribute - raises Constraint_Error, but subsequent use of the result of - this evsaluation is removed by a subsequent optimization. - -2019-07-22 Ed Schonberg - - * sem_warn.adb (Check_References): Do not emit s warning on a - referenced entity with no explicit assignment if the type of the - entity has Preelaborable_Initialixation, such as - Exception_Occurrence. - -2019-07-22 Javier Miranda - - * exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion - to handle array indexes that are modular type. - (Expand_N_Allocator): For 32-bit targets improve the generation - of the runtime check associated with large arrays supporting - arrays initialized with a qualified expression. - * libgnat/s-imenne.adb (Image_Enumeration_8, - Image_Enumeration_16, Image_Enumeration_32): Define the index of - Index_Table with range Natural'First .. Names'Length since in - the worst case all the literals of the enumeration type would be - single letter literals and the Table built by the frontend would - have as many components as the length of the names string. As a - result of this enhancement, the internal tables declared using - Index_Table have a length closer to the real needs, thus - avoiding the declaration of large arrays on 32-bit CCG targets. - -2019-07-22 Yannick Moy - - * sem_ch3.adb (Constrain_Access): Issue a message about ignored - constraint. - -2019-07-22 Eric Botcazou - - * sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the - class-wide type if the type is tagged. - (Use_One_Type): Add commentary on the handling of the class-wide - type. - -2019-07-22 Eric Botcazou - - * einfo.ads (Is_For_Access_Subtype): Delete. - (Set_Is_For_Access_Subtype): Likewise. - * einfo.adb (Is_For_Access_Subtype): Likewise. - (Set_Is_For_Access_Subtype): Likewise. - (Write_Entity_Flags): Do not write Is_For_Access_Subtype. - * exp_ch4.adb (Expand_N_Selected_Component): Do not deal with - it. - * exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise. - * sem_ch4.adb (Analyze_Explicit_Dereference): Likewise. - * sem_ch3.adb (Build_Discriminated_Subtype): Do not build a - special private subtype for access-to-record subtypes. - -2019-07-22 Eric Botcazou - - * sem_ch3.adb (Complete_Private_Subtype): Rework the setting of - the Etype of the full view for full base types that cannot - contain any discriminant. Remove code and comment about it in - the main path. - -2019-07-22 Ed Schonberg - - * sem_ch3.adb (Convert_Bound): Subsidiary of - Floating_Point_Type_Declaration, to handle properly range - specifications with bounds that may include static constants of - a given type rather than real literals. - -2019-07-22 Eric Botcazou - - * sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals - too. - (Rewrite_Range;): Minor tweak. - (Resolve_Record_Aggregate): For a component with default - initialization whose expression is an array aggregate, also - rewrite the bounds of the component associations, if any. - -2019-07-22 Gary Dismukes - - * exp_ch5.adb (Expand_N_Case_Statement): In the case where a - case statement is rewritten as an equivalent if statement, - inherit the From_Condition_Expression flag from the case - statement. - -2019-07-22 Eric Botcazou - - * sem_ch8.adb (Check_Constrained_Object): Further extend the - special optimization to all limited types. - -2019-07-22 Eric Botcazou - - * exp_attr.adb (Expand_N_Attribute_Reference) - : Set No_Truncation on the - N_Unchecked_Type_Conversion built around the argument passed to - the attribute. - -2019-07-22 Nicolas Roche - - * libgnat/s-valrea.adb (Scan_Real): Ignore non significative - digits to avoid converging to infinity in some cases. - -2019-07-22 Eric Botcazou - - * libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight. - (Encode_Wide_Wide_String): Likewise. - -2019-07-22 Eric Botcazou - - * sem_warn.adb (Find_Var): Bail out for a function call with an - Out or In/Out parameter. - -2019-07-22 Nicolas Roche - - * terminals.c (__gnat_tty_waitpid): Support both blocking and - not blocking mode. - * libgnat/g-exptty.ads (Is_Process_Running): New function. - * libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate - a process if it is already dead. - -2019-07-22 Ed Schonberg - - * freeze.adb (Freeze_Fixed_Point_Type): When freezing a - fixed-point subtype, check whether the parent type declarastion - includes an aspect specification for the 'Small type attribute, - and inherit the specified value. - -2019-07-22 Javier Miranda - - * freeze.adb (Freeze_Subprogram): Check that C++ constructors - must have external or link name. - -2019-07-22 Ed Schonberg - - * sem_res.adb (Resolve_Selected_Component): If the prefix has a - deferred reference, generate the correct reference now, to - indicate that the previous assignment is used. This prevents - spurious warnings on useless assignments when compiling with all - warnings enabled. when there is a subsequent call in the same - stqtement list, in which the prefix of the selected component is - the actual for an out parameter. - -2019-07-22 Eric Botcazou - - * exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition - of a while loop instead of simply relocating it. - -2019-07-18 Arnaud Charlet - - * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c, - cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c, - argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c, - seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C - runtime files do not have any dependency on GCC include files. - Remove unnecessary includes. - Remove remaining references to VMS in runtime C file. - * runtime.h: new File. - -2019-07-13 Andreas Schwab - - * Makefile.rtl: Use g-sercom__linux.adb for all linuxes. - -2019-07-11 Piotr Trojanek - - * lib-writ.adb (Ensure_System_Dependency, - Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access - to table with a high-level query. - -2019-07-11 Piotr Trojanek - - * checks.adb: Fix typo in comment. - * sem.adb (Semantics): Avoid repeated calls to - In_Extended_Main_Source_Unit by reusing an already-cached - result. - * sem_util.adb (First_Global): Fix style. - -2019-07-11 Yannick Moy - - * sem_res.adb (Resolve_Call): Do not perform dimensionality - checking on inlined bodies. - -2019-07-11 Yannick Moy - - * debug.adb: Flip meaning of debug switch -gnatdF. - -2019-07-11 Yannick Moy - - * sem_eval.adb (Is_Same_Value): Add special case for rewritten - Loop_Entry attribute. - -2019-07-11 Claire Dross - - * gnat1drv.adb: SPARK checking rules for pointer aliasing are - moved to GNATprove backend. - * sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic - unit. Takes as parameters: - - Retysp which is used to query the most underlying type - visible in SPARK. We do not introduce aliasing checks for - types which are not visibly deep. - - Component_Is_Visible_In_SPARK is used to avoid doing pointer - aliasing checks on components which are not visible in SPARK. - - Emit_Messages returns True in the second phase of SPARK - analysis. Error messages for failed aliasing checks are only - output in this case. - Additionally, errors on constructs not supported in SPARK are - removed as duplicates of marking errors. Components are stored - in the permission map using their original component to avoid - inconsistencies between components of different views of the - same type. - (Check_Expression): Handle delta constraints. - (Is_Deep): Exported so that we can check for SPARK restrictions - on deep types inside SPARK semantic checkings. - (Is_Traversal_Function): Exported so that we can check for SPARK - restrictions on traversal functions inside SPARK semantic - checkings. - (Check_Call_Statement, Read_Indexes): Check wether we are - dealing with a subprogram pointer type before querying called - entity. - (Is_Subpath_Expression): Image attribute can appear inside a - path. - (Check_Loop_Statement): Correct order of statements in the loop. - (Check_Node): Ignore raise nodes. - (Check_Statement): Use Last_Non_Pragma to get the object - declaration in an extended return statement. - -2019-07-11 Patrick Bernardi - - * bindgen.adb (Gen_Main): Do not generate a reference to - Ada_Main_Program_Name when the Minimal_Binder flag is set. - (Gen_Output_File_Ada): Do not output GNAT_Version and - Ada_Main_Program_Name info if Minimal_Binder flag is set. - * bindusg.adb: Add documentation for new -minimal switch. - * gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch. - * opt.ads: Add new global flag Minimal_Binder to indicate if the - binder should not produce global variables. - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Update documentation with new binder -minimal switch. - * gnat_ugn.texi: Regenerate. - -2019-07-11 Eric Botcazou - - * Makefile.rtl: Add warning note about compilation flags and - capitalize. - -2019-07-11 Ed Schonberg - - * exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New - subsidiary routine Replace_Access_Definition, to handle properly - a protected type PT one of whose private components is of type - access PT. - -2019-07-11 Dmitriy Anisimkov - - * libgnat/g-socket.ads (Level_Type): Add enumerators for - IP_Protocol_For_ICMP, IP_Protocol_For_IGMP, - IP_Protocol_For_RAW_Level. - * libgnat/g-socket.adb (Levels): Handle them. - * s-oscons-tmplt.c: Import socket protocols defined in - netinet/in.h. - -2019-07-11 Claire Dross - - * libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not - reset the Has_Element flag if no element is freed. - -2019-07-11 Arnaud Charlet - - * errno.c: Remove obsolete support for MaRTE OS. - -2019-07-11 Ed Schonberg - - * exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check - is generated, analyze it with range check suppressed, because - that check has been previously applied. - * exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a - type conversion to the type of the LHS, do not apply a predicate - check to the RHS because it will have been generated already - during its expansion. - * exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to - handle a predicate check on a constant entity whose value is - static. - -2019-07-11 Hristian Kirtchev - - * bindo.adb: Remove the documentation of switch -d_N because it - is no longer in use. - * bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge): - New routine. - * bindo-writers.adb (Write_Dependency_Edge): Add the missing - case of a spec-before-body edge. - -2019-07-11 Dmitriy Anisimkov - - * libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator. - * libgnat/g-socket.adb (Modes): Handle Socket_Raw. - -2019-07-11 Justin Squirek - - * exp_ch9.adb (Build_Private_Protected_Declaration): Add - exception for the moving of pragmas to internally generated - specs for pragma Unreferenced. - -2019-07-11 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent - documentation for gnatmetric. - * gnat_ugn.texi: Regenerate. - -2019-07-11 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's - --spaces-only switch. - -2019-07-11 Hristian Kirtchev - - * sem_util.adb (Null_Status): Assume that an erroneous construct - has an undefined null status. - -2019-07-11 Hristian Kirtchev - - * checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb, - sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting. - -2019-07-11 Hristian Kirtchev - - * sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being - renamed using routine Get_Object_Name which takes care of - various name forms. - (Get_Object_Name): New routine. - -2019-07-11 Ed Schonberg - - * exp_ch6.adb (Can_Fold_Predicate_Call): New function, - subsidiary of Expand_Call_Helper, to compute statically a - predicate check when the argument is a static integer. - -2019-07-11 Hristian Kirtchev - - * sem_res.adb (Resolve_Op_Not): Do not rewrite an equality - operator into a function call when the operator is intrinsic. - -2019-07-11 Thomas Quinot - - * sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call - Set_SCO_Pragma_Enabled for the dynamic predicate case. - -2019-07-11 Hristian Kirtchev - - * exp_util.ads, exp_util.adb (Needs_Finalization): Move to - Sem_Util. - * sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark - the protected type as having controlled components when it - contains at least one such component. - * sem_util.ads, sem_util.adb (Needs_Finalization): New - function. - -2019-07-11 Eric Botcazou - - * alloc.ads (Rep_JSON_Table_Initial): New constant. - (Rep_JSON_Table_Increment): Likewise. - * debug.adb: Document -gnatd_j switch. - * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add - repinfo-input.o. - * gnat1drv.adb: Add with clause for Repinfo.Input. - Add with and use clauses for Sinput. - (Read_JSON_Files_For_Repinfo): New procedure. - (Gnat1drv1): Deal with -gnatd_j switch. - * repinfo-input.ad[sb]: New unit. - * snames.ads-tmpl (Name_Discriminant): New constant. - (Name_Operands): Likewise. - -2019-07-11 Justin Squirek - - * checks.adb (Apply_Accessibility_Check): Add check for constant - folded conditions on accessibility checks. - -2019-07-11 Arnaud Charlet - - * libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread): - Update comments. Add new version taking a Task_Id. - -2019-07-11 Hristian Kirtchev - - * bindo.adb: Update the section of switches and debugging - elaboration issues. - * bindo.ads: Add type Elaboration_Phase. - * bindo-augmentors.adb: Add use clause for - Bindo.Writers.Phase_Writers. - (Augment_Library_Graph): Signal the start and end of the - aubmentation phase. - * bindo-builders.adb: Add with and use clause for Bindo.Writers. - Add use clause for Bindo.Writers.Phase_Writers. - (Build_Invocation_Graph): Signal the start and end of the - invocation graph construction phase. - (Build_Library_Graph): Signal the start and end of the library - graph construction phase. - * bindo-diagnostics.adb: Add use clause for - Bindo.Writers.Phase_Writers. - (Diagnose_Cycle): Signal the start and end of the cycle - diagnostic phase. - * bindo-elaborators.adb: Add use clause for - Bindo.Writers.Phase_Writers. - (Elaborate_Units): Signal the start and end of the unit - elaboration phase. - * bindo-graphs.adb: Add use clause for - Bindo.Writers.Phase_Writers. - (Find_Components): Signal the start and end of the component - discovery phase. - (Find_Cycles): Signal the start and end of the cycle discovery - phase. - * bindo-units.adb: Add with and use clause for Bindo.Writers. - Add use clause for Bindo.Writers.Phase_Writers. - (Collect_Elaborable_Units): Signal the start and end of the unit - collection phase. - * bindo-validators.adb: Add with and use clause for - Bindo.Writers. Add use clause for Bindo.Writers.Phase_Writers. - (Validate_Cycles, Validate_Elaboration_Order, - Validate_Invocation_Graph, Validate_Library_Graph): Signal the - start and end of the libray graph validation phase. - * bindo-writers.ads, bindo-writers.adb: Add new nested package - Phase_Writers. - * debug.adb: Update the documentation of switch d_S. - -2019-07-11 Yannick Moy - - * sem_res.adb (Check_Argument_Order): Special case calls to - operators. - -2019-07-10 Dmitriy Anisimkov - - * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops - dependence on System.Streams.Stream_IO. - -2019-07-10 Ed Schonberg - - * sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of - the literal if prior analysis determined that its type is a - modular integer type. - -2019-07-10 Doug Rupp - - * init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2). - -2019-07-10 Ed Schonberg - - * sem_ch8.adb (Check_Constrained_Object): A record that is - limited because of the presence of a limited component is - constrained, and no subtype indiciation needs to be created for - it, just as is the case for declared limited records. - -2019-07-10 Yannick Moy - - * sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New - function to determine if a subprogram is protected. - * sem_spark.adb (Setup_Protected_Components): New procedure to - add protected components to the environment. - (Check_Callable_Body): Call the new Setup_Protected_Components. - (Check_Package_Spec): Merge local environment with enclosing one - when done. - -2019-07-10 Claire Dross - - * sem_spark.adb (Check_Expression): Allow digits constraints as - input. - (Illegal_Global_Usage): Pass in the entity. - (Is_Subpath_Expression): New function to allow different nodes - as inner parts of a path expression. - (Read_Indexes): Allow concatenation and aggregates with box - expressions. Allow attributes Update and Loop_Entry. - (Check_Expression): Allow richer membership test. - (Check_Node): Ignore bodies of generics. - (Get_Root_Object): Allow concatenation and attributes. - -2019-07-10 Hristian Kirtchev - - * sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to - discover the type of a full view discriminant. - -2019-07-10 Arnaud Charlet - - * doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's - doc for the depth switch. - -2019-07-10 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's - --source-line-breaks switch. - -2019-07-10 Justin Squirek - - * doc/gnat_rm/implementation_defined_attributes.rst: Add mention - of 'Image attribute with 'Img's entry to mention additional - added 2012 usage of Obj'Image. - * doc/gnat_rm/implementation_defined_pragmas.rst: Correct - mispelling of Async_Writers. - * gnat_rm.texi: Regenerate. - * sem_prag.adb (Analyze_Pragma): Correct mispelling of - Async_Writers. - * sem_util.adb (State_Has_Enabled_Property): Correct mispelling - of Async_Writers. - -2019-07-10 Simon Buist - - * sem_util.ads (Child_Prefix): New constant. - * sem_util.adb (Unique_Name): Add a special prefix to child - units that have a nested subprogram or package. - -2019-07-10 Arnaud Charlet - - * sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert. - -2019-07-10 Hristian Kirtchev - - * sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the - spelling in certain error messages. - (Check_Pragma_Implemented): Correct the spelling in certain - error messages. - -2019-07-10 Eric Botcazou - - * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre. - * libgnat/g-brapre.ads: New package specification. - * doc/gnat_rm/the_gnat_library.rst: Document it. - * gnat_rm.texi: Regenerate. - -2019-07-10 Yannick Moy - - * osint-c.adb (Set_File_Name): Always add extension for multiple - units per file mode. - -2019-07-10 Corentin Gay - - * sysdep.c: Put include directive for 'vxWorks.h' before any - other VxWorks headers. - -2019-07-10 Eric Botcazou - - * doc/gnat_rm/implementation_defined_attributes.rst - (Scalar_Storage_Order): Minor tweaks. Add note about debuggers. - * gnat_rm.texi: Regenerate. - -2019-07-10 Hristian Kirtchev - - * exp_ch4.adb (Expand_N_Case_Expression): Mark the generated - assignments to the temporary result as being OK because the - expansion of case expressions is correct by construction. - (Is_Copy_Type): Update the predicate to match the comment - within. - -2019-07-10 Hristian Kirtchev - - * bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb, - sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, - sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb, - sem_util.adb, warnsw.ads: Minor reformatting. - -2019-07-10 Joffrey Huguet - - * libgnat/a-strbou.ads, libgnat/a-strfix.ads, - libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global - contracts, contract cases, preconditions and postconditions to - procedures and functions. - -2019-07-10 Doug Rupp - - * sysdep.c (__gnat_is_file_not_found_error): Reformulate to also - work for vxworks7r2 SR0610. - -2019-07-10 Doug Rupp - - * env.c (__gnat_environ): Reformulate to also work for - vxworks7r2 SR0610. - -2019-07-10 Patrick Bernardi - - * Makefile.rtl: Handle vxworks7r2 ppc target - -2019-07-10 Hristian Kirtchev - - * bindo.adb: Update the section on switches. - * bindo-graphs.adb - (Add_Cycle, Add_Vertex_And_Complement): Remove. - (Create): The graph no longer needs a set of recorded cycles - because the cycles are not rediscovered in permuted forms. - (Cycle_End_Vertices): New routine. - (Destroy): The graph no longer needs a set of recorded cycles - because the cycles are not rediscovered in permuted forms. - (Destroy_Library_Graph_Vertex): Move to the library level. - (Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge): - Remove. - (Find_Cycles_From_Successor, Find_Cycles_From_Vertex, - Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines. - (Insert_And_Sort): Remove. - (Is_Elaborate_Body_Edge): Use predicate - Is_Vertex_With_Elaborate_Body. - (Is_Recorded_Cycle): Remove. - (Is_Vertex_With_Elaborate_Body): New routine. - (Normalize_And_Add_Cycle): Remove. - (Precedence): Rename to xxx_Precedence, where xxx relates to the - input. These versions better reflect the desired input - precedence. - (Record_Cycle): New routine. - (Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove. - (Trace_xxx): Update all versions to use debug switch -d_t. - (Trace_Component): New routine. - (Trace_Eol): Removed. - (Trace_Vertex): Do not output the component as this information - is already available when the component is traced. - (Unvisit, Visit): New routine. - * bindo-graphs.ads: Add new instance LGV_Lists. Remove instance - RC_Sets. Update the structure of type Library_Graph_Attributes - to remove the set of recorded cycles. - (Destroy_Library_Graph_Vertex): Move to the library level. - * bindo-writers.adb (Write_Component_Vertices): Output - information about the number of vertices. - * debug.adb: Document the use of binder switch -d_t. Update the - use of binder switch -d_T. - -2019-07-10 Yannick Moy - - * sem_spark.adb (Get_Root_Object): Replace precondition by error - message. - (Read_Indexes): Replace precondition by error message. - (Check_Callable_Body): Check only traversal function returns an - anonymous access type. - (Check_Expression): Issue error on unexpected expression as - path. - * sem_util.adb (First_Global): Fix access to global on - entry/task. - -2019-07-10 Javier Miranda - - * exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram. - (Expand_Call_Helper): Handle non-limited views when we check if - any formal is a class-wide interface type. - * exp_disp.adb (Expand_Interface_Actuals): Handle non-limited - views when we look for interface type formals to force "this" - displacement. - -2019-07-10 Ed Schonberg - - * sem_res.adb (Resolve_Equality_Op): Do not replace the resolved - operator by its alias if expander is not active, because the - operand type may not be frozen yet and its inherited operations - have not yet been created. - -2019-07-10 Hristian Kirtchev - - * bindo-elaborators.adb (Elaborate_Units): Set attribute - Elab_Position of all elaborated units. - (Set_Unit_Elaboration_Positions): New routine. - -2019-07-10 Gary Dismukes - - * exp_util.adb: Reformatting and a typo fix. - -2019-07-10 Yannick Moy - - * exp_util.adb (Remove_Side_Effects): Prefer renamings for - objects of possible owning type in GNATprove mode. - -2019-07-09 Ed Schonberg - - * sem_ch3.adb (Analyze_Object_Declaration): If the object type - is a composite type that has a dynamic predicate and, the - expression in the declaration is an aggregate, the generated - predicate check must appear after the expanded code for the - aggregate, which will appear after the rewritten object - declarastion. - -2019-07-09 Justin Squirek - - * sem_eval.adb (Expr_Value_E): Add conditional to correctly - handle constant enumerated character types. - -2019-07-09 Eric Botcazou - - * libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper - type for SpinCount component. - -2019-07-09 Justin Squirek - - * exp_ch4.adb (Expand_N_Allocator): Add conditional to detect - the presence of anoymous access type allocators and issue a - warning if the appropriate warning flag is enabled. - * warnsw.ads: Add new warning flag for anonymous allocators - * warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings, - Set_Underscore_Warning_Switch): Register new flags. - (WA_Warnings): Register new flag as an "all warnings" switch - * usage.adb, - doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Document new warning switches -gnatw_a and -gnatw_A. - * gnat_ugn.texi: Regenerate. - -2019-07-09 Ed Schonberg - - * sem_ch4.adb (Diagnose_Call): Improve error recovery when a - local subprogram name hides a possible candidate name declared - in a child package in the context of the current unit. - * sem_ch6.adb (Process_Formals): Protect against malformed - formal types when the parameter type does not denote an entity. - -2019-07-09 Hristian Kirtchev - - * bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a - DFS from an elaboration root whose corresponding unit lacks - elaboration code. This behavior mimics that of the old - elaboration order mechanism. - * bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the - vertex tracing within the functional branches of the routine. - This prevents spurious trace output. - (Has_No_Elaboration_Code): New routine. - (Trace_Cycle, Trace_Edge): Update the various Ids to use the - "standard" trace format. - * bindo-graphs.ads (Has_No_Elaboration_Code): New routine. - * bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code): - New routine. - -2019-07-09 Piotr Trojanek - - * ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb, - doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads, - exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb, - exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb, - fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb, - namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb, - prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb, - sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb, - sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb, - sinfo.ads: Replace ". " with ". ". Minor reformatting and typo - corrections. - * gnat_ugn.texi: Generate. - -2019-07-09 Hristian Kirtchev - - * bindo.ads: Move type Precedence_Kind from the private to the - visible part of the unit. - * bindo-augmentors.adb: Remove the use of global data as it is - bad practice. - (Augment_Library_Graph): Update the parameter profile. - (Is_Visited, Set_Is_Visited): Remove. - (Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the - parameter profile and comment on usage. - (Visit_Vertex): Likewise. Also keep track of which invocation - edge activates a task. - * bindo-augmentors.ads (Augment_Library_Graph): Update the - parameter profile and comment on usage. - * bindo-builders.adb (Create_Forced_Edge, - Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to - Add_Edge. - * bindo-diagnostics.adb: Add with end use clauses for Restrict - and Rident. - (Output_Dynamic_Model_Suggestions): Remove. - (Output_Invocation_Related_Suggestions): New routine. - (Output_Suggestions): Output all invocation-related suggestions - together. - * bindo-elaborators.adb: Remove types Comparator_Ptr and - Predicate_Ptr. - (Find_Best_Vertex): Update the parameter profile. - * bindo-graphs.adb (Activates_Task): New routine. - (Add_Body_Before_Spec_Edge): Update the call to - Add_Edge_With_Return. - (Add_Edge): Update the parameter profile and the call to - Add_Edge_With_Return. - (Add_Edge_With_Return): Update the parameter profile and comment - on usage. - (At_Least_One_Edge_Satisfies): New routine. - (Contains_Elaborate_All_Edge): Reimplement. - (Contains_Static_Successor_Edge, Contains_Task_Activation): New - routine. - (Contains_Weak_Static_Successor): Remove. - (Is_Static_Successor_Edge): New routine. - * bindo-graphs.ads: Add types LGE_Predicate_Ptr, - LGV_Comparator_Ptr, and LGV_Predicate_Ptr. Update type - Library_Graph_Edge_Attributes to capture whether an invocation - edge activates a task. Update the value of - No_Library_Graph_Edge_Attributes. - (Activates_Task): Update the parameter profile and comment on - usage. - (Contains_Static_Successor_Edge, Contains_Task_Activation): New - routines. - (Contains_Weak_Static_Successor): Remove. - * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: - Update the documentation to reflect the new task-related advice. - * gnat_ugn.texi: Regenerate. - -2019-07-09 Piotr Trojanek - - * exp_util.adb (Containing_Package_With_Ext_Axioms): Replace - low-level Ekind test with a high-level wrapper. - -2019-07-09 Arnaud Charlet - - * libgnat/s-memory.adb: Disable calls to Abort defer/undefer - when ZCX_By_Default. - -2019-07-09 Javier Miranda - - * sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are - not allowed for a derivation of a generic type. Extend the - current test to check that none of the parents is a generic - type. - -2019-07-09 Hristian Kirtchev - - * exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb, - sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor - reformatting. - -2019-07-09 Ed Schonberg - - * sem_res.adb (Resolve_Equality_Op): If the node was overloaded, - set properly the entity to which the node has been resolved. The - original entity is the first one found during analysis, and is - not necessarily the resolved one. - (Resolve_Op_Not): If the argument of negation is an overloaded - equality operation, call its resolution directly given that the - context type does not participate in overload resolution. - -2019-07-09 Hristian Kirtchev - - * bindo.adb: Remove with and use clauses for Debug. Add with - and use clauses for Opt. - (Find_Elaboration_Order): Enable the v4.0 elaboration order. The - v3.0 mechanism is now available under binder switch -H. - * bindusg.adb (Display): Enable switch -H. - * debug.adb: Free compiler switch -gnatd_G. Free binder switch - -d_N. - * sem_elab.adb: Update the section on switches to remove - -gnatd_G. - (Invocation_Graph_Recording_OK): The invocation graph is now - unconditionally recorded in ALI files. - * switch-b.adb (Scan_Binder_Switches): Scan switch -H. - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Update the documentation on compiler switches related to - elaboration. Update the documentation on binder switches to - include switch -H. - * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update - the documentation on elaboration order handling in GNAT. - * gnat_ugn.texi: Regenerate. - -2019-07-09 Eric Botcazou - - * repinfo.adb (List_Entities): Disregard formals altogether. - (List_Name): Properly escape the double quote in the JSON - output. - -2019-07-09 Javier Miranda - - * exp_util.adb (Remove_Side_Effects): Preserve the - Do_Range_Check flag. - -2019-07-09 Yannick Moy - - * sinfo.ads: Refine comment for Do_Range_Check. - -2019-07-09 Yannick Moy - - * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand - attribute reference on Enum_Rep. - -2019-07-09 Ed Schonberg - - * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the - case where the actual for a formal package in an instance is the - current instance of an enclosing generic package. - (Check_Formal_Packages): If the formal package declaration is - box-initialized or lacks associations altogether, no internal - instance was created to verify conformance, and there is no - validating package to remove from tree. - -2019-07-09 Yannick Moy - - * freeze.adb (Build_Renamed_Body): Do not set body to inline in - GNATprove mode. - -2019-07-09 Yannick Moy - - * exp_util.adb (Expand_Subtype_From_Expr): Still expand the type - of static expressions in GNATprove_Mode. - * sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete - special case for GNATprove_Mode. - -2019-07-09 Piotr Trojanek - - * doc/gnat_rm/the_gnat_library.rst, - doc/gnat_ugn/building_executable_programs_with_gnat.rst, - erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads, - libgnat/g-regexp.ads, libgnat/g-regpat.ads, - libgnat/g-spipat.ads, libgnat/s-os_lib.ads, - libgnat/s-regexp.ads: Reword "wild card" to "wildcard". - * gnat_rm.texi, gnat_ugn.texi: Regenerate. - -2019-07-09 Yannick Moy - - * sem_spark.adb (Check_Expression): Handle correctly implicit - assignments as part of allocators and (extension) aggregates. - (Get_Root_Object): Adapt for new path expressions. - (Is_Path_Expression): Return True for (extension) aggregate. - -2019-07-09 Piotr Trojanek - - * einfo.ads: Fix a typo. - -2019-07-09 Ed Schonberg - - * sem_util.adb (Scope_Within_Or_Same): Handle properly task - bodies and protected bodies, so that local variables within have - their proper scopes after these constructs have been rewritten - during expansion. This patch resembles but is not identical to - the code in Scope_Within. - -2019-07-09 Arnaud Charlet - - * gnat1drv.adb (Adjust_Global_Switches): Set - Dynamic_Elaboration_Checks to True in CodePeer mode. - -2019-07-09 Yannick Moy - - * sem_spark.adb (Get_Perm_Or_Tree): Issue an error when - encountering unknown global variable. - -2019-07-09 Yannick Moy - - * sem_spark.adb (Check_Expression): Change signature to take an - Extended_Checking_Mode, for handling read permission checking of - sub-expressions in an assignment. - (Check_Parameter_Or_Global): Adapt to new behavior of - Check_Expression for mode Assign. - (Check_Safe_Pointers): Do not analyze generic bodies. - (Check_Assignment): Separate checking of the target of an - assignment. - -2019-07-09 Eric Botcazou - - * repinfo.ads (JSON format): Adjust. - * repinfo.adb (Need_Blank_Line): Rename to... - (Need_Separator): ...this. - (Blank_Line): Rename to... - (Write_Separator): ...this and add JSON specific handling. - (List_Array_Info): Adjust to above renaming. - (List_Object_Info): Likewise. - (List_Record_Info): Likewise. - (List_Subprogram_Info): Likewise. - (List_Type_Info): Likewise. - (List_Entities): Do not set Need_Blank_Line. - (List_Rep_Info): Set Need_Separator and add JSON specific - handling. Output a single JSON stream in the normal case. - -2019-07-09 Arnaud Charlet - - * doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on - -fdump-ada-spec now that we generate Ada 2012. - * gnat_ugn.texi: Regenerate. - -2019-07-08 Eric Botcazou - - * repinfo.adb (List_Common_Type_Info): New procedure extracted - from... - (List_Type_Info): ...here. Call it for the common information, - start with a blank line and output the linker section at the - end, if any. - (List_Mechanisms): Rename to... - (List_Subprogram_Info): ...this. - (List_Array_Info): Call List_Common_Type_Info. - (List_Entities): Adjust to above change and renaming. - (List_Record_Info): Call List_Common_Type_Info. - -2019-07-08 Dmitriy Anisimkov - - * libgnat/g-sercom.ads - (Serial_Port_Descriptor): New type. - (Serial_Port): Add a comment, make it hold a - Serial_Port_Descriptor. - (To_Ada, To_C): New procedures. - (Port_Data, Port_Data_Access): Remove types. - * libgnat/g-sercom.adb (To_Ada): New stub. - * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb: - Update implementations accordingly. - * s-oscons-tmplt.c: Bind Serial_Port_Descriptor to - System.Win32.HANDLE on Windows, and to Interfaces.C.int on - Linux. Add "Interfaces.C." prefix for other basic integer type - bindings. - * xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix - for subtypes generation. - -2019-07-08 Arnaud Charlet - - * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: - Update documentation on No_Exceptions restriction. - * gnat_rm.texi: Regenerate. - -2019-07-08 Dmitriy Anisimkov - - * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid. - -2019-07-08 Piotr Trojanek - - * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect - package and subprogram bodies. - -2019-07-08 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation - of ignored GNATpp switch. - -2019-07-08 Hristian Kirtchev - - * doc/gnat_rm/implementation_defined_pragmas.rst: - Update the documentation of pragma Initialize_Scalars. - * gnat_rm.texi: Regenerate. - -2019-07-08 Javier Miranda - - * exp_ch4.adb (Tagged_Membership): Fix regression silently - introduced in r260738 that erroneouslusy causes the evaluation - to True of the membership test when the left operand of the - membership test is a class-wide interface object and the right - operand is a type that implements such interface type. - -2019-07-08 Hristian Kirtchev - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not - register an address clause when its prefix denotes a generic - formal object. - -2019-07-08 Hristian Kirtchev - - * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence - of an Elaborate_All edge before iterating over the edges of the - cycle. - (Output_Elaborate_Body_Transition): Update the parameter profile - and the comment on usage. Add a missing case where the edge is - within the context of an Elaborate_All. - (Output_Transition): Update the call to - Output_Elaborate_Body_Transition. - * bindo-graphs.ads, bindo-graphs.adb - (Contains_Elaborate_All_Edge): New routine. - -2019-07-08 Piotr Trojanek - - * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for - the fake __HEAP entity. - -2019-07-08 Daniel Mercier - - * gnat1drv.adb: Suppress warnings on memory representation in - CodePeer compiler mode. - -2019-07-08 Nicolas Roche - - * rtinit.c (__gnat_runtime_initialize): Remove dependency on - CommandLineToArgvW. - -2019-07-08 Doug Rupp - - * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7. - -2019-07-08 Dmitriy Anisimkov - - * Makefile.rtl: Use g-sercom__linux.adb for all linuxes. - -2019-07-08 Yannick Moy - - * expander.adb (Expand): Do not reset Analyzed flag always. - * sem_eval.adb (Fold_Ureal): Mark node as analyzed. - -2019-07-08 Ed Schonberg - - * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice - the assignment statement that computes the delay value, to - prevent improper tree sharing when the value is a type - conversion and Float_Overflow checks are enabled. - -2019-07-08 Hristian Kirtchev - - * bindo.adb: Update the section on terminology to include new - concepts. Update the section on switches to include new - entries. - * bindo.ads: Add type Precedence_Kind. - * bindo-builders.adb: Add with and use clauses for Debug and - Bindo.Validators. Add use clauses for - Bindo.Validators.Invocation_Graph_Validators and - Bindo.Validators.Library_Graph_Validators. - (Build_Invocation_Graph): Validate the graph immediately after - it was built. - (Build_Library_Graph): Update the parameter profile. The - creation of the graph is now elaboration model-agnostic. - Validate the graph immediately after it was built. - (Create_With_Edge): Create regular with edges for Elaborate and - Elaborate_All edges when the appropriate debug switches are in - effect. - * bindo-builders.ads (Build_Library_Graph): Update the parameter - profile. - * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of - an Elaborate_All edge throughout the inspection of the cycle's - edges. - (Output_Dynamic_Model_Suggestions): Output the suggestion only - when the cycle contains at least one weak edge where the - successor was statically elaborated. - (Output_Elaborate_Body_Transition, Output_Forced_Transition, - Output_With_Transition): Update the assertions. - * bindo-elaborators.adb: Remove use clauses for - Bindo.Validators.Invocation_Graph_Validators and - Bindo.Validators.Library_Graph_Validators. Remove strings - Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg. - Remove type String_Ptr. - (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set - Create_Component_Candidates_Set): Remove. - (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine. - (Elaborate_Component): Update the parameter profile and the - comment on usage. Reimplement the elaboration of a component. - The algorithm will now attempt to elaborate as many vertices - possible. If this is not possible, and a weakly elaborable - vertex is available use unit was compiled using the dynamic - model, the algorithm will elaborate it. - (Elaborate_Library_Graph): Reimplement the elaboration of the - graph. The algorithm will now attempt to elaborate as many - vertices along with their components as possible. If this is not - possible, and a weakly elaborable vertex is available use unit - was compiled using the dynamic model, the algorithm will - elaborate it along with its component. - (Elaborate_Units): Merge with the functionality of - Elaborate_Units_Common. - (Elaborate_Units_Common, Elaborate_Units_Dynamic, - Elaborate_Units_Static): Remove. - (Elaborate_Vertex): Update the parameter profile and the comment - on usage. Reimplemented. - (Find_Best_Candidate): Remove. - (Find_Best_Elaborable_Vertex, Find_Best_Vertex, - Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body, - Insert_Elaborable_Successor, Insert_Vertex): New routines. - (Is_Better_Candidate): Remove. - (Is_Better_Elaborable_Vertex, - Is_Better_Weakly_Elaborable_Vertex, - Is_Suitable_Elaborable_Vertex, - Is_Suitable_Weakly_Elaborable_Vertex): New routines. - (Trace_Candidate_Vertices): Remove. - (Trace_Component): Output the number of strong and weak - predecessors. - (Trace_Unelaborated_Vertices): Remove. - (Trace_Vertex): Output the number of strong and weak - predecessors. - (Trace_Vertices): New routine. - (Update_Successor, Update_Successors): Update the parameter - profile and the comment on usage. - * bindo-graphs.adb: Remove type Precedence_Kind. - (Add_Edge_With_Return): Update the increment of pending - predecessors. - (Add_Vertex): Provide default values for strong and weak - predecessors. - (Complementary_Vertex): Move the initial declaration to the - spec. Update the parameter profile and the comment on usage. - (Contains_Weak_Static_Successor): New routine. - (Create): Update the parameter profile. The creation of the - graph is now elaboration model-agnostic. - (Decrement_Pending_Predecessors): Update the parameter profile - and the comment on usage. Reimplemented. - (Delete_Edge): Update the decrement of pending predecesors. - (Has_Elaborate_Body): Do not treat a vertex as being subject to - Elaborate_Body when a debug switch is in effect. - (Increment_Pending_Predecessors): Update the parameter profile - and the comment on usage. Reimplemented. - (Is_Elaborable_Component): Reimplemented. - (Is_Elaborable_Vertex): Move the initial declaration to the - spec. Reimplemented. - (Is_Elaborate_Body_Pair): New routine. - (Is_Dynamically_Elaborated): Update the parameter profile. - Reimplemented. - (Is_Weakly_Elaborable_Vertex): New routine. - (Pending_Predecessors): Removed. - (Pending_Predecessors_For_Elaboration, - Pending_Strong_Predecessors, Pending_Weak_Predecessors, - Update_Pending_Predecessors): New routines. - (Update_Pending_Predecessors_Of_Components): Update the - increment of pending predecessors. - * bindo-graphs.ads: Update the components of type - Component_Attributes. Update the components of type - Library_Graph_Attributes. Update the components of type - Library_Graph_Vertex_Attributes. Update the initialization of - No_Component_Attributes. Update the initialization of - No_Library_Graph_Vertex_Attributes. - (Complementary_Vertex, Contains_Weak_Static_Successor): New - routines. - (Create): Update the parameter profile and the comment on usage. - (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated): - Update the parameter profile and the comment on usage. - (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New - routines. - (Pending_Predecessors): Removed. - (Pending_Predecessors_For_Elaboration, - Pending_Strong_Predecessors, Pending_Weak_Predecessors): New - routines. - * bindo-writers.adb (Write_Components): Moved from the spec. - (Write_Component): Output the strong and weak predecessors. - (Write_Library_Graph): Output the components as part of the - graph. - (Write_Library_Graph_Vertex): Output the strong and weak - predecessors. - * bindo-writers.ads (Write_Components): Moved to the body. - * debug.adb: Add and document new GNATbind switches -d_a, -d_b, - -d_e. - * bindo-validators.adb: Minor reformattings. - -2019-07-08 Bob Duff - - * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate): - Support additional data rates. - -2019-07-08 Olivier Hainque - - * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request - DECL_ARTIFICIAL_P on elab proc declarations. - -2019-07-08 Eric Botcazou - - * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and - Not_In_Extended_Main local exceptions. - (List_Structural_Record_Layout): For an extension, raise the - former if the parent subtype has not been built and the latter - if it is not declared in the main source unit. Fall back to the - flat layout if either exception has been raised. - -2019-07-08 Ed Schonberg - - * libgnat/a-strfix.adb (Delete): The RM describes the semantics - of Delete as equivalent to that of Replace_String with a null - argument. As a result, deleting a null string that starts past - the end of its argument is a noop and must not raise - Index_Error. - -2019-07-08 Javier Miranda - - * exp_disp.adb (Register_Primitive): When registering a - primitive in the secondary dispatch table, handle primitive - inherited through several levels of type derivation (required to - properly handle inherited 'null' primitive). - -2019-07-08 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of - preprocessor directives in GNATpp. - -2019-07-08 Javier Miranda - - * gnat1drv.adb (Post_Compilation_Validation_Checks: - Validate_Compile_Time_Warning_Errors is now located in sem_prag - (instead of sem_ch13). - * sem_ch13.ads (Validate_Compile_Time_Warning_Error, - Validate_Compile_Time_Warning_Errors): Move to sem_prag. - * sem_ch13.adb - (Compile_Time_Warnings_Errors): Move to sem_prag. - (Initialize): Remove initialization of table - Compile_Time_Warning_Errors. - (Validate_Compile_Time_Warning_Error, - Validate_Compile_Time_Warning_Errors): Move to sem_prag. - * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New - procedure. - * sem_prag.adb (Initialize): Initialize table - Compile_Time_Warning_Errors. - -2019-07-08 Ed Schonberg - - * sem_ch13.adb (Analyze_Aspect_Specifications): For a - pre/postcondition of a generic subprogram declaration, do not - use Relocate_Node on the aspect expression to construct the - corresponding attribute specification, to prevent tree anomalies - when the expression is a call with named actual parameters. - -2019-07-08 Javier Miranda - - * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas - used to report user defined compile time warning or errors - handle 'Size for types with known static RM size. - -2019-07-08 Justin Squirek - - * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for - the building of image tables. - (Expand_Image_Attribute): Minor cleanup. - -2019-07-08 Dmitriy Anisimkov - - * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve - documentation. - (Get_Socket_Option, Set_Socket_Option): Remove default value for - the Level formal. - -2019-07-08 Ed Schonberg - - * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an - unanalized aspect in a generic context that has not been - analyzed yet, if the aspect applies to a type, place the type on - the scope stack to make its components visible, before checking - conformance with the version of the expression analyzed at the - freeze point. - -2019-07-05 Justin Squirek - - * checks.adb (Apply_Accessibility_Check): Add logic to fetch the - function result accessibility level if one is required within - the generated check. - * exp_ch6.adb (Needs_Result_Accessibility_Level): Modify - controlling elsif block to handle more cases such as anonymous - access results and disable checking for coextensions. - -2019-07-05 Ed Schonberg - - * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal - accept statement for an enclosing entry abandon analysis to - prevent scope mismatches and potential infinite loops in - compiler. - -2019-07-05 Hristian Kirtchev - - * ali.adb (For_Each_Invocation_Construct, - For_Each_Invocation_Relation): New version. - (Scan_ALI): Initialize field Invocation_Graph_Encoding. - (Set_Invocation_Graph_Encoding): Update the setting of the - invocation graph encoding. - * ali.ads: Move field Invocation_Graph_Encoding from Unit_Record - to ALI_Record because the encoding applies to the whole ALI, - rather than one of the units (spec or body) for which the ALI - file was created. - (For_Each_Invocation_Construct, For_Each_Invocation_Relation): - New version. - * bindo.adb: Update the section on switches. Complete the - section of debugging elaboration order issues. - (Find_Elaboration_Order): Prepare the routine for the switch - from the old to the new elaboration order mechanism. - * bindo-diagnostics.adb (Find_And_Output_Invocation_Paths): - Manage a visited set used by Visit_Vertex. - (Output_All_Cycles_Suggestions, - Output_Dynamic_Model_Suggestions): Clarify the nature of the - suggested switch. - (Output_Elaborate_Body_Transition): Update the diagnostic to - emit a better message. - (Output_Forced_Suggestions, Output_Full_Encoding_Suggestions): - Clarify the nature of the suggested switch. - (Visit_Vertex): Update the parameter profile to add a set of - invokers visited during the transition. This set prevents - infinite exploration of the graph in case the invocations are - recursive. - * bindo-elaborators.adb: Add a use clause for - Bindo.Writers.Dependency_Writers. - (Elaborate_Units_Common): Output the library graph after it has - been augmented with invocation edges. Output just the components - instead of outputting the whole library graph again. - (Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the - dependencies as expressed in the library graph. - * bindo-units.adb (Invocation_Graph_Encoding): Update the - extraction of the invocation graph encoding. - * bindo-writers.adb: Add with and use clauses for Binderr and - Butil. - (palgc, plgc): New debug routine. - (Write_Components): Moved to the spec. Add a header for the - output. - (Write_Dependencies, Write_Dependencies_Of_Vertex, - Write_Dependency_Edge): New routine. - (Write_Elaboration_Order): Update the logic to follow the format - of Binde's order output. - (Write_Library_Graph): Do not output the components every time - the graph is written. - (Write_Unit): Output the invocation graph encoding of the unit. - Output the invocation constructs and relations for the unit - only. - * bindo-writers.ads (Write_Components): Moved from the body. - (Write_Dependencies): New routine. - * bindusg.adb: Prepare the routine for the switch from the old - to the new elaboration order mechanism. - * debug.adb: Binder switch -d_O is now not associated with any - functionality. - * einfo.adb (Is_Elaboration_Target): The attribute applies to - packages, as specified by the comment on the attribute usage. - * opt.ads: Add a global flag which controls the choice between - the new and the legacy elaboration order mechanism. - * sem_elab.adb: Add Package_Target to type Target_Kind. - (Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure, - Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios, - Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the - entity of the main unit. - (Create_Package_Rep): New routine. - (Create_Target_Rep): Add processing for packages. - (Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use - Main_Unit_Entity to obtain the entity of the main - unit. - (Invocation_Graph_Recording_OK): Prepare the routine for the - switch from the old to the new elaboration order mechanism. - (Main_Unit_Entity): New routine. - (Meet_Elaboration_Requirement, - Process_Conditional_ABE_Variable_Reference): Use - Main_Unit_Entity to obtain the entity of the main unit. - (Process_Invocation_Instantiation): New routine. - (Process_Invocation_Scenario): Add processing for - instantiations. - * switch-b.adb (Scan_Binder_Switches): Prepare the routine for - the switch from the old to the new elaboration order mechanism. - -2019-07-05 Joffrey Huguet - - * libgnat/a-textio.adb: Add abstract state refinment. - * libgnat/a-textio.ads: Add File_System abstract state. Add - global contracts, contract cases, preconditions and - postconditions to procedures and functions. - (Set_Input, Set_Output, Set_Error, Standard_Input, - Standard_Output, Standard_Error, Current_Input, Current_Output, - Current_Error): Turn SPARK_Mode off. - (Get_Line): Turn SPARK_Mode off on Get_Line functions. - * libgnat/a-tideio.ads, libgnat/a-tienio.ads, - libgnat/a-tifiio.ads, libgnat/a-tiflio.ads, - libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global - contracts, contract cases, preconditions and postconditions to - procedures and functions. - -2019-07-05 Arnaud Charlet - - * doc/gnat_ugn/platform_specific_information.rst: Refresh doc on - installing from the command line on Windows. Remove obsolete - part. - * gnat_ugn.texi: Regenerate. - -2019-07-05 Vasiliy Fofanov - - * libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with - the correct one. Also capitalize references to False - throughout. - -2019-07-05 Eric Botcazou - - * exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual - parameters of function calls here either. - -2019-07-05 Hristian Kirtchev - - * bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb, - exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb, - libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads, - sem_util.adb: Minor reformatting. - -2019-07-05 Ed Schonberg - - * sem_ch13.adb (Build_Predicate_Functions): If a subtype that - carries a static predicate aspect is frozen immediately after - its declaration, ensure that the generated function body created - for predicate checking is inserted after the corresponding - subprogram declaration, which is created at the point the - declaration is elaborated. - -2019-07-05 Hristian Kirtchev - - * exp_ch7.adb (Cleanup_Record): Use the underlying type when - checking for components with tasks. - -2019-07-05 Arnaud Charlet - - * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread. - -2019-07-05 Ed Schonberg - - * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit - range checks when the index type of the bit-packed array is an - enumeration type with a non-standard representation, - -2019-07-05 Hristian Kirtchev - - * sem_res.adb (Is_Control_Flow_Statement): Delay statements - contain an expression, which in turn may have side effects and - affect the infinite recursion. As a result, delay statements - should not be treated specially. - -2019-07-05 Arnaud Charlet - - * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads, - libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads, - libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads, - libgnarl/s-linux__sparc.ads: Fix typos in comments. - -2019-07-05 Hristian Kirtchev - - * sem_res.adb (Check_Infinite_Recursion): Reimplemented. - (Enclosing_Declaration_Or_Statement, - Invoked_With_Different_Arguments, Is_Conditional_Statement, - Is_Control_Flow_Statement, Is_Immediately_Within_Body, - Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement, - Preceded_By_Control_Flow_Statement, - Within_Conditional_Statement): New routines. - -2019-07-05 Javier Miranda - - * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an - accessibility check when the conversion is an access to - class-wide interface type and it is an actual parameter. - * exp_ch6.adb (Expand_Call_Helper): Add documentation on the - accessibility level of an anonymous allocator defining the value - of an access parameter. - * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add - support for an anonymous allocator whose type is that of a - stand-alone object of an anonymous access to object type. - -2019-07-05 Piotr Trojanek - - * einfo.ads, sem_res.adb: Typo fixes in comments. - -2019-07-05 Bob Duff - - * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for - Has_Foreign_Convention to the imported case only. If a - build-in-place function is exported, and called from Ada code, - build-in-place protocols should be used. - -2019-07-05 Ed Schonberg - - * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope - is a loop, continue climbing the scope stack to find the - enclosing subprogram. - (Gather_Components): Handle properly a choice in a record - aggregate that is given by a subtype with a static predicate. - -2019-07-05 Javier Miranda - - * debug.adb (-gnatd.K): Leave available this switch. - * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms): - Remove. - * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag, - Contract_Only_Body_Nodes, Get_Contract_Only_Body, - Is_Contract_Only_Body, Set_Contract_Only_Body): Remove. - -2019-07-05 Pierre-Marie de Rodat - - * libgnat/a-strunb.ads: Import documentation from the RM - -2019-07-05 Pierre-Marie de Rodat - - * libgnat/a-strfix.ads: Import documentation from the RM - -2019-07-05 Yannick Moy - - * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast - switches. - -2019-07-05 Hristian Kirtchev - - * ali.adb: Relocate types Invocation_Construct_Record, - Invocation_Relation_Record, and Invocation_Signature_Record to - the body of ALI. Relocate tables Invocation_Constructs, - Invocation_Relations, and Invocation_Signatures to the body of - ALI. Remove type Body_Placement_Codes. Add new types - Declaration_Placement_Codes, and - Invocation_Graph_Encoding_Codes. Update the literals of type - Invocation_Graph_Line_Codes. - (Add_Invocation_Construct): Update the parameter profile. Add an - invocation construct built from all attributes provided. - (Add_Invocation_Relation): Update the parameter profile. Add an - invocation relation built from all attributes provided. - (Body_Placement): New routine. - (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind): - Removed. - (Code_To_Declaration_Placement_Kind, - Code_To_Invocation_Graph_Encoding_Kind, Column, - Declaration_Placement_Kind_To_Code, Extra, - For_Each_Invocation_Construct, For_Each_Invocation_Relation, - Invocation_Graph_Encoding, - Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line, - Locations, Name): New routine. - (Scan_Invocation_Construct_Line): Reimplement the scanning - mechanism. - (Scan_Invocation_Graph_Attributes_Line): New routine. - (Scan_Invocation_Graph_Line): Use a case statement to dispatch. - (Scan_Invocation_Relation_Line): Reimplement the scanning - mechanism. - (Scope): New routine. - (Set_Invocation_Graph_Encoding, Signature, Spec_Placement, - Target): New routine. - * ali.ads: Add new type Invocation_Graph_Encoding_Kind. Add - component Invocation_Graph_Encoding to type Unit_Record. - Relocate various types and data structures to the body of ALI. - (Add_Invocation_Construct, Add_Invocation_Relation): Update the - parameter profile. - (Body_Placement): New routine. - (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind): - Removed. - (Code_To_Declaration_Placement_Kind, - Code_To_Invocation_Graph_Encoding_Kind, Column, - Declaration_Placement_Kind_To_Code, Extra, - For_Each_Invocation_Construct, For_Each_Invocation_Relation, - Invocation_Graph_Encoding, - Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line, - Locations, Name, Scope, Set_Invocation_Graph_Encoding, - Signature, Spec_Placement, Target): New routine. - * bindo.adb: Add with clause for Binde. Add with and use - clauses for Debug. Update the documentation. Add new switches. - (Find_Elaboration_Order): Dispatch to the proper elaboration - mechanism. - * bindo-augmentors.adb: - Remove with and use clauses for GNAT and GNAT.Sets. Remove - membership set VS. Update the parameter profiles of most - routines to use better parameter names. Update the - implementation of most routine to use the new parameter names. - Remove various redundant assertions. - * bindo-builders.adb: Use better names for instantiated data - structures. Update all references to these names. Update the - parameter profiles of most routines to use better parameter - names. Update the implementation of most routine to use the new - parameter names. - (Build_Library_Graph): Update the parameter profile. Update the - call to Create. - (Create_Vertex): Reimplemented. - (Declaration_Placement_Vertex): New routine. - * bindo-builders.ads (Build_Library_Graph): Update the parameter - profile and comment on usage. - * bindo-diagnostics.adb: Almost a new unit. - * bindo-diagnostics.ads: Add a use clause for - Bindo.Graphs.Invocation_Graphs. Remove package - Cycle_Diagnostics. - (Diagnose_Circularities): New routine. - * bindo-elaborators.adb: Remove the with and use clauses for - Binderr and GNAT.Sets. Remove the use clause for - Bindo.Diagnostics.Cycle_Diagnostics. Remove membership set VS. - Update the parameter profiles of most routines to use better - parameter names. Update the implementation of most routine to - use the new parameter names. (Elaborate_Units_Common): Update - the parameter profile. Pass an infication to the library graph - builder whether the dynamic model is in effect. - (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use - Diagnose_Circularities to provide diagnostics. - (Update_Successor): Use routine In_Same_Component to determine - whether the predecessor and successor reside in different - components. - * bindo-graphs.adb: Add with and use clauses for Butil, Debug, - Output, and Bindo.Writers. Remove with and use clauses for - GNAT.Lists. Update the parameter profiles of most routines to - use better parameter names. Update the implementation of most - routine to use the new parameter names. Remove various - redundant assertions. Remove doubly linked list EL. Add new - type Precedence_Kind. - (Add_Cycle): New routine. - (Add_Vertex): Update the parameter profile. Update the creation - of vertex attributes. - (Add_Vertex_And_Complement, Body_Vertex, Column, - Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New - routines. - (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle, - Destroy_Library_Graph_Edge, Extra, File_Name, - Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge, - Find_Cycles, Find_First_Lower_Precedence_Cycle, - Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle, - Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle, - Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort, - Invocation_Edge_Count, Invocation_Graph_Encoding, - Is_Cycle_Initiating_Edge, Is_Cyclic_Edge, - Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge, - Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge, - Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge, - Is_Dynamically_Elaborated, Is_Elaborate_All_Edge, - Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines. - (Is_Existing_Predecessor_Successor_Relation): Removed. - (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle, - Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind, - Length): New routine. - (Lib_Vertex): Removed. - (Line, Links_Vertices_In_Same_Component, - Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle, - Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence, - Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines. - (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge. - (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex. - (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge. - (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex. - (Set_Is_Existing_Predecessor_Successor_Relation): Removed. - (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge, - Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge, - Trace_Eol, Trace_Vertex): New routines. - * bindo-graphs.ads: Add with and use clauses for Types and - GNAT.Lists. Update the parameter profiles of most routines to - use better parameter names. Update the implementation of most - routine to use the new parameter names. Add the new - instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists, - LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets. Add new type - Library_Graph_Cycle_Id along with an empty and initial value. - Remove component Lib_Vertex and add new components Body_Vertex - and Spec_Vertex to type Invocation_Graph_Vertex_Attributes. Add - new type Library_Graph_Cycle_Kind. Add new iterators - All_Cycle_Iterator and Edges_Of_Cycle_Iterator. Add new type - Library_Graph_Cycle_Attributes. Add new components - Cycle_Attributes, Cycles, and Dynamically_Elaborated to type - Library_Graph_Attributes. - (Body_Vertex, Column, Destroy_Invocation_Graph_Edge, - Destroy_Library_Graph_Cycle_Attributes, - Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles, - Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle, - Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle, - In_Same_Component, Invocation_Edge_Count, - Invocation_Graph_Encoding, Is_Dynamically_Elaborated, - Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge, - Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge, - Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind): - New routines. - (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present, - Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines. - * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New - routines. - * bindo-units.ads: Add new instantiated data structure - Unit_Sets. - (File_Name, Invocation_Graph_Encoding): New routine. - * bindo-validators.adb: Remove with and use clauses for GNAT and - GNAT.Sets. Remove membership set US. Update the parameter - profiles of most routines to use better parameter names. Update - the implementation of most routine to use the new parameter - names. - (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles, - Validate_Invocation_Graph_Vertex): Remove the validation of - component Lib_Vertex. Add the validation of components - Body_Vertex and Spec_Vertex. - (Write_Error): New routine. - * bindo-validators.ads (Validate_Cycles): New routine. - * bindo-writers.adb: Update the parameter profiles of most - routines to use better parameter names. Update the - implementation of most routine to use the new parameter names. - (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines. - (Write_Invocation_Graph_Vertex): Remove the output of component - Lib_Vertex. Add the output of components Body_Vertex and - Spec_Vertex. - * bindo-writers.ads (Write_Cycles): New routine. - * debug.adb: Use binder switches -d_C and -d_P, add - documentation on their usage. - * gnatbind.adb: Remove with and use clauses for Binde. Delegate - the choice of elaboration mechanism to Bindo. - * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations, - Name, Placement, Scope, Signature, Target): Removed. - (Write_Invocation_Graph): Moved at the top level. - (Write_Invocation_Graph_Attributes): New routine. - (Write_Invocation_Relation, Write_Invocation_Signature): Moved - at the top level. - * lib-writ.ads: Add a documentation section on invocation graph - attributes. - * sem_elab.adb (Body_Placement_Of): New routine. - (Declare_Invocation_Construct): Update the call to - Add_Invocation_Construct. - (Declaration_Placement_Of_Node): New routine. - (Get_Invocation_Attributes): Correct the retrieval of the - enclosing subprogram where the postcondition procedure lives. - (Placement_Of, Placement_Of_Node): Removed. - (Record_Invocation_Graph): Record the encoding format used. - (Record_Invocation_Graph_Encoding): New routine. - (Record_Invocation_Relation): Update the call to - Add_Invocation_Relation. - (Spec_Placement_Of): Removed. - * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine. - -2019-07-05 Ed Schonberg - - * checks.adb (Apply_Predicate_Check): Except within the - subprogram body that defines the formal, do not apply predicate - check on a formal IN parameter: such a check is redundant and - its expansion can lead to out-of-scope references when it is - originates in a function call in a precondition, - -2019-07-05 Yannick Moy - - * sem_res.adb (Resolve_Call): Cannot inline in quantified - expressions. - * sem_util.adb, sem_util.ads (In_Quantified_Expression): New - function. - -2019-07-05 Bob Duff - - * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: - Fix typo. - * gnat_rm.texi: Regenerate. - -2019-07-05 Bob Duff - - * exp_attr.adb (Input): Take the No_Stream_Optimizations - restriction into account. - -2019-07-05 Claire Dross - - * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal - vectors are now always bounded so that they do not need to be - limited anymore. - -2019-07-05 Dmitriy Anisimkov - - * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New - function. - -2019-07-04 James Clarke - - * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type - definition public. - (CLOCK_REALTIME): Make value public. - -2019-07-04 Javier Miranda - - * exp_tss.adb (Init_Proc): Adding missing support for access to - subprograms and access to protected subprograms of non-default - C++ constructors. - -2019-07-04 Eric Botcazou - - * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to - set the validity settings in CodePeer mode. - * par-load.adb (Load): Remove all code dealing with validity - settings. - * validsw.ads (Validity_Check_Copies): Alphabetize. - * validsw.adb (Reset_Validity_Check_Options): Set all options to - off. - (Save_Validity_Check_Options): Save all options. - -2019-07-04 Hristian Kirtchev - - * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb, - exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb, - rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb, - sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor - reformatting. - -2019-07-04 Joffrey Huguet - - * libgnarl/a-taside.ads: Add assertion policy to ignore - preconditions. - (Abort_Task, Is_Terminated, Is_Callable): Add preconditions. - -2019-07-04 Eric Botcazou - - * doc/gnat_rm/implementation_defined_pragmas.rst: Fix - capitalization and parenthesis glitches. - * gnat_rm.texi: Regenerate. - -2019-07-04 Ed Schonberg - - * sem_ch10.adb (Remove_Context_Clauses): Handle properly the - removal of a limited_with_clause which appears in the library - unit oF the main unit, when some other unit in the context has a - regular with_clause on the same unit, to prevent spurious - visibility errors in the subsequent analysis of pending instance - bodies. - -2019-07-04 Hristian Kirtchev - - * sem_elab.adb: Add new type Elaboration_Phase_Status along with - a global to keep track of the elaboration phase status. - Initialize all internal data structures to Nil for services - Elaborated_Units, Internal_Representation, and Scenario_Storage. - (Build_Call_Marker): Do not create a call marker when the - elaboration phase is not active. - (Build_Variable_Reference_Marker): Do not create a call marker - when the elaboration phase is not active. - (Check_Elaboration_Scenarios): Destroy all internal structures - when the elaboration phase does not have to run. Do not execute - when the elaboration phase is not active. - (Elaboration_Phase_Active): New routine. - (Finalize_All_Data_Structures): New routine. - (Initialize): Initialize all internal data structures and signal - that the elaboration phase has started. - (Initialize_All_Data_Structures): New routine. - (Initialize_Elaborated_Units): Initialize all internal data - structures. - (Initialize_Internal_Representation): Initialize all internal - data structures. - (Initialize_Scenario_Storage): Initialize all internal data - structures. - (Kill_Elaboration_Scenario): Do not execute when the elaboration - phase is not active. - (Set_Elaboration_Phase): New routine. - (Update_Elaboration_Scenario): Do not execute when the - elaboration phase is not active. - -2019-07-04 Gary Dismukes - - * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special - treatment of calling Mask_Unfrozen_Types must also be done in - the case of an Ignored_Ghost_Entity, because Expander_Active is - False in that case. - -2019-07-04 Yannick Moy - - * sem_prag.adb (Check_Library_Level_Entity): Update for new rule - on SPARK_Mode. - -2019-07-04 Justin Squirek - - * sem_disp.adb (Check_Controlling_Formals): Obtain the full view - before type comparison. - -2019-07-04 Ed Schonberg - - * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible - subprogram, extracted from Expand_Composite_Equality, to handle - properly the composition of equality for variant record types. - * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each - component, to handle properly the case of a component with a - user-defined equality. Revert to predefined equality if the - user-defined operation is abstract, to maintain compatibility - with older versions, - -2019-07-04 Justin Squirek - - * exp_ch3.adb (Build_Initialization_Call): Fixup - *_skip_null_excluding_check argument to handle new default. - (Init_Formals): Make *_skip_null_excluding_check formal default - to False - * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy - code duplication - -2019-07-04 Bob Duff - - * sem_ch3.adb (Access_Definition): Do not create a master unless - Tasking_Allowed. Otherwise, this fails on restricted runtimes. - -2019-07-04 Hristian Kirtchev - - * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the - Default_Initial_Condition attributes to an incomplete type. - -2019-07-04 Ed Schonberg - - * sem_attr.adb (Check_Array_Type): An array type attribute such - as 'First can be applied to an unconstrained array tyope when - the attribute reference appears within an aspect specification - and the prefix is a current instance, given that the prefix of - the attribute will become a formal of the subprogram that - implements the aspect (typically a predicate check). - -2019-07-04 Piotr Trojanek - - * sem_util.adb (Yields_Synchronized_Object): Fix typos in - comments. - -2019-07-04 Yannick Moy - - * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK - rule. - -2019-07-04 Yannick Moy - - * sem_spark.adb (Check_Statement): Only check permission of - object in extended return when it is of a deep type. - -2019-07-04 Justin Squirek - - * sem_ch12.adb (Perform_Appropriate_Analysis): Added for - selecting which type of analysis based on wheither the - instantiation is a generic at the library-level. In which case - expansion during analysis. - (Preanalyze_Actuals): Modify calls to Analyze to use the new - routine. - -2019-07-04 Ed Schonberg - - * exp_unst.adb: Handle conditional expressions. - -2019-07-04 Yannick Moy - - * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only - analyze parts of the code marked in SPARK. - -2019-07-04 Hristian Kirtchev - - * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb: - Minor reformatting. - -2019-07-04 Yannick Moy - - * sem_spark.adb (Explanation, Get_Expl): New functions to get - the explanation for a permission mismatch. - (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take - explanation into account for issuing a more precise error - message. - (Set_Perm_Prefixes, Set_Perm_Extensions, - Set_Perm_Extensions_Move): Pass suitable argument for the - explanation node. - -2019-07-04 Arnaud Charlet - - * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add - support for record aggregates. - (Component_Check): Use Is_CCG_Supported_Aggregate instead of a - similar local predicate. - (Convert_To_Assignments): Take advantage of In_Place_Assign_OK - predicate when possible. - (Is_CCG_Supported_Aggregate): Return False for records with - representation clauses and fix the logic for dealing with nested - aggregates. - -2019-07-04 Piotr Trojanek - - * opt.adb (Set_Config_Switches): Keep assertions policy as - enabled when analysing internal units in GNATprove mode. - -2019-07-04 Arnaud Charlet - - * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip - N_Variable_Reference_Marker when checking for the presence of - actions. - -2019-07-04 Arnaud Charlet - - * exp_aggr.adb (Check_Component): Take into account type - conversions. - -2019-07-04 Dmitriy Anisimkov - - * doc/gnat_ugn/platform_specific_information.rst: Document - Windows socket timeout particularity. - * gnat_ugn.texi: Regenerate. - * gsocket.h: Include versionhelpers.h. - * socket.c (__gnat_minus_500ms): New function. - * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New - imported function. - * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove - 500ms from the requested timeout only on old Windows version. - -2019-07-04 Thomas Quinot - - * get_scos.adb: Remove bogus, dead code. - -2019-07-04 Ed Schonberg - - * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the - component is an entity name, its dimensions are those of its - type. - -2019-07-03 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in - GNATpp. - -2019-07-03 Hristian Kirtchev - - * binde.adb: Remove with clause for System.OS_Lib. - (Force_Elab_Order): Refactor the majority of the code in Butil. - Use the new forced units iterator to obtain unit names. - * bindo-builders.adb: Add with and use clauses for Binderr, - Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables. Add - a hash table which maps units to line number in the forced - elaboration order file. - (Add_Unit): New routine. - (Build_Library_Graph): Create forced edges between pairs of - units listed in the forced elaboration order file. - (Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number, - Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info, - Is_Duplicate_Unit, Missing_Unit_Info): New routines. - * bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit): - Refactor some of the behavior to Bindo-Units. - * bindo-graphs.ads: Enable the enumeration literal for forced - edges. - * bindo-units.adb, bindo-units.ads (Is_Internal_Unit, - Is_Predefined_Unit): New routines. - * butil.adb: Add with and use clauses for Opt, GNAT, and - System.OS_Lib. Add with clause for Unchecked_Deallocation. - (Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name, - Read_Forced_Elab_Order_File): New routines. - * butil.ads: Add with and use clauses for Types. Add new - iterator over the units listed in the forced elaboration order - file. - (Has_Next, Iterate_Forced_Units, Next): New routine. - * namet.adb, namet.ads (Present): New routine. - -2019-07-03 Bob Duff - - * sem_ch3.adb (Access_Definition): The code was creating a - master in the case where the designated type is a class-wide - interface type. Create a master in the noninterface case as - well. That is, create a master for all limited class-wide types. - -2019-07-03 Yannick Moy - - * erroutc.adb (Sloc_In_Range): New function to determine whether - the range of a pragma Warnings covers a location, taking - instantiations into account. - -2019-07-03 Johannes Kanig - - * osint.ads, osint.adb (Get_First_Main_File_Name): New routine - to access the first file provided on the command line. - -2019-07-03 Ed Schonberg - - * inline.adb (Process_Formals_In_Aspects): New procedure within - Expand_Inlined_Call, to perform a replacement of references to - formals that appear in aspect specifications within the body - being inlined. - -2019-07-03 Justin Squirek - - * sem_ch8.adb (Analyze_Object_Renaming): Add call to search for - the appropriate actual subtype of the object renaming being - analyzed. - (Check_Constrained_Object): Minor cleanup. - -2019-07-03 Yannick Moy - - * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to - return go through traversal function call. - (Check_Type): Consistently use underlying type. - (Get_Perm): Adapt for case of elaboration code where variables - are not declared in the environment. Remove incorrect handling - of borrow and observe. - -2019-07-03 Hristian Kirtchev - - * inline.adb (Build_Return_Object_Formal): New routine. - (Can_Split_Unconstrained_Function): Code clean up. - (Copy_Formals,Copy_Return_Object): New routines. - (Split_Unconstrained_Function): Code clean up and refactoring. - -2019-07-03 Gary Dismukes - - * bindo-augmentors.adb, bindo-augmentors.ads, - bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb, - sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial - corrections and reformatting. - -2019-07-03 Bob Duff - - * sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning - if an Iterator_Specification is present. - -2019-07-03 Bob Duff - - * doc/gnat_ugn/gnat_utility_programs.rst: Document default - new-line behavior. - -2019-07-03 Hristian Kirtchev - - * ali.adb: Add with and use clauses for GNAT, - GNAT.Dynamic_HTables, and Snames. Add a map from invocation - signature records to invocation signature ids. Add various - encodings of invocation-related attributes. Sort and update - table Known_ALI_Lines. - (Add_Invocation_Construct, Add_Invocation_Relation, - Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind, - Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind, - Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New - routines. - (Initialize_ALI): Sort the initialization sequence. Add - initialization for all invocation-related tables. - (Invocation_Construct_Kind_To_Code, - Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code, - Invocation_Signature_Of, Present): New routines. - (Scan_ALI): Add the default values for invocation-related ids. - Scan invocation graph lines. - (Scan_Invocation_Graph_Line): New routine. - * ali.ads: Add with clause for GNAT.Dynamic_Tables. Add types - for invocation constructs, relations, and signatures. Add - tables for invocation constructs, relations, and signatures. - Update Unit_Record to capture invocation-related ids. Relocate - table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array - from Binde. - (Add_Invocation_Construct, Add_Invocation_Relation, - Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind, - Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind, - Code_To_Invocation_Graph_Line_Kind, - Invocation_Construct_Kind_To_Code, - Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code, - Invocation_Signature_Of, Present): New routines. - * binde.adb: Add with and use clause for Types. Add use clause - for ALI.Unit_Id_Tables; - * binde.ads: Relocate table Unit_Id_Tables and subtypes - Unit_Id_Table, Unit_Id_Array to ALI. - * bindgen.adb: Remove with and use clause for ALI. - * bindgen.ads: Remove with and use clause for Binde. Add with - and use clause for ALI. - * bindo.adb, bindo.ads, bindo-augmentors.adb, - bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads, - bindo-diagnostics.adb, bindo-diagnostics.ads, - bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb, - bindo-graphs.ads, bindo-units.adb, bindo-units.ads, - bindo-validators.adb, bindo-validators.ads, bindo-writers.adb, - bindo-writers.ads: New units. - * debug.adb: Use and describe GNAT debug switches -gnatd_F and - -gnatd_G. Add GNATbind debug switches in the ranges dA .. dZ, - d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and - d_1 .. d_9. Use and describe GNATbind debug switches -d_A, - -d_I, -d_L, -d_N, -d_O, -d_T, and -d_V. - * exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to - Sem_Util. - * gnatbind.adb: Add with and use clause for Bindo. Use the new - Bindo elaboration order only when -d_N is in effect. - * lib-writ.adb - (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement, - Scope, Signature, Target): New routines. - (Write_ALI): Output all invocation-related data. - (Write_Invocation_Graph): New routine. - * lib-writ.ads: Document the invocation graph ALI line. - * namet.adb, namet.ads (Present): New routines. - * sem_ch8.adb (Find_Direct_Name): Capture the status of - elaboration checks and warnings of an identifier. - (Find_Expanded_Name): Capture the status of elaboration checks - and warnings of an expanded name. - * sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure - that invocation graph-related data within the body of the main - unit is encoded in the ALI file. - (Analyze_Generic_Subprogram_Declaration): Ensure that invocation - graph-related data within the body of the main unit is encoded - in the ALI file. - (Analyze_Package_Instantiation): Perform minimal decoration of - the instance entity. - (Analyze_Subprogram_Instantiation): Perform minimal decoration - of the instance entity. - * sem_elab.adb: Perform heavy refactoring of all code. The unit - is now split into "services" which specialize in one area of ABE - checks. Add processing in order to capture invocation-graph - related attributes of the main unit, and encode them in the ALI - file. The Processing phase can now operate in multiple modes, - all described by type Processing_Kind. Scenarios and targets - are now distinct at the higher level, and carry their own - representations. This eliminates the need to constantly - recompute their attributes, and offers the various processors a - uniform interface. The various initial states of the Processing - phase are now encoded using type Processing_In_State, and - xxx_State constants. - * sem_elab.ads: Update the literals of type - Enclosing_Level_Kind. Add Inline pragmas on several routines. - * sem_prag.adb (Process_Inline): Ensure that invocation - graph-related data within the body of the main unit is encoded - in the ALI file. - * sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit): - Code clean up. - (Exceptions_OK): Relocated from Sem_Util. - (Mark_Save_Invocation_Graph_Of_Body): New routine. - * sem_util.ads (Exceptions_OK): Relocated from Sem_Util. - (Mark_Save_Invocation_Graph_Of_Body): New routine. - * sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to - N_Variable_Reference_Marker. - (Is_Elaboration_Warnings_OK_Node): Now applicable to - N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker. - (Is_Read): Use Flag4. - (Is_SPARK_Mode_On_Node): New applicable to - N_Variable_Reference_Marker. - (Is_Write): Use Flag5. - (Save_Invocation_Graph_Of_Body): New routine. - (Set_Is_Elaboration_Checks_OK_Node): Now applicable to - N_Variable_Reference_Marker. - (Set_Is_Elaboration_Warnings_OK_Node): Now applicable to - N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker. - (Set_Is_SPARK_Mode_On_Node): New applicable to - N_Variable_Reference_Marker. - (Set_Save_Invocation_Graph_Of_Body): New routine. - * sinfo.ads: Update the documentation of attributes - Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node, - Is_SPARK_Mode_On_Node. Update the flag usage of attributes - Is_Read, Is_Write. Add attribute Save_Invocation_Graph_Of_Body - and update its occurrence in nodes. - (Save_Invocation_Graph_Of_Body): New routine along with pragma - Inline. - (Set_Save_Invocation_Graph_Of_Body): New routine along with - pragma Inline. - * switch-b.adb (Scan_Binder_Switches): Refactor the scanning of - debug switches. - (Scan_Debug_Switches): New routine. - * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine. - * libgnat/g-graphs.adb (Associate_Vertices): Update the use of - Component_Vertex_Iterator. - (Contains_Component, Contains_Edge, Contains_Vertex, Has_Next): - Reimplemented. - (Iterate_Component_Vertices): New routine. - (Iterate_Vertices): Removed. - (Next): Update the parameter profile. - (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New - routines. - * libgnat/g-graphs.ads: Update the initialization of - No_Component. Add type Component_Vertex_Iterator. Remove type - Vertex_Iterator. - (Has_Next): Add new versions and remove old ones. - (Iterate_Component_Vertices): New routine. - (Iterate_Vertices): Removed. - (Next): Add new versions and remove old ones. - (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New - routines. - * libgnat/g-sets.adb (Contains): Reimplemented. - * gcc-interface/Make-lang.in (GNATBIND_OBJS): Add - GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units. - * rtsfind.ads: Remove extra space. - -2019-07-03 Yannick Moy - - * sem_spark.adb: Add support for locally borrowing and observing - a path. - (Get_Root_Object): Add parameter Through_Traversal to denote - when we are interesting in getting to the traversed parameter. - (Is_Prefix_Or_Almost): New function to support detection of - illegal access to borrowed or observed paths. - (Check_Pragma): Add analysis of assertion pragmas. - -2019-07-03 Ed Schonberg - - * sem_ch13.adb (Build_Predicate_Functions): In a generic context - we do not build the bodies of predicate fuctions, but the - expression in a static predicate must be elaborated to allow - case coverage checking within the generic unit. - (Build_Discrete_Static_Predicate): In a generic context, return - without building function body once the - Static_Discrete_Predicate expression for the type has been - constructed. - -2019-07-03 Hristian Kirtchev - - * bindgen.adb, inline.adb, layout.adb, sem_ch12.adb, - sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting. - -2019-07-03 Bob Duff - - * par-ch3.adb (P_Defining_Identifier): Call - Check_Defining_Identifier_Casing. - * style.ads, styleg.ads, styleg.adb - (Check_Defining_Identifier_Casing): New procedure to check for - mixed-case defining identifiers. - * stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New - flag for checking for mixed-case defining identifiers. - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: - Document new feature. - * gnat_ugn.texi: Regenerate. - -2019-07-03 Eric Botcazou - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst - (Warning message control): Document that -gnatw.z/Z apply to - array types. - * freeze.adb (Freeze_Entity): Give -gnatw.z warning for array - types as well, but not if the specified alignment is the minimum - one. - * gnat_ugn.texi: Regenerate. - -2019-07-03 Bob Duff - - * einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid" - correctly. - -2019-07-03 Ed Schonberg - - * sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error - message on attribute applied to a renaming when the renamed - object is an aggregate (from code reading). - (Check_Aspect_At_End_Of_Declarations): In a generic context - where freeze nodes are not generated, the original expression - for an aspect may need to be analyzed to precent spurious - conformance errors when compared with the expression that is - anakyzed at the end of the current declarative list. - -2019-07-03 Eric Botcazou - - * layout.adb (Layout_Type): Do not set the component size of an - array with a scalar component if the component type is - overaligned. - -2019-07-03 Ed Schonberg - - * inline.adb (Make_Loop_Labels_Unique): New procedure to modify - the source code of subprograms that are inlined by the - front-end, to prevent accidental duplication between loop labels - in the inlined code and the code surrounding the inlined call. - -2019-07-03 Hristian Kirtchev - - * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update - the section on resolving elaboration circularities to eliminate - certain combinations of switches which together do not produce - the desired effect and confuse users. - * gnat_ugn.texi: Regenerate. - -2019-07-03 Arnaud Charlet - - * bindgen.adb (Gen_Main): Disable generation of reference to - Ada_Main_Program_Name for CCG. - * bindusg.adb (Display): Add -G to the command-line usage for - gnatbind. - * opt.ads (Generate_C_Code): Update comment. - * switch-b.adb (Scan_Binder_Switches): Add handling for -G. - -2019-07-03 Arnaud Charlet - - * sem_ch7.adb (Has_Referencer): Do not consider inlined - subprograms when generating C code, which allows us to generate - static inline subprograms. - -2019-07-03 Justin Squirek - - * sem_ch6.adb (Check_Conformance): Add expression checking for - constant modifiers in anonymous access types (in addition to - "non-null" types) so that they are considered "matching" for - subsequent conformance tests. - -2019-07-03 Arnaud Charlet - - * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: - Clarify wording on No_Multiple_Elaboration. - * gnat_rm.texi: Regenerate. - -2019-07-03 Ed Schonberg - - * sem_ch8.adb (Find_Selected_Component): If the prefix is the - current instance of a type or subtype, complete the resolution - of the name by finding the component of the type denoted by the - selector name. - -2019-07-03 Eric Botcazou - - * doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C): - Document that boolean types with convention C now map to C99 bool. - * gnat_rm.texi: Regenerate. - -2019-07-03 Javier Miranda - - * exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup: - removing code that it is now never executed in the CCG compiler - (dead code). - -2019-07-02 Iain Sandoe - - * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for - PPC Darwin. - -2019-07-01 Ed Schonberg - - * sem_ch12.adb (Is_Defaulted): New predicate in - Check_Formal_Package_Intance, to skip the conformance of checks - on parameters of a formal package that are defaulted, - -2019-07-01 Hristian Kirtchev - - * checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb, - sem_prag.adb, sem_spark.adb: Minor reformatting. - -2019-07-01 Ed Schonberg - - * sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix - of attribute to be an attribute reference of a discrete type. - -2019-07-01 Eric Botcazou - - * sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up - handling of Has_Pragma_Inline_Always and deal with - Has_Pragma_No_Inline. - -2019-07-01 Ed Schonberg - - * sem_ch3.adb (Build_Derived_Record_Type): If the parent type is - declared as a subtype of a private type with an inherited - discriminant constraint, its generated full base appears as a - record subtype, so we need to retrieve its oen base type so that - the inherited constraint can be applied to it. - -2019-07-01 Yannick Moy - - * sem_spark.adb: Completely rework the algorithm for ownership - checking, as the rules in SPARK RM have changed a lot. - * sem_spark.ads: Update comments. - -2019-07-01 Dmitriy Anisimkov - - * gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in - the sockaddr_in structure to determine the existence of length field - before the sin_family. - -2019-07-01 Ed Schonberg - - * sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only - applies to entities with run-time addresses, not to types. - -2019-07-01 Piotr Trojanek - - * einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update - references to the SPARK RM after the removal of Rule 7.1.4(5). - -2019-07-01 Piotr Trojanek - - * sysdep.c: Cleanup references to LynuxWorks in docs and - comments. - -2019-07-01 Ed Schonberg - - * checks.adb (Insert_Valid_Check): Do not apply validity check - to variable declared within a protected object that uses the - Lock_Free implementation, to prevent unwarranted constant - folding, because entities within such an object msut be treated - as volatile. - -2019-07-01 Eric Botcazou - - * exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline. - -2019-07-01 Ed Schonberg - - * exp_unst.adb (Visit_Node, Check_Static_Type): Improve the - handling of private and incomplete types whose full view is an - access type, to detect additional uplevel references in dynamic - bounds. This is relevant to N_Free_Statement among others that - manipulate types whose full viww may be an access type. - -2019-07-01 Pat Rogers - - * doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct - size indicated for R as a component of an array. - * gnat_rm.texi: Regenerate. - -2019-07-01 Justin Squirek - - * libgnat/s-win32.ads: Add definition for ULONG, modify - OVERLAPPED type, and add appropriate pragmas. - -2019-07-01 Bob Duff - - * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is - ignored-ghost. - -2019-07-01 Yannick Moy - - * sem_ch4.adb (Operator_Check): Refine error message. - -2019-07-01 Piotr Trojanek - - * libgnat/a-calend.ads: Revert "Global => null" contracts on - non-pure routines. - -2019-07-01 Piotr Trojanek - - * exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments: - componant -> component. - -2019-07-01 Hristian Kirtchev - - * libgnat/g-graphs.adb: Use type Directed_Graph rather than - Instance in various routines. - * libgnat/g-graphs.ads: Change type Instance to Directed_Graph. - Update various routines that mention the type. - -2019-07-01 Hristian Kirtchev - - * libgnat/g-sets.adb: Use type Membership_Set rathern than - Instance in various routines. - * libgnat/g-sets.ads: Change type Instance to Membership_Set. - Update various routines that mention the type. - -2019-07-01 Hristian Kirtchev - - * libgnat/g-lists.adb: Use type Doubly_Linked_List rather than - Instance in various routines. - * libgnat/g-lists.ads: Change type Instance to - Doubly_Linked_List. Update various routines that mention the - type. - -2019-07-01 Hristian Kirtchev - - * libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than - Instance in various routines. - * libgnat/g-dynhta.ads: Change type Instance to - Dynamic_Hash_Table. Update various routines that mention the - type. - -2019-07-01 Hristian Kirtchev - - * exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb, - sem_util.adb, uintp.adb, uintp.ads: Minor reformatting. - -2019-07-01 Javier Miranda - - * exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of - 'Min/'Max on integer, enumeration, fixed point and floating - point types since the CCG backend now provides in file - standard.h routines to support it. - -2019-07-01 Hristian Kirtchev - - * impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95. - * Makefile.rtl, gcc-interface/Make-lang.in: Register unit - GNAT.Graphs. - * libgnat/g-dynhta.adb: Various minor cleanups (use Present - rather than direct comparisons). - (Delete): Reimplement to use Delete_Node. - (Delete_Node): New routine. - (Destroy_Bucket): Invoke the provided destructor. - (Present): New routines. - * libgnat/g-dynhta.ads: Add new generic formal Destroy_Value. - Use better names for the components of iterators. - * libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit. - * libgnat/g-lists.adb: Various minor cleanups (use Present - rather than direct comparisons). - (Delete_Node): Invoke the provided destructor. - (Present): New routine. - * libgnat/g-lists.ads: Add new generic formal Destroy_Element. - Use better names for the components of iterators. - (Present): New routine. - * libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset, - Reset): New routines. - -2019-07-01 Dmitriy Anisimkov - - * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6 - is not defined. - -2019-07-01 Ed Schonberg - - * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value): - Resolve result of call to Get_Simple_Init_Val, which may be a - conversion of a literal. - -2019-07-01 Hristian Kirtchev - - * freeze.adb (Freeze_Expression): Remove the horrible useless - name hiding of N. Insert the freeze nodes generated by the - expression prior to the expression when the nearest enclosing - scope is transient. - -2019-07-01 Pierre-Marie de Rodat - - * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix - formatting issues in the -gnatR section. - * gnat_ugn.texi: Regenerate. - -2019-06-30 Iain Sandoe - - * gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches. - Push -shared-libgcc explicitly, when it is the target default (unless - overidden by the static flag). - When the user has put an instance of shared/static-libgcc do not push - a duplicate of this. - -2019-06-29 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED, - and tweak comment on the assertion about the scopes of Itypes. Do not - skip the regular processing for Itypes that are E_Record_Subtype with - a Cloned_Subtype. Get the Cloned_Subtype for every E_Record_Subtype - if the type is dummy and hasn't got its own freeze node. - : Save again the DECL of the Cloned_Subtype, if any. - : Save again the DECL of the equivalent type. - (Gigi_Equivalent_Type) : New case. - -2019-06-29 Eric Botcazou - - * gcc-interface/utils.c (unchecked_convert): Tweak comment. Only skip - dereferences when padding to have the same size on both sides. Do it - for destination types with self-referential size too. - -2019-06-29 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : If the - type requires strict alignment, then set the RM size to the type size. - Rework handling of alignment and sizes of tagged types in ASIS mode. - (validate_size): Rename local variable and remove special handling for - strict-alignment types. - * gcc-interface/utils.c (finish_record_type): Constify local variables - and use properly typed constants. - -2019-06-29 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for - fields requiring strict alignment, add explicit test on Storage_Unit - for position and size, and mention type alignment for position. - -2019-06-29 Eric Botcazou - - * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on - the main variant of a type, if any. - -2019-06-29 Eric Botcazou - - * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add - missing guard for the presence of TYPE_CANONICAL. - (set_reverse_storage_order_on_array_type): Likewise. - -2019-06-29 Eric Botcazou - - * gcc-interface/gigi.h (make_packable_type): Remove default value. - (value_factor_p): Tweak prototype. - * gcc-interface/decl.c (gnat_to_gnu_entity): Add comment. - (gnat_to_gnu_component_type): Likewise. - (gnat_to_gnu_field): Likewise. Fetch the position of the field earlier - and simplify the condition under which the type is packed. Declare - local variable is_bitfield. Pass 1 as max_align to make_packable_type - if it is set to true. - (copy_and_substitute_in_layout): Pass 0 to make_packable_type. - * gcc-interface/utils.c (make_packable_array_type): New function. - (make_packable_type): Use it to rewrite the type of array field. - (maybe_pad_type): Pass align parameter to make_packable_type. - (create_field_decl): Minor tweaks. - (value_factor_p): Assert that FACTOR is a power of 2 and replace the - modulo computation by a masking operation. - -2019-06-25 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test - in previous change. - * gcc-interface/gigi.h (maybe_character_type): Fix formatting. - (maybe_character_value): Likewise. - -2019-06-24 Jan Hubicka - - * gcc-interface/decl.c (gnat_to_gnu_entity): Check that - type is array or integer prior checking string flag. - * gcc-interface/gigi.h (maybe_character_type): Likewise. - (maybe_character_value): Likewise. - -2019-06-24 Martin Sebor - - * gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute - name. - -2019-06-18 Arnaud Charlet - - PR ada/80590 - * sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation - during normal processing. - -2019-06-17 Arnaud Charlet - - PR ada/80590 - * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two - conditions to avoid a unnecessary exception propagation in the default - case. - -2019-05-28 Eric Botcazou - - * gcc-interface/utils.c (handle_stack_protect_attribute): Move around. - -2019-05-28 Eric Botcazou - - * doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute): - Document additional optional parameters. - * sem_prag.adb (Analyze_Pragma) : Accept - more than one optional parameter. - * gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize - the list of supported pragmas. Simplify the handling of parameters - and add support for more than one optional parameter. - * gcc-interface/utils.c (attr_cold_hot_exclusions): New constant. - (gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten, - used, cold, hot, target and target_clones. - (begin_subprog_body): Do not create the RTL for the subprogram here. - (handle_noicf_attribute): New static function. - (handle_noipa_attribute): Likewise. - (handle_flatten_attribute): Likewise. - (handle_used_attribute): Likewise. - (handle_cold_attribute): Likewise. - (handle_hot_attribute): Likewise. - (handle_target_attribute): Likewise. - (handle_target_clones_attribute): Likewise. - -2019-05-28 Eric Botcazou - - * gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0 - for 'Size too. - (Identifier_to_gnu): Use the actual subtype for a reference to a - packed array in a return statement. - (Attribute_to_gnu) : Do not strip VIEW_CONVERT_EXPRs from - the prefix in every case. - -2019-05-28 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on - Backend_Overflow_Checks_On_Target and rework comments. - -2019-05-28 Eric Botcazou - - * gcc-interface/trans.c (walk_nesting_tree): New static function. - (finalize_nrv): Use it to walk the entire nesting tree. - -2019-05-28 Eric Botcazou - - * gcc-interface/decl.c (gnat_to_gnu_entity) : Remove - obsolete test on Is_For_Access_Subtype. - -2019-05-28 Eric Botcazou - - * gcc-interface/decl.c (components_to_record): Set a name on the type - created for the REP part, if any. - * gcc-interface/utils.c (finish_record_type): Only take the maximum - when merging sizes for a variant part at offset 0. - (merge_sizes): Rename has_rep parameter into max. - -2019-05-28 Eric Botcazou - - * gcc-interface/utils.c (gnat_internal_attribute_table): Add support - for stack_protect attribute. - (handle_stack_protect_attribute): New static function. - -2019-05-28 Eric Botcazou - - * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return - false if the internal builtin uses a variable list. - -2019-05-27 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary - created out of addressability concerns if it's for the _Init parameter - of an initialization procedure. - -2019-05-27 Eric Botcazou - - * gcc-interface/ada-builtin-types.def: New file. - * gcc-interface/ada-builtins.def: Likewise. - * gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro. - (BUILT_IN_UNLIKELY): Likewise. - * gcc-interface/trans.c (independent_iterations_p): Initialize the - auto-vector to 16 elements. - (Call_to_gnu): Remove local variable and change the vector of actual - parameters to an auto-vector. Do not convert actual parameters to - the argument type for front-end built-in functions. Add support for - front-end built-in functions. - (build_noreturn_cond): Use internal instead of built-in function. - * gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def - (install_builtin_function_types): Likewise. - (install_builtin_functions): Include ada-builtins.def first. - -2019-05-27 Eric Botcazou - - * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the - specific case of component types preferably. - -2019-05-27 Eric Botcazou - - * gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks. - (gnat_to_gnu): Do not convert the result if it is a reference to an - unconstrained array used as the prefix of an attribute reference that - requires an lvalue. - -2019-05-27 Eric Botcazou - - * gcc-interface/trans.c (Gigi_Types_Compatible): New predicate. - (Identifier_to_gnu): Use it to assert that the type of the identifier - and that of its entity are compatible for gigi. Rename a couple of - local variables and separate the processing of the result type. - -2019-05-27 Eric Botcazou - - * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when - putting back an intermediate conversion the type of the actuals. - -2019-05-27 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu) : Convert the - count to the unsigned version of its base type before proceeding. - -2019-05-16 Martin Sebor - - * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote - reserved names. - -2019-05-08 Arnaud Charlet - - * standard.ads.h: New file. - -2019-05-07 Rainer Orth - - * gcc-interface/Makefile.in (install-gcc-specs): Use foreach. - Honor DESTDIR. - -2019-04-29 Michael K. Darling - - * gnatvsn.ads: Bump Library_Version to 10. - -2019-04-24 Ramana Radhakrishnan - Bernd Edlinger - Jakub Jelinek - - PR target/89093 - * raise-gcc.c (TARGET_ATTRIBUTE): Define. - (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add - TARGET_ATTRIBUTE. - -2019-04-07 Eric Botcazou - - * libgnat/i-cexten.ads (CFloat_128): New type. - -2019-03-22 Dmitriy Anisimkov - - PR ada/89583 - * libgnat/g-socket.adb (Bind_Socket, Connect_Socket, - Send_Socket): Fix the computation of structure lengths passed to - low level routines. - (Is_IPv6_Address): Fix the number of expected colons. - -2019-03-11 Martin Liska - - * gcc-interface/misc.c (gnat_post_options): Wrap option name in string - format message and fix GNU coding style. - -2019-02-08 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu) : Minor tweak. - * gcc-interface/utils.c (convert): Do not pad when doing an unchecked - conversion here. Use TREE_CONSTANT throughout the function. - (unchecked_convert): Also pad if the source is a CONSTRUCTOR and the - destination is a more aligned array type or a larger aggregate type, - but not between original and packable versions of a type. - -2019-02-08 Eric Botcazou - - * gcc-interface/utils.c (max_size) : Be prepared for an - operand with VOID_TYPE. - -2019-02-08 Eric Botcazou - - * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the - entities of a package renaming another one. - -2019-02-08 Eric Botcazou - - * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on - individual flag_unswitch_loops and flag_tree_loop_vectorize switches - with test on global optimize switch. - (Raise_Error_to_gnu): Likewise. - -2019-02-07 Eric Botcazou - - * libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value. - -2019-02-06 Arnaud Charlet - - * libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads - -2019-01-27 Eric Botcazou - - * repinfo.adb (List_Component_Layout): Remove superfluous space for - zero-sized field. - * gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro. - * gcc-interface/gigi.h (create_extra_subtype): Declare. - * gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise. - (update_n_elem): New function. - (gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes - instead of doing it manually. - : Use update_n_elem to compute the maximum size. Use the - index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE - of the array to the maximum size. - : Create an extra subtype using the index type of the - base array type for self-referential bounds. Use update_n_elem to - compute the maximum size. Set TYPE_ARRAY_MAX_SIZE of the array to the - maximum size. - (gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants. - * gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of - the base type for an extra subtype. - (gnat_type_max_size): Remove obsolete code. - * gcc-interface/trans.c (Attribute_to_gnu): Minor tweak. - (can_be_lower_p): Deal with pathological types. - * gcc-interface/utils.c (create_extra_subtype): New function. - (create_field_decl): Minor tweak. - (max_size) : Compute a better value by using the extra - subtypes on the self-referential bounds. - : Rewrite. Deal with "negative value" in unsigned types. - : Likewise. - * gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds - of the arrays upfront. Swap only if the second length is not constant. - Use comparisons on the original bounds consistently for the null tests. - (build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro. - (build_allocator): Minor tweak. - -2019-01-27 Eric Botcazou - - * gcc-interface/decl.c (array_type_has_nonaliased_component): Return - the same value for every dimension of a multidimensional array type. - -2019-01-26 Eric Botcazou - - * gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the - iteration scheme, if present, throughout the translation. - -2019-01-26 Eric Botcazou - - * gcc-interface/trans.c (gnat_to_gnu) : Use - DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned - by a call to memset if the LHS is a DECL. - -2019-01-26 Eric Botcazou - - * gcc-interface/trans.c (struct loop_info_d): Remove artificial field. - (Loop_Statement_to_gnu): Do not set it. - -2019-01-26 Eric Botcazou - - * gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting. - (Acc_gnat_to_gnu): Likewise. - (Acc_Data_to_gnu): Likewise. - (Acc_Var_to_gnu): Likewise. - (Acc_Reduc_to_gnu): Likewise. - (Acc_Size_List_to_gnu): Likewise. - (Pragma_to_gnu) : Likewise. - ): Likewise. - (find_loop_for): Remove default value for parameters. - * gcc-interface/trans.c (gnat_to_gnu) : Merge into... - ): ...this. - -2019-01-26 Eric Botcazou - - * gcc-interface/decl.c (annotate_value) : Use test on - the sign bit instead of on the sign of the value. - : Turn addition of negative constant into subtraction. - : Add test for degenerate case. - : Simplify. - -2019-01-18 Sebastian Huber - - * s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS. - -2019-01-09 Sandra Loosemore - - PR other/16615 - * exp_ch11.adb: Change "can not" to "cannot". - * sem_ch4.adb: Likewise. - -2019-01-09 Sandra Loosemore - - PR other/16615 - * exp_ch9.adb: Mechanically replace "can not" with "cannot". - * libgnat/s-regpat.ads: Likewise. - * par-ch4.adb: Likewise. - * set_targ.adb: Likewise. - * types.ads: Likewise. - -2019-01-08 Justin Squirek - - Revert: - 2018-07-31 Justin Squirek - - * lib-writ.adb (Write_With_Lines): Modfiy the generation - of dependencies within ali files so that source unit - bodies are properly listed even if said bodies are - missing. Perform legacy behavior in GNATprove mode. - * lib-writ.ads: Modify documentation to reflect current - behavior. - - and: - 2018-09-26 Justin Squirek - - * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add - documentation and an extra conditional check for RCI - units so that generated ali files will list the spec - only instead of a body when a body is not found. - -2019-01-04 Eric Botcazou - - * gnatvsn.ads: Bump copyright year. - -2019-01-01 Jakub Jelinek - - Update copyright years. - - * gnat_ugn.texi: Bump @copying's copyright year. - * gnat_rm.texi: Likewise. + * gnat_ugn.texi: Bump @copying's copyright year. + * gnat_rm.texi: Likewise. -Copyright (C) 2019 Free Software Foundation, Inc. +Copyright (C) 2020 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/ada/ChangeLog-2019 b/gcc/ada/ChangeLog-2019 new file mode 100644 index 00000000000..5e92f1ac2e0 --- /dev/null +++ b/gcc/ada/ChangeLog-2019 @@ -0,0 +1,6716 @@ +2019-12-22 Maciej W. Rozycki + + * gcc-interface/Makefile.in (toolexeclibdir): New variable. + +2019-12-18 Eric Botcazou + + * gcc-interface/trans.c (Pragma_to_gnu) : Push a + diagnostics state for pragma Warnings (Off) before turning off all + the warnings and only pop it for pragma Warnings (On). + +2019-12-18 Justin Squirek + + * sem_ch6.adb (Analyze_Function_Return): Modify handling of + extended return statements to check accessibility of access + discriminants. + (Check_Aggregate_Accessibility): Removed. + (Check_Return_Obj_Accessibility): Added to centralize checking + of return aggregates and subtype indications in the case of an + extended return statement. + +2019-12-18 Arnaud Charlet + + * libgnat/s-regpat.adb (Parse_Literal, Parse_Piece): Ensure + Expr_Flags is always fully initialized. + +2019-12-18 Arnaud Charlet + + * libgnat/s-atopar.ads, libgnat/s-atopex.ads (Atomic_Type): Can + now be marked Atomic. This requires marking the unit Ada 202x. + +2019-12-18 Arnaud Charlet + + * libgnat/a-nbnbin.ads, libgnat/a-nbnbin.adb, + libgnat/a-nbnbre.ads, libgnat/a-nbnbre.adb: Replace + Optional_Big_* types by a simple check and exception raise in + Get_Bignum. + (Set_Bignum): Arg should be 'out' and not 'in out'. + (Invalid_Big_Integer, No_Big_Real): Removed. + (Is_Valid): Now convention Intrinsic. + +2019-12-18 Piotr Trojanek + + * doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_rm/obsolescent_features.rst, + doc/gnat_ugn/gnat_and_program_execution.rst, exp_attr.adb, + exp_ch9.adb, init.c, libgnat/s-valrea.adb, par-ch6.adb, + sem_attr.adb, sem_ch4.adb, sem_util.ads: Fix trivial typos. + * gnat_rm.texi, gnat_ugn.texi: Regenerate. + +2019-12-18 Gary Dismukes + + * sem_res.adb (Resolve_Type_Conversion): Add handling for access + types with designated operand and target types that are + referenced in places that have a limited view of an interface + type by retrieving the nonlimited view when it exists. Add ??? + comments related to missing limited_with_clause handling for + Target (in the non-access case). + +2019-12-18 Ed Schonberg + + * par-ch12.adb (P_Formal_Derived_Type_Definition): In Ada_2020 + the keyword WITH can indicate the start of aspect specifications + and not a private type extension. + * sem_ch12.adb (Analyze_Formal_Type): Indicate that it is a + first subtype. + (Instantiate_Type): New procedure + Check_Shared_Variable_Control_Aspects to verify matching rules + between formal and actual types. Note that an array type with + aspect Atomic_Components is considered compatible with an array + type whose component type is Atomic, even though the array types + do not carry the same aspect. + * sem_ch13.adb (Analyze_One_Aspect): Allow shared variable + control aspects to appear on formal types. + (Rep_Item_Too_Early): Exclude aspects on formal types. + * sem_prag.adb (Mark_Type): Handle properly pragmas that come + from aspects on formal types. + (Analyze_Pragma, case Atomic_Components): Handle formal types. + +2019-12-18 Eric Botcazou + + * cstand.adb (Create_Standard): Remove duplicate line and + adjust. + +2019-12-18 Javier Miranda + + * debug.adb: Document -gnatd_K as a reserved switch for the + detection of known problem issues of previous releases. + +2019-12-18 Ghjuvan Lacambre + + * par-ch13.adb: Check if declarations allow aspect + specifications. + +2019-12-18 Piotr Trojanek + + * einfo.ads (Is_Ghost_Entity): Fix typo in comment. + +2019-12-18 Eric Botcazou + + * layout.adb (Layout_Type): In the case of composite types, do + not copy the Esize onto the RM_Size if the latter is not set. + * gcc-interface/decl.c (gnat_to_gnu_entity) : + Also cap the alignment if an Object_Size clause has been + specified. Pass VAR_DECL in the call to validate_size for the + Esize of a type. + (validate_size): Be prepared to give an error on an Object_Size + clause. + +2019-12-18 Eric Botcazou + + * einfo.ads (Handling of Type'Size Value): Add references to the + introduction of Object_Size in Ada 2020. + * sem_eval.adb (Subtypes_Statically_Match): Likewise. + +2019-12-18 Bob Duff + + * sem_ch3.adb (Derive_Subprogram): Do not set the + Requires_Overriding flag in the above-mentioned case. + +2019-12-18 Bob Duff + + * sem_ch8.adb (Note_Redundant_Use): It was already checking for + a use clause in the visible part of the child. Add an additional + check for a use clause in the context clause of the child. + +2019-12-16 Bob Duff + + * errout.adb (Handle_Serious_Error): Disable the above-mentioned + warnings. + +2019-12-16 Bob Duff + + * errout.adb, errout.ads: Improve comments. + +2019-12-16 Bob Duff + + * sem_util.ads: Minor comment fix. + +2019-12-16 Bob Duff + + * errout.ads, errout.adb (Is_Size_Too_Small_Message): Check for + "size for" instead of "size for& too small, minimum allowed is + ^". + +2019-12-16 Eric Botcazou + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Set only + the RM_Size on the subtype built for a Component_Size clause + when the component type is a biased integer type. + +2019-12-16 Arnaud Charlet + + * socket.c: Shutdown warning. + +2019-12-16 Arnaud Charlet + + * libgnarl/s-tataat.ads (Deallocator): Mark as Favor_Top_Level. + +2019-12-16 Arnaud Charlet + + * libgnat/s-aotase.adb, libgnat/s-aotase.ads, + libgnat/s-atoope.ads, libgnat/s-atopar.adb, + libgnat/s-atopar.ads, libgnat/s-atopex.adb, + libgnat/s-atopex.ads: New files. + * libgnat/s-atopri.ads: Add new intrinsics. + * Makefile.rtl: Add new runtime files. + * impunit.adb: Add new units to Ada 2020 list. + +2019-12-16 Eric Botcazou + + * freeze.adb (Check_Strict_Alignment): Remove new check on + Has_Aliased_Components for array types. + +2019-12-16 Ed Schonberg + + * sem_ch4.adb (Try_Container_Indexing): In the case of a derived + container type, use the base type to look for candidate indexing + operations, because the object may be a constrained subtype or + itype with no explicit declaration. Candidate indexing + operations are found in the same scope and list of declarations + as the declaration of the base type. + +2019-12-16 Ed Schonberg + + * scng.adb (Scan): In Ada2020, a left-bracket indicates the + start of an homogenous aggregate. + * par-ch4.adb (P_Reduction_Attribute_Reference): New procedure. + (P_Aggregate): Recognize Ada2020 bracket-delimited aggregates. + (P_Primary): Ditto. + * par-util.adb (Comma_Present): Return false on a right bracket + in Ada2020, indicating the end of an aggregate. + * snames.ads-tmpl: Introduce Name_Reduce and Attribute Reduce. + * sinfo.ads, sinfo.adb (Is_Homogeneous_Aggregate): New flag on + aggregates, to designate an Ada2020 array or container aggregate + that is bracket-delimited in the source. + * sem_attr.adb (Analyze_Attribute): For attribute Reduce, verify + that two arguments are present, and verify that the prefix is a + stream or an object that is iterable (array or contrainer). + (Resolve_Attribute): For attribute Reduce, resolve initial value + with the type of the context. Type-checking of element type of + prefix is performed after expansion. + * exp_attr.adb (Expand_N_Attribute_Reference): For attribute + Reduce, expand into a loop: a) If prefix is an aggregate with a + single iterated component association, use its iterator + specification to construct a loop, b) If prefix is a name, build + a loop using an element iterator loop. + * scans.ads: Add brackets tokens. + +2019-12-16 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Adjust calls to + validate_size. + (gnat_to_gnu_component_type): Likewise. + (gnat_to_gnu_field): Likewise and pass string for error messages. + (components_need_strict_alignment): Remove test on Is_Aliased and + add test for the independence of the component. + (validate_size): Add S1 and S2 string parameters and use them to + give better error messages for fields. Tweak a couple of messages. + * einfo.ads (Has_Independent_Components): Document more cases. + (Is_Independent): Likewise. + (Strict_Alignment): Document new semantics. + * exp_ch9.adb (Install_Private_Data_Declarations): Also set the + Is_Independent flag along with Is_Aliased on the renaming + entity. + * freeze.adb (Size_Known): Remove always-false test and add test + for the strict-alignment on the record type. Remove redundant + tests and add test for the strict-alignment on the component + type. + (Check_Strict_Alignment): Set the flag if the type is by-ref and + remove now redundant conditions. Set the flag on an array type + if it has aliased components. In the record type case, do not + set type for C_Pass_By_Copy convention. + (Freeze_Array_Type): Move code checking for conflicts between + representation aspects and clauses to before specific handling + of packed array types. Give a warnind instead of an error for a + conflict with pragma Pack. Do not test Has_Pragma_Pack for the + specific handling of packed array types. + (Freeze_Record_Type): Move error checking of representation + clause to... + (Freeze_Entity): ...here after Check_Strict_Alignment is called. + * sem_aggr.adb (Array_Aggr_Subtype): Also set the Is_Independent + flag along with Is_Aliased on the Itype. + * sem_ch13.adb (Check_Record_Representation_Clause): Do not set + the RM size for a strict-alignment type. + * sem_ch3.adb (Add_Interface_Tag_Components): Also set the + Is_Independent flag along with Is_Aliased on the tag. + (Add_Interface_Tag_Components): Likewise on the offset. + (Analyze_Component_Declaration): Likewise on the component. + (Analyze_Object_Declaration): Likewise on the object. + (Constrain_Array): Likewise on the array. + (Record_Type_Declaration: Likewise on the tag. + (Array_Type_Declaration): Also set the + Has_Independent_Components flag along with + Has_Aliased_Components on the array. + (Copy_Array_Base_Type_Attributes): Copy + Has_Independent_Components. + (Copy_Array_Subtype_Attributes): Copy Is_Atomic, Is_Independent + and Is_Volatile_Full_Access. + (Analyze_Iterator_Specification): Set Is_Independent on the loop + variable according to Independent_Components on the array. + * sem_ch5.adb: Likewise. + * sem_ch6.adb (Process_Formals): Also set the Is_Independent + flag along with Is_Aliased on the formal. + +2019-12-16 Eric Botcazou + + * sem_ch8.adb (Analyze_Object_Renaming): Set Atomic, Independent + and Volatile_Full_Access aspects on the entity of the renaming + the same way as the Volatile aspect is set. + * sem_util.ads (Is_Atomic_Object_Entity): Move declaration to... + (Is_Independent_Object): New function. + (Is_Volatile_Full_Access_Object): Likewise. + * sem_util.adb (Is_Atomic_Object_Entity): ...here. + (Prefix_Has_Atomic_Components): Minor tweak. + (Is_Atomic_Object): Test Is_Atomic on the Etype uniformly. + (Is_Atomic_Or_VFA_Object): Call Is_Volatile_Full_Access_Object. + (Is_Independent_Object): New predicate. + (Is_Subcomponent_Of_Atomic_Object): Remove redundant test. + (Is_Volatile_Full_Access_Object): New predicate. + (Is_Volatile_Prefix): Rename into... + (Prefix_Has_Volatile_Components): ... and call + Is_Volatile_Object. + (Object_Has_Volatile_Components): Delete. + (Is_Volatile_Object): Simplify. + * gcc-interface/trans.c (node_is_volatile_full_access): Adjust + comment. + +2019-12-16 Bob Duff + + * par.adb: Add Scopes function to do range checking on the scope + stack. Call Scopes all over the parser. Add + SIS_Aspect_Import_Seen flag. + * par-ch6.adb (P_Subprogram): Initialize SIS_Aspect_Import_Seen + to False at the start, and check it at the end. + * par-ch13.adb (Get_Aspect_Specifications): Set + SIS_Aspect_Import_Seen to True when appropriate. + * par-ch10.adb, par-ch12.adb, par-ch2.adb, par-ch3.adb, + par-ch5.adb, par-ch7.adb, par-ch9.adb, par-endh.adb, + par-util.adb: Call Scopes. + +2019-12-16 Eric Botcazou + + * sem_prag.adb (Atomic_Components): Remove local variable and + fix consistency issues. Call Component_Type on the Etype of E. + (Independent_Components): Remove local variable. + * sem_util.adb (Is_Subcomponent_Of_Atomic_Object): Properly deal + with prefixes that are access values. + * gcc-interface/trans.c (atomic_acces_t): New enumeral type. + (node_is_atomic) : Test the prefix. + (node_has_volatile_full_access): Rename into... + (node_is_volatile_full_access): ...this. + (node_is_component): New predicare. + (gnat_strip_type_conversion): Delete. + (outer_atomic_access_required_p): Likewise. + (atomic_access_required_p): Rename into... + (get_atomic_access): ...this. Implement the 3 different semantics + of Atomic and Volatile_Full_Access. + (simple_atomic_access_required_p): New predicate. + (Call_to_gnu): Remove outer_atomic_access parameter and change the + type of atomic_access parameter to atomic_acces_t. Replace call to + atomic_access_required_p with simple_atomic_access_required_p for + the in direction and call get_atomic_access for the out direction + instead of [outer_]atomic_access_required_p. + (lhs_or_actual_p): Constify local variables. + (present_in_lhs_or_actual_p): Likewise. + (gnat_to_gnu) : Replace call to atomic_access_required_p + with simple_atomic_access_required_p. + : Likewise. + : Likewise. + : Likewise. + : Call get_atomic_access for the name instead + of [outer_]atomic_access_required_p. Adjust call to Call_to_gnu. + : Adjust call to Call_to_gnu. + (get_controlling_type): Fix typo in comment. + +2019-12-16 Eric Botcazou + + * fe.h (Ada_Version_Type): New typedef. + (Ada_Version): Declare. + * opt.ads (Ada_Version_Type): Add Convention C and WARNING line. + (Ada_Version): Add WARNING line. + (Exception_Mechanism_Type): Likewise. + +2019-12-16 Gary Dismukes + + * checks.adb, sem_util.adb: Minor reformatting and U.S. spelling + adjustment. + +2019-12-16 Bob Duff + + * sem_ch10.adb (Analyze_Subunit): Give an error if the subunit + is not a proper body. This hides the confusing "duplicate body" + message that was previously given. + +2019-12-16 Eric Botcazou + + * exp_ch8.adb (Expand_N_Object_Renaming_Declaration): Document + third special case of renamings requiring special handling. + (Evaluation_Required): Return true for an atomic or VFA prefix. + +2019-12-16 Ed Schonberg + + * checks.adb (Apply_Float_Conversion_Check): Use node of type + conversion and not its parent, when inserting the declaration + for the temporary that hold the result of the conversion. + Previously the declaration was inserted above the parent of the + conversion, apparently as a small optimization for the + subsequent traversal in Insert_Actions. Unfortunately a similar + optimization takes place in Insert_Actions, assuming that the + insertion point must be above the expression that creates the + actions to insert. This is not correct in the presence of + conditional expressions (i.e. since Ada2012), where the + insertion must be in the list of actions attached to the current + alternative. + +2019-12-16 Bob Duff + + * sem_attr.adb (Analyze_Attribute): Use Known_RM_Size. But we + still need Size_Known_At_Compile_Time, because when the size + really is known, sometimes only one or the other of these is + True. + +2019-12-16 Eric Botcazou + + * sem_util.adb (Is_Atomic_Or_VFA_Object): Also return true for + components whose type is Volatile_Full_Access or which are + subject to the aspect/pragma individually. + * sem_util.ads (Is_Atomic_Object_Entity): Small comment fix. + +2019-12-16 Yannick Moy + + * exp_ch6.adb: Fix comment. + * sem_res.adb (Resolve_Call): Do not check No_Recursion + restriction or indirectly No_Secondary_Stack restriction, when + inside an ignored ghost subprogram. + +2019-12-16 Arnaud Charlet + + * impunit.adb: Add a-nbnbin, a-nbnbre, a-nubinu to Ada 2020 + units. + * Makefile.rtl: Enable new file. + * libgnat/a-nbnbin.adb, libgnat/a-nbnbin.ads, + libgnat/a-nbnbre.adb, libgnat/a-nbnbre.ads, + libgnat/a-nubinu.ads: New files. Provide default standalone + implementation of Ada.Numerics.Big_Numbers.Big_* based on + System.Generic_Bignum. + * libgnat/a-nbnbin__gmp.adb: Alternate implementation of + Ada.Numerics.Big_Numbers.Big_Integers based on GMP. Not enabled + for now. + * libgnat/s-bignum.ads, libgnat/s-bignum.adb: Now a simple + wrapper on top of s-genbig.ads. + * libgnat/s-genbig.ads, libgnat/s-genbig.adb: New files, making + s-bignum generic for reuse in Ada.Numerics.Big_Numbers. + +2019-12-16 Bob Duff + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Correct documentation of -gnatw_C switch + * gnat_ugn.texi: Regenerate. + +2019-12-16 Joel Brobecker + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst + (_Switches_for_gnatbind): Reword the section explaining the + impact of -minimal on debugging. + * gnat_ugn.texi: Regenerate. + +2019-12-16 Gary Dismukes + + * libgnat/g-exptty.adb, libgnat/g-exptty.ads: Typo fixes and + minor reformatting. + +2019-12-16 Eric Botcazou + + * exp_ch6.adb (Requires_Atomic_Or_Volatile_Copy): New predicate. + (Expand_Actuals): Use it to decide whether to add call by copy + code as per the RM C.6(19) clause. + * fe.h (Is_Atomic_Object): Remove. + (Is_Volatile_Object): Likewise. + * sem_util.ads (Is_Atomic_Object): Remove WARNING note. + (Is_Volatile_Object): Likewise. + * gcc-interface/trans.c (atomic_or_volatile_copy_required_p): Delete. + (Call_to_gnu): Do not implement the RM C.6(19) clause. + +2019-12-16 Ghjuvan Lacambre + + * sem_ch12.adb (Validate_Access_Subprogram_Instance): Add + Can_Never_Be_Null checks. + +2019-12-16 Eric Botcazou + + * doc/gnat_rm/implementation_defined_pragmas.rst (VFA): Document + extension of the no-aliasing rule to any subcomponent. + * freeze.adb (Freeze_Object_Declaration): Small comment tweak. + (Freeze_Record_Type): Do not deal with delayed aspect + specifications for components here but... + (Freeze_Entity): ...here instead. + * sem_ch12.adb (Instantiate_Object): Improve wording of errors + given for legality rules in C.6(12) and implement the new rule + in C.6(13). + * sem_res.adb (Resolve_Actuals): Likewise. + * sem_prag.adb (Check_Atomic_VFA): New procedure implementing + the new legality rules in C.6(13). + (Process_Atomic_Independent_Shared_Volatile): Call + Check_Atomic_VFA to check the legality rules. Factor out code + marking types into... + (Mark_Type): ...this new procedure. + (Check_VFA_Conflicts): Do not check the legality rules here. + (Pragma_Atomic_Components): Call Check_Atomic_VFA on component + type. + * sem_util.ads (Is_Subcomponent_Of_Atomic_Object): Declare. + * sem_util.adb (Is_Subcomponent_Of_Atomic_Object): New + predicate. + * gnat_rm.texi: Regenerate. + +2019-12-13 Gary Dismukes + + * doc/gnat_rm/implementation_defined_pragmas.rst: Minor + rewording of one sentence. + * gnat_rm.texi: Regenerate. + +2019-12-13 Arnaud Charlet + + * exp_unst.adb (Unnest_Subprogram): Account for trees produced + by Annex E constructs. + +2019-12-13 Ghjuvan Lacambre + + * doc/gnat_rm/implementation_defined_pragmas.rst: Update + Initialize_Scalars documentation. + * gnat_rm.texi: Regenerate. + +2019-12-13 Javier Miranda + + * sem_ch13.adb (Analyze_Aspect_Specification): Processing a + precondition, if the expression is of the form A and then B, do + not generate separate Pre/Post aspects for the separate clases + when we are processing a generic unit. Required to avoid + reporting spurious visibility errors on the instantiations. + +2019-12-13 Eric Botcazou + + * sem_res.adb (Resolve_Actuals): Give canonical error for + illegal case of atomic/volatile parameter also if the formal is + aliased. + +2019-12-13 Eric Botcazou + + * sem_util.ads (Is_Atomic_Object): Mention relevant RM clauses. + * sem_util.adb (Is_Atomic_Object): For an indexed component, + only look at the Has_Atomic_Components aspect of the prefix and + do not recurse on it; for a selected component, do not look at + the prefix. + (Is_Atomic_Or_VFA_Object): Minor tweak. + +2019-12-13 Arnaud Charlet + + * libgnat/a-calfor.ads, libgnat/a-calfor.adb (Split_Duration): + New procedure. + (Split, Image): Use Split_Duration. Update Image spec. + +2019-12-13 Javier Miranda + + * exp_unst.adb (Unnest_Subprogram): Generate an extra temporary + to facilitate the C backend processing dereferences. + +2019-12-13 Javier Miranda + + * sem_prag.adb (Analyze_Pragma): Propagate the + Linker_Section_Attribute to the ultimate alias of the subprogram + to facilitate the C backend processing this attribute. + +2019-12-13 Yannick Moy + + * sem_util.adb (Original_Aspect_Pragma_Name): Go through + Original_Node for pragma. + +2019-12-13 Piotr Trojanek + + * exp_aggr.adb, exp_unst.adb: Minor fix typo in comment. + +2019-12-13 Steve Baird + + * sem_res.adb (Resolve, Valid_Conversion): Add Base_Type call + when testing whether a type is a general access type. + +2019-12-13 Javier Miranda + + * exp_ch4.adb (Expand_N_Unchecked_Type_Conversion): Generate an + extra temporary for cases unsupported by the C backend. + +2019-12-13 Steve Baird + + * einfo.ads: Correct comment for Derived_Type_Link to reflect + that fact that this function is now used for more than just + generation of warnings. + * sem_ch3.adb (Build_Derived_Type): Do not call + Set_Derived_Type_Link if the derived type and the parent type + are in different compilation units. Such a derivation cannot be + a problematic "early" derivation (identifying these is what the + Derived_Type_Link attribute is used for) and we don't like + inter-unit references that go in the opposite direction of + semantic dependencies. + * sem_ch13.adb (Is_Type_Related_Rep_Item): A new function, + analogous to the existing function Is_Operational_Item. + (Rep_Item_Too_Late): Generate a hard error (with same text as + the warning that was previously being generated) if the + AI12-0109 legality rule is violated. + +2019-12-13 Eric Botcazou + + * doc/gnat_rm/implementation_defined_pragmas.rst: Minor tweak to + Volatile_Full_Access wording in GNAT RM. + * gnat_rm.texi: Regenerate. + +2019-12-13 Gary Dismukes + + * exp_attr.adb (Expand_N_Attribute_Reference, + Attribute_Address): Suppress generation of a call to + Base_Address in the case where the Address attribute is being + used to initialize a corresponding component of an activation + record. + (Is_Unnested_Component_Init): New function to determine whether + an attribute reference for Address is used to initialized a + component of an activation record object that corresponds to the + object denoted by the prefix of the attribute (an assignment + used in support of unnesting for back ends like LLVM). + +2019-12-13 Ed Schonberg + + * sem_res.adb (Resolve): IF an entity reference is overloaded + because its type has an Implicit_Dereference aspect, we must + examine the discriminants of the type to determine whether an + explicit dereference must be inserted for use in code + generation. Previously this was done for other expressions but + not for entity references by themselves. This was sufficient to + handle uses of the aspect in container handling and iteration, + but not more generally. + +2019-12-13 Javier Miranda + + * exp_disp.ads (Expand_Interface_Thunk): Adding one formal (the + interface type). + * exp_disp.adb (Expand_Interface_Thunk): Using the added formal + to ensure the correct profile of the thunk generated for + predefined primitives; in addition, the added formal is also + used to perform a check that ensures that the controlling type + of the thunk is the one expected by the GCC backend. + (Make_Secondary_DT, Register_Primitive): Adding the new formal + to the calls to Expand_Interface_Thunk. + * exp_ch6.adb (Register_Predefined_DT_Entry): Adding the new + formal to the call to Expand_Interface_Thunk. + * exp_intr.adb (Expand_Unc_Deallocation): When deallocating a + controlled type and the call to unchecked deallocation is + performed with a pointer to one of the convered interface types, + displace the pointer to the object to reference the base of the + object to deallocate its memory. + * gcc-interface/trans.c (maybe_make_gnu_thunk): Assert that the + controlling type of the thunk is an interface type. + +2019-12-13 Bob Duff + + * exp_attr.adb (Is_Available): Remove this function, and replace + all calls with RTE_Available. RTE_Available will return True if + "not Configurable_Run_Time_Mode". Remove the "???" comment. + +2019-12-13 Ed Schonberg + + * sem_ch7.adb (Analyze_Package_Body_Helper): Do not call + Declare_Inherited_Private_Subprograms on s child body: the + required operations have already been created when analyzing the + corresponding package declaration. This prevents a redeclaration + of inehrited operation, and a crash when inserting the new + operation in the current scope. + +2019-12-13 Yannick Moy + + * sem_prag.adb (Analyze_Depends_In_Decl_Part, + Analyze_Global_In_Decl_Part, + Analyze_Refined_Depends_In_Decl_Part, + Analyze_Refined_Global_In_Decl_Part, Check_Missing_Part_Of): + Skip redundant checking involving visibility inside + instantiations. + +2019-12-13 Yannick Moy + + * sem_res.adb (Resolve_Call): Prevent inlining inside while loop + conditions. + * sem_util.adb, sem_util.ads (In_While_Loop_Condition): New + query function. + +2019-12-13 Bob Duff + + * impunit.ads: Add Ada_202X_Unit. + * impunit.adb: Add a table Non_Imp_File_Names_2X analogous to + the other tables. Add code to search this table. + * opt.ads: Add Warn_On_Ada_202X_Compatibility flag, currently + always True. + * sem_ch10.adb (Analyze_With_Clause): Give a warning if an Ada + 2020 unit is with-ed when Ada_Version < Ada_2020. Change 'if' + to 'case': Full coverage rules rule. + +2019-12-13 Bob Duff + + * rtsfind.ads: Minor comment fix. + +2019-12-13 Gary Dismukes + + * sem_util.adb (Scope_Within): For the case of checking for a + task type procedure, check the Implementation_Base_Type of Curr. + (Scope_Within_Or_Same): For the case of checking for a task type + procedure, check the Implementation_Base_Type of Curr. + +2019-12-13 Arnaud Charlet + + * impunit.adb (Non_Imp_File_Names_12): Add + Ada.Containers.Vectors.Generic_Parallel_Sorting. + +2019-12-13 Justin Squirek + + * sem_res.adb (Resolve_Allocator): Add calls to + Check_Cond_Expr_Accessibility when a conditional expression is + found. + (Check_Allocator_Discrim_Accessibility_Exprs): Created to + recursively traverse a potentially compound conditional + expression and perform accessibility checks for each + alternative. + * sem_util.adb (Dynamic_Accessibility_Level): Avoid use of + original node of the expression in question so we can handle + dynamic accessibility in the limited case of a constant folded + conditional expression. + +2019-12-13 Steve Baird + + * exp_ch4.adb (Expand_N_Op_Eq.Is_Equality): Move this function + from within Expand_N_Op_Eq.Find_Equality out to immediately + within Expand_N_Op_Eq in order to give it greater visibility. + Add a new Typ parameter (defaulted to Empty) which, if + non-empty, means the function will return False in the case of + an equality op for some other type. + * (Expand_N_Op_Eq.User_Defined_Primitive_Equality_Op): A new + function. Given an untagged record type, finds the corresponding + user-defined primitive equality op (if any). May return Empty. + Ignores visibility. + * (Expand_N_Op): For Ada2012 or later, check for presence of a + user-defined primitive equality op before falling back on the + usual predefined component-by-component comparison. If found, + then call the user-defined op instead. + +2019-12-13 Justin Squirek + + * sem_ch6.adb (Check_Overriding_Indicator): Modify condition to + take into account the modification of the Is_Hidden flag within + generic instances. + (Verify_Overriding_Indicator): Add an exception for controlled + primitives within an instance. + +2019-12-13 Ed Schonberg + + * sinfo.ads, sinfo.adb (Aspect_On_Partial_View, + Set_Aspect_On_Partial_View): New flag for use by SPARK, to + indicate whether an aspect that appears on a type declaration + applies to the partial view of that type. + * sem_ch13.adb (Analyze_Aspect_Specification): Set new flag + appropriately. + +2019-12-12 Ed Schonberg + + * sem_ch13.adb (Same_Reprewentation): if the actual in a call is + a generic actual type, use its bsae type to determine whether a + change of representastion may be necessary for proper parameter + passing. + +2019-12-12 Ed Schonberg + + * sem_type.adb (Find_Unique_Type): A call to the universal + access equality operator requires one operand to be a universal + access, and the other to be an access type. There is no + requirement, as previously implied by this routine, that + pool-specific access types were illegal in this context. + +2019-12-12 Steve Baird + + * sem_ch6.adb + (New_Overloaded_Entity.Check_Conforming_Paramters): Add new + Conformance_Type parameter. With the value of + Subtype_Conformant, the behavior of Check_Conforming_Parameters + is unchanged. The call in Matching_Entry_Or_Subprogram to + instead passes in Type_Conformant. This corresponds to the use + of "type conformant" in Ada RM 9.4(11.4/3). + (New_Overloaded_Entity.Has_Matching_Entry_Or_Subprogram): Add + new Normalized_First_Parameter_Type function to help in ignoring + the distinction between protected and access-to-protected first + parameters when checking prefixed-view profile matching. Replace + computations of the type of the first parameter with calls to + this function as appropriate. + +2019-12-12 Ed Schonberg + + * sem_ch5.adb: (Analyze_Iterator_Specification): If the + iteration is over a slice, complete the resolution of its + bounds, which may be aebitrary expressions. The previous + pre-analysis may have created itypes for the slice but has not + performed the expansion that for example may introduce actions + that specify explicit dereferences and run-time checks. + +2019-12-12 Ed Schonberg + + * sem_ch8.adb: Improve error message for dispatching subprogram + formals. + +2019-12-12 Gary Dismukes + + * exp_ch9.adb (Build_Protected_Entry): Set the Scope of the new + block to be the entity of the procedure created for the entry. + +2019-12-12 Steve Baird + + * sem_ch10.adb (Install_With_Clause): Check for the case of a + circular dependency involving a predefined (or GNAT-defined) + unit and handle that case by generating an appropropriate error + message. + +2019-12-12 Gary Dismukes + + * sem_ch4.adb, sem_res.adb: Minor reformatting. + +2019-12-12 Justin Squirek + + * sem_ch4.adb (Analyze_One_Call): Add condition to check for + incorrectly resolved hidden controlled primitives. + +2019-12-12 Ed Schonberg + + * sem_res.adb: Fix processing of standard predefined operators. + +2019-12-12 Piotr Trojanek + + * libgnarl/a-dispat.ads (Yield): Update Global contract. + +2019-12-12 Piotr Trojanek + + * libgnat/g-altive.ads: Fix typo in comment. + * bindo-graphs.adb: Fix repeated words in comment. + * exp_ch4.adb: Likewise. + * exp_ch5.adb: Likewise. + * exp_ch7.adb: Likewise. + * exp_pakd.adb: Likewise. + * exp_unst.adb: Likewise. + * exp_util.adb: Likewise. + * freeze.adb: Likewise. + * inline.adb: Likewise. + * layout.adb: Likewise. + * sem_ch12.adb: Likewise. + * sem_ch13.adb: Likewise. + * sem_ch4.adb: Likewise. + * sem_ch9.adb: Likewise. + * sem_elab.adb: Likewise. + * doc/gnat_ugn/gnat_and_program_execution.rst: Fix repeated + words in user documentation. + * gnat_ugn.texi: Regenerate. + +2019-12-12 Eric Botcazou + + * exp_attr.adb (Expand_Size_Attribute): Look directly at the + prefix to detect the bit-packed slices. Apply the checks last + in case the attribute needs to be processed by the back-end. + * exp_ch4.adb (Expand_N_Slice): Do not create a temporary for + a prefix of the Size attribute. + +2019-12-12 Steve Baird + + * sem_ch12.adb + (Instantiate_Type.Validate_Derived_Type_Instance): Implement the + legality check of AI12-0036 + +2019-12-12 Ed Schonberg + + * sem_ch10.adb (Analyze_Subunit): Fix spurious visibility error + on subunit with optimization. + +2019-12-12 Arnaud Charlet + + * raise-gcc.c (__gnat_personality_v0): Define for SEH. + +2019-12-12 Gary Dismukes + + * exp_ch9.adb (Build_Protected_Entry): Analyze the block created + to hold the declarations and statements of the protected entry + body right after it's created, and then call Reset_Scopes_To on + that block to reset the Scope of nested entities to the block + scope. + (Reset_Scope): Add handling for N_Freeze_Entity nodes, calling + Reset_Scopes recursively on the Actions of such nodes. Also, for + subprogram bodies that are encountered that might not have a + separate declaration (such as type init procedures), reset the + Scope of the subprogram's entity. + +2019-12-12 Justin Squirek + + * sem_attr.adb (Analyze_Attribute): Add error message for + invalid usage of Attribute_Result. + +2019-12-12 Bob Duff + + * sem_attr.adb (Eval_Attribute): Never mark T'Descriptor_Size as + static, even if T is a static subtype, because otherwise we will + request the value of the attribute, which will crash because we + have not evaluated it. + +2019-12-12 Ed Schonberg + + * exp_ch5.adb (Expand_N_Assognment_Statement): Extend the + processing involving private types with unknown discriminants to + handle the case where the full view of the type is an + unconstrained array type. + +2019-12-12 Bob Duff + + * sem_ch4.adb (Transform_Object_Operation): Deal properly with + prefix notation in instances. + +2019-12-12 Claire Dross + + * libgnat/a-cofove.adb, libgnat/a-cfinve.adb (Find_Index): Use + Extended_Index for call to Last. + +2019-12-12 Gary Dismukes + + * sem_ch3.adb, sem_util.adb: Minor reformatting. + +2019-12-12 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Update gnatmetric + documentation for average lengths + +2019-12-12 Ed Schonberg + + * sem_ch3.adb (Constrain_Access): Remove obsolete comments and + warning concerning component types of an access type whose + designated type is a constrained record type. (Such constraints + were previously ignored). Set scope of itype for component to + the scope of the enclosing record. + * sem_ch4.adb: Remove call to Set_Ekind. + * sem_util.adb (Build_Actual_Subtype_Of_Component): Handle + components whose type is an access to a constrained + discriminant, where the constraints may be given by the + discriminants of the enclosing type. New subprogram + Build_Access_Record_Constraint. + +2019-12-12 Justin Squirek + + * exp_ch6.adb (Expand_Call_Helper): Added null case for + 'Loop_Entry, 'Old, and 'Result when calculating whether to + create extra accessibility parameters. + * sem_util.adb (Dynamic_Accessibility_Level): Added null case + for 'Loop_Entry, 'Old, and 'Result when calculating + accessibility level based on access-valued attributes. Also + added special handling for uses of 'Loop_Entry when used in its + indexed component form. + +2019-12-12 Arnaud Charlet + + * raise-gcc.c: Remove references to VMS + +2019-12-12 Eric Botcazou + + * atree.ads, comperr.ads, debug.ads, einfo.ads, elists.ads, + err_vars.ads, errout.ads, exp_ch11.ads, exp_code.ads, + exp_dbug.ads, exp_tss.ads, exp_util.ads, lib.ads, namet.ads, + nlists.ads, opt.ads, repinfo.ads, restrict.ads, scos.ads, + sem_aggr.ads, sem_aux.ads, sem_eval.ads, sem_util.ads, + sinfo.ads, sinput.ads, stringt.ads, targparm.ads, types.ads, + urealp.ads warnsw.ads: Add WARNING line(s) in commentary. + * atree.h, elists.h, namet.h, nlists.h, repinfo.h, scos.h, + stringt.h, types.h, uintp.h, urealp.h: Tidy up. + * fe.h: Likewise. Document WARNING mark. + +2019-12-12 Dmitriy Anisimkov + + * libgnat/g-comlin.ads (Get_Argument): New routine similar to + original Get_Argument but with one more out parameter + End_Of_Arguments. + (Get_Arguments): Comment improved. + * libgnat/g-comlin.adb (Get_Argument): Implementation taken from + original Get_Argument and improved. + (Get_Argument): Calls new routine Get_Argument with additional + parameter. + +2019-12-03 Eric Botcazou + + * gcc-interface/utils.c (potential_alignment_gap): Delete. + (rest_of_record_type_compilation): Do not call above function. Use + the alignment of the field instead of that of its type, if need be. + When the original field has variable size, always lower the alignment + of the pointer type. Reset the bit-field status of the new field if + it does not encode a bit-field. + +2019-12-03 Eric Botcazou + + * gcc-interface/utils.c (fold_convert_size): New function. + (fold_bit_position): Invoke it to do further folding. + +2019-12-03 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_subprog_type): With the Copy-In/ + Copy-Out mechanism, do not promote the mode of the return type to an + integral mode if it contains a field on a non-integral type and even + demote it for 64-bit targets. + +2019-11-25 Eric Botcazou + + PR ada/92362 + * gcc-interface/trans.c (gnat_to_gnu) : + Use a temporary instead of clobbering the result with a freeze node. + +2019-11-25 Eric Botcazou + + PR ada/92575 + * expect.c (__gnat_expect_poll [VMS, HPUX]): Fix typo. + +2019-11-06 Eric Botcazou + Alexandre Oliva + + * gcc-interface/misc.c (callgraph_info_file): Delete. + +2019-10-27 Jakub Jelinek + + * locales.c (iso_3166): Add missing comma after "United-States". + +2019-10-15 Arnaud Charlet + + * Makefile.rtl (a-except.o): Put -O1 earlier so that it can be + overriden if needed by other variables. + +2019-10-12 Eric Botcazou + + PR ada/91995 + * sem_ch8.adb (Chain_Use_Clause): Remove second argument in calls + to Defining_Entity. + * sem_elab.adb (Find_Unit_Entity): Likewise. Deal with N_Subunit + here in lieu of in Defining_Entity. + * sem_util.ads (Defining_Entity): Remove 2nd and 3th parameters. + * sem_util.adb (Defining_Entity): Remove 2nd and 3th parameters, + and adjust accordingly. Deal with N_Compilation_Unit. + +2019-10-11 Eric Botcazou + + * gcc-interface/decl.c (elaborate_reference_1): Specifically deal with + pointer displacement. + + * gcc-interface/decl.c (components_to_record): Use proper name. + + * gcc-interface/trans.c (Sloc_to_locus): Use standard types. + +2019-10-11 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_field): Adjust again the packing + for a field without strict alignment and with an oversized clause. + +2019-10-11 Eric Botcazou + + * gcc-interface/decl.c (annotate_value) : Really test the + sign of the value when deciding to build a NEGATE_EXPR. + : Remove redundant line. + : Do the negation here. + +2019-10-11 Eric Botcazou + + * gcc-interface/decl.c (Gigi_Equivalent_Type) : New + case. Return the base type if the subtype is not constrained. + +2019-10-11 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : + New case to deal with the definition of named numbers. + : Minor tweaks. Set DECL_IGNORED_P on the CONST_DECL + if a corresponding variable is built. + * gcc-interface/trans.c (gnat_to_gnu) : Return + error_mark_node instead of aborting on overflow for named numbers. + : Reuse the case and + deal with error_mark_node specifically. + * gcc-interface/utils.c (create_var_decl): Do not set DECL_IGNORED_P + on CONST_DECLs. + (gnat_write_global_declarations): Output global constants. + +2019-10-10 Gary Dismukes + + * exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): When + encountering a loop at the top level of a package declaration + list (that is, within the declarations of a package spec or + body) that has nested subprograms, call Unnest_Loop to create a + new library-level procedure that will contain the loop, to allow + for proper handling of up-level references from within nested + subprograms, such as to loop parameters. + (Unnest_Loop): New procedure that takes a loop statement and + creates a new procedure body to enclose the loop statement, + along with generating a call to the procedure. + +2019-10-10 Arnaud Charlet + + * freeze.adb (Freeze_Subprogram): Ensure constructor is a C++ + constructor. + +2019-10-10 Gary Dismukes + + * libgnat/a-ststio.ads (File_Type): Apply pragma + Preelaborable_Initialization to the type. + +2019-10-10 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Do not peek + under private types whose completion is SPARK_Mode Off. + +2019-10-10 Gary Dismukes + + * exp_ch4.adb, sem_cat.adb, sem_ch12.adb, sem_ch3.adb, + sem_ch6.adb, sem_prag.adb, sem_util.adb, sem_util.ads: Minor + typo fixes. + +2019-10-10 Ed Schonberg + + * sem_warn.adb (Warn_On_Useless_Assignment): Do not warn if the + second assignment is at the same source position as the first. + +2019-10-10 Gary Dismukes + + * sem_util.adb (Enclosing_Subprogram): Handle the case of + E_Entry_Family, returning the entry family's associated + Protected_Body_Subprogram (as was already done for E_Entry). + * exp_ch9.adb (Expand_N_Accept_Statement): Call Reset_Scopes_To + on the block created for an accept statement to reset the scopes + of any local entities to the block scope. + +2019-10-10 Ed Schonberg + + * sem_ch12.adb (Analyze_Formal_Package_Declaration): Propagate + an aspect specification for Abstract_State from generic package + to formal package, so that it is available when analyzing the + constructed formal. + +2019-10-10 Eric Botcazou + + * sem_ch6.adb (Set_Actual_Subtypes): Put the freeze node of the + actual subtype after its declaration when the type of the formal + has a predicate. + +2019-10-10 Eric Botcazou + + * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Do not use + the Esize of the component to compute its layout, but only the + Component_Clause. Do not issue a warning for the _Tag + component. Also set the Esize of the component at the end of + the layout. + (Analyze_Record_Representation_Clause): Remove Hbit local + variable. Lay out the Original_Record_Component only if it's + distinct from the component. + (Check_Record_Representation_Clause): Fix off-by-one bug for the + Last_Bit of the artificial clause built for the _Tag component. + +2019-10-10 Bob Duff + + * treepr.ads, treepr.adb (ppar): New procedure. + +2019-10-10 Bob Duff + + * sem_aggr.adb (Resolve_Aggregate): Add missing cases in the + Others_Allowed => True case -- N_Case_Expression_Alternative and + N_If_Expression. Use Nkind_In. + * atree.adb, atree.ads, sinfo.adb, sinfo.ads (Nkind_In): New + 16-parameter version. + +2019-10-10 Ed Schonberg + + * sem_aggr.adb (Resolve_Array_Aggregate): Set properly the + Predicated_Parent link of an itype created for an aggregate, so + that the predicate_function of the parent can support proofs on + the object that it initializes. + +2019-10-10 Eric Botcazou + + * sem_ch3.adb (Analyze_Number_Declaration): Set + Debug_Info_Needed in the case where the expression is an integer + literal. + +2019-10-10 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add subprograms + with deep parameter or result type as not candidates for + inlining. + +2019-10-10 Vadim Godunko + + * libgnat/g-exptty.ads (TTY_Process_Descriptor): Set default + value for Process. + +2019-10-10 Bob Duff + + * sem_prag.adb (Defer_Compile_Time_Warning_Error_To_BE): In + addition to saving the pragma for further processing, copy the + pragma into the main unit if necessary. + +2019-10-10 Bob Duff + + * einfo.ads, einfo.adb (Invariants_Ignored): New flag on types. + This leaves just one unused flag. + * sem_prag.adb (Invariant): Set the flag if appropriate. + * exp_util.adb (Make_Invariant_Call): Check the flag. + +2019-10-10 Arnaud Charlet + + * gnat1drv.adb (Gnat1drv): Skip code generation when handling an + incomplete unit with -gnatceg. + +2019-10-10 Gary Dismukes + + * exp_ch7.adb (Check_Unnesting_Elaboration_Code): Various + cleanups. + (Set_Elab_Proc): New procedure to create the defining identifier + for a procedure created to encapsulate top-level blocks + occurring as a part of library package elaboration. + (First_Local_Scope): Function replaced by + Reset_Scopes_To_Elab_Proc. + (Reset_Scopes_To_Elab_Proc): New recursive procedure based on + First_Local_Scope, which it replaces, that is called to traverse + the statements of a library package body to locate top-level + blocks and determine whether they contain nested subprograms + that might address library-level objects of the package. Such + blocks (and loops) and certain top-level subprograms within the + statements will have their Scope reset here to match an + encapsulating procedure created by + Check_Unnesting_Elaboration_Code that will contain the + statements. + (Check_Unnesting_In_Decls_Or_Stmts): Code for handling blocks + factored out into Unnest_Block. Add handling for package + declarations and bodies, making recursive calls for + visible/private declarations, body declarations, statements, and + exception handlers. Also remove test for Is_Compilation_Unit: + caller tests for Is_Library_Level_Entity instead. Also, this + proc's name was changed from Check_Unnesting_In_Declarations. + (Check_Unnesting_In_Handlers): New procedure to traverse a + sequence of exception handlers, calling + Check_Unnesting_In_Decls_Or_Stmts on the statements of each + handler. + (Expand_N_Package_Body): Call Check_Unnesting_* routines only + when Unnest_Subprogram_Mode is set and the current scope is a + library-level entity (which includes packages and instantiations + nested directly within a library unit). + (Expand_N_Package_Declaration): Call Check_Unnesting_* routines + only when Unnest_Subprogram_Mode is set and the current scope is + a library-level entity (which includes packages and + instantiations nested directly within a library unit). + (Unnest_Block): New procedure factored out of + Check_Unnesting_In_Decls_Or_Stmts, for creating a new procedure + to replace a block statement and resetting the Scope fields of + the block's top-level entities. + +2019-10-10 Anthony Leonardo Gracio + + * doc/gnat_ugn/about_this_guide.rst, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + doc/gnat_ugn/getting_started_with_gnat.rst, + doc/gnat_ugn/gnat_and_program_execution.rst, errout.ads, + exp_ch3.adb, gnatls.adb, impunit.adb, lib-writ.ads, opt.ads, + sem_ch7.adb, sem_prag.adb, sem_res.adb, sem_warn.adb, + terminals.c: Replace GPS by GNAT Studio. + * gnat_ugn.texi: Regenerate. + +2019-10-10 Ed Schonberg + + * exp_ch6.adb (Expand_Simple_Function_Return_Statement): If the + function to which the return statement applies is an + Ignored_Ghost_Function, do not indicate that it uses the + secondary stack when the return type is unconstrained. + +2019-10-10 Bob Duff + + * libgnat/a-cbdlli.adb, libgnat/a-cbhama.adb, + libgnat/a-cbhase.adb, libgnat/a-cbmutr.adb, + libgnat/a-cborma.adb, libgnat/a-cborse.adb, + libgnat/a-cdlili.adb, libgnat/a-cidlli.adb, + libgnat/a-cihama.adb, libgnat/a-cihase.adb, + libgnat/a-cimutr.adb, libgnat/a-ciorma.adb, + libgnat/a-ciorse.adb, libgnat/a-cobove.adb, + libgnat/a-cohama.adb, libgnat/a-cohase.adb, + libgnat/a-coinve.adb, libgnat/a-comutr.adb, + libgnat/a-conhel.adb, libgnat/a-convec.adb, + libgnat/a-coorma.adb, libgnat/a-coorse.adb (Reference, + Constant_Reference): Use Busy instead of Lock, so we forbid + tampering with cursors, rather than tampering with elements. + +2019-10-10 Ed Schonberg + + * sem_cat.adb (Set_Categorization_From_Pragma): Do not modify + any visibility settings if there are no compilation_unit pragmas + following the package declaration. Add comments for future + cleanup. + +2019-10-10 Patrick Bernardi + + * bindgen.adb (System_Secondary_Stack_Package_In_Closure): + Renamed flag System_Secondary_Stack_Used to be clearer of what + it represents. + (Gen_Adainit): Refactor secondary stack related code to make it + clearer. + * rtsfind.adb (Load_RTU): Don't set Sec_Stack_Used flag here + (RTE): Set Sec_Stack_Used if the System.Secondary_Stack is + referenced, but not if we're ignoring ghost code. + +2019-10-10 Piotr Trojanek + + * sem_prag.adb (Analyze_Global_In_Decl_Part): Simplify previous + test, just like in a recent commit we simplified a similar test + for Depends contract. + +2019-10-04 Joseph Myers + + * gcc-interface/utils.c (flag_isoc2x): New variable. + +2019-10-01 Maciej W. Rozycki + + * gcc-interface/Makefile.in (ADA_RTL_DSO_DIR): New variable. + (install-gnatlib): Use it in place of ADA_RTL_OBJ_DIR for shared + library installation. + +2019-10-01 Maciej W. Rozycki + + * gcc-interface/Make-lang.in (ada.install-common): Split into... + (gnat-install-tools, gnat-install-lib): ... these. + +2019-09-26 Alexandre Oliva + + * gcc-interface/decl.c (components_to_record): Set + DECL_SIZE_UNIT for zero-sized fields. + +2019-09-26 Arnaud Charlet + + * osint.adb (OS_Time_To_GNAT_Time): Remove dependency on To_C/To_Ada + +2019-09-23 Rainer Orth + + * libgnarl/s-osinte__solaris.ads (sysconf): Declare. + (SC_NPROCESSORS_ONLN): Define. + * libgnarl/s-tasinf__solaris.ads (Number_Of_Processors): Declare. + * libgnarl/s-tasinf__solaris.adb (N_CPU): New variable. + (Number_Of_Processors): New function. + +2019-09-23 Eric Botcazou + + * gcc-interface/trans.c (Regular_Loop_to_gnu): Do not rotate the loop + if -Og is enabled. + (build_return_expr): Do not perform NRV if -Og is enabled. + (Subprogram_Body_to_gnu): Likewise. + (gnat_to_gnu) : Likewise. + (Handled_Sequence_Of_Statements_to_gnu): Do not inline finalizers if + -Og is enabled. + * gcc-interface/utils.c (convert_to_index_type): Return early if -Og + is enabled. + +2019-09-23 Eric Botcazou + + * gcc-interface/trans.c (gnat_compile_time_expr_list): New variable. + (Pragma_to_gnu): Rename local variable. Save the (first) expression + of pragma Compile_Time_{Error|Warning} for later processing. + (Compilation_Unit_to_gnu): Process the expressions saved above. + +2019-09-23 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu): Test Can_Use_Internal_Rep + on the underlying type of the node. + (Call_to_gnu): Likewise with the type of the prefix. + +2019-09-23 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Do not reorder fields + in packed record types if they contain fixed-size fields that cannot + be laid out in a packed manner. + +2019-09-19 Tom Tromey + + * gcc-interface/misc.c (gnat_get_type_bias): Return the bias + when -fgnat-encodings=gdb. + +2019-09-19 Steve Baird + + * sem_prag.adb (Preferred_String_Type): A new function. Given an + expression, determines whether the preference rules defined for + the third-and-later arguments of pragma Annotate suffice to + determine the type of the expression. If so, then the preferred + type is returned; if not then Empty is returned. Handles + concatenations. + (Analyze_Pragma): Replace previous code, which dealt only with + string literals, with calls to the new Preferred_String_Type + function, which also handles concatenations. + * doc/gnat_rm/implementation_defined_pragmas.rst: Update + documentation for pragma Annotate. + * gnat_rm.texi: Regenerate. + +2019-09-19 Eric Botcazou + + * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not return true + on pure alignment considerations if the target does not require + the strict alignment of memory accesses. + +2019-09-19 Eric Botcazou + + * sem_ch12.adb (Check_Private_View): Add a comment to indicate + future work. + +2019-09-19 Eric Botcazou + + * exp_aggr.adb (Has_Mutable_Components): Look at the underlying + type of components to find out whether they are mutable. + +2019-09-19 Eric Botcazou + + * sem_ch12.adb (Instantiate_Package_Body): Check that the body + has not already been instantiated when the body of the parent + was being loaded. + +2019-09-19 Eric Botcazou + + * sem_util.adb (In_Instance): Test whether the current unit has + been analyzed instead of being on the scope stack to detect the + case of actuals of an instantiation of a generic child unit done + as a compilation unit. + +2019-09-19 Dmitriy Anisimkov + + * libgnat/g-socket.ads, libgnat/g-socket.adb + (Create_Socket_Pair): New routine. + * libgnat/g-socthi.ads (OS_Has_Socketpair): Boolean constant. + (C_Socketpair): New imported routine. + * libgnat/g-socthi__mingw.ads, libgnat/g-socthi__vxworks.ads + (Default_Socket_Pair_Family): New constant. + (C_Socketpair): New routine. + * libgnat/g-socthi__mingw.adb, libgnat/g-socthi__vxworks.adb + (C_Socketpair): Is separated in anouther file. + * libgnat/g-sthcso.adb (C_Socketpair): Non UNIX implementation. + * libgnat/g-stsifd__sockets.adb: Reuse C_Socketpair. + +2019-09-19 Yannick Moy + + * sem_prag.adb (Analyze_Depends_In_Decl_Part): Simplify previous + test. + +2019-09-19 Ed Schonberg + + * sem_ch7.adb (Install_Parent_Private_Declarations): If a + generic child unit is instantiated within a sibling child unit, + the analysis of its private part requires that the private part + of the ancestor be available, as is done when the context + includes an instance of the ancestor. + +2019-09-19 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add special + case for traversal functions. + +2019-09-19 Yannick Moy + + * sem_prag.adb (Analyze_Global_In_Decl_Part): Do not issue an + error when a constant of an access type is used as output in a + Global contract. + (Analyze_Depends_In_Decl_Part): Do not issue an error when a + constant of an access type is used as output in a Depends + contract. + +2019-09-19 Arnaud Charlet + + * exp_attr.adb: Remove obsolete comment. + +2019-09-19 Eric Botcazou + + * sem_ch3.adb (Build_Derived_Access_Type): If this is an access- + to-subprogram type, copy Can_Use_Internal_Rep from the parent. + +2019-09-19 Yannick Moy + + * gcc-interface/Make-lang.in: Remove references to sem_spark. + * sem_spark.adb, sem_spark.ads: Remove unit. + +2019-09-19 Eric Botcazou + + * exp_attr.adb (Is_Inline_Floating_Point_Attribute): Treat + Machine_Rounding as an alias for Rounding. + * sem_res.adb (Simplify_Type_Conversion): Likewise. + +2019-09-19 Gary Dismukes + + * exp_unst.adb (Unnest_Subprogram): Bypass the transformation of + up-level references unless Opt.Generate_C_Code is enabled. + +2019-09-19 Eric Botcazou + + * exp_ch4.adb (Expand_Array_Equality): If optimization is + enabled, generate a simple conjunction of comparisons for the + specific case of constrained 1-dimensional 2-element arrays. + Fix formatting. + +2019-09-19 Piotr Trojanek + + * exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Remove. + (Append_Homonym_Number): Use Homonym_Number instead of + Get_Homonym_Number. + * exp_util.ads, exp_util.adb (Homonym_Number): Mirror style of + the removed Get_Homonym_Number routine, i.e. initialize local + objects at declaration and refine the type of result. + * sem_util.adb (Add_Homonym_Suffix): Use Homonym_Number instead + of Get_Homonym_Number. + +2019-09-19 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): Simplify + handling of expressions in predicates when the context is a + generic unit. + +2019-09-19 Bob Duff + + * sem_attr.adb (Resolve_Attribute): Make sure the secondary + stack is properly managed in the case of a 'Range attribute in a + loop. + +2019-09-19 Raphael Amiard + + * libgnat/a-cfhase.ads (Set): Add comments to public primitives. + +2019-09-19 Raphael Amiard + + * libgnat/a-cbhama.ads, libgnat/a-cbhase.ads, + libgnat/a-chtgop.ads (Clear): Refine comments + +2019-09-19 Eric Botcazou + + * sem_ch12.adb (Restore_Private_Views): Comment out new code + that clear the Is_Generic_Actual_Type also on the full view. + +2019-09-19 Bob Duff + + * exp_ch3.adb (Rewrite_As_Renaming): Return False if there are + any aspect specifications, because otherwise Insert_Actions + blows up. + +2019-09-19 Eric Botcazou + + * exp_ch6.adb (Add_Simple_Call_By_Copy_Code): Add + Bit_Packed_Array parameter and documet it. Always insert a copy + if it is set True. + (Expand_Actuals): Adjust the calls to + Add_Simple_Call_By_Copy_Code. + +2019-09-19 Bob Duff + + * xref_lib.adb (Get_Symbol_Name): If we reach EOF in the first + loop without finding the symbol, return "???". Otherwise, it's + an infinite loop. + (Parse_EOL): Assert that we're not already at EOF. Remove + processing of LF/CR -- there are no operating systems that use + that. + +2019-09-19 Eric Botcazou + + * exp_ch6.adb (Is_Legal_Copy): Also return false for an aliased + formal and a formal passed by reference in convention Ada. Add + missing guard to the existing test on Is_Valued_Procedure. + +2019-09-19 Bob Duff + + * rtsfind.ads (RTE_Available): Improve comment. + +2019-09-18 Bob Duff + + * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Move call + to RTE_Available later, so it doesn't disturb the elab order. + The RE_Copy_Bitfield entity is defined in package + System.Bitfields which has a dependency on package + System.Bitfield_Utils, which has it its spec: + pragma Elaborate_Body; + The query on RTE_Available forces loading and analyzing + System.Bitfields and all its withed units. + +2019-09-18 Eric Botcazou + + * checks.ads (Alignment_Warnings_Record): Add P component. + * checks.adb (Apply_Address_Clause_Check): Be prepared to kill + the warning also if the clause is of the form X'Address. + (Validate_Alignment_Check_Warning): Kill the warning if the + clause is of the form X'Address and the alignment of X is + compatible. + +2019-09-18 Ed Schonberg + + * sem_res.adb (Set_Mixed_Node_Expression): If a conditional + expression has universal_real alternaitves and the context is + Universal_Fixed, as when it is an operand in a fixed-point + multiplication or division, resolve the expression with a + visible fixed-point type, which must be unique. + +2019-09-18 Ed Schonberg + + * sem_ch3.adb (Constrain_Component_Type): For a discriminated + type, handle the case of a constraint given by a conversion of a + discriminant of the enclosing type. Necessary when compiling a + discriminated task for a restricted run-time, when the generated + Secondary_Stack component may be set by means of an aspect on + the task type. + +2019-09-18 Ed Schonberg + + * exp_aggr.adb (Expand_Record_Aggregate, Rewrite_Discriminant): + After rewriting a reference to an outer discriminant as a + selected component of the enclosing object, analyze the selected + component to ensure that the entity of the selector name is + properly set. This is necessary when the aggregate appears + within an expression that may have been analyzed already. + +2019-09-18 Justin Squirek + + * sem_ch8.adb (Use_One_Type): Add guard to prevent warning on a + reundant use package clause where there is no previous + use_clause in the chain. + +2019-09-18 Justin Squirek + + * exp_ch4.adb (Expand_N_Type_Conversion): Add calculation of an + alternative operand for the purposes of generating accessibility + checks. + +2019-09-18 Eric Botcazou + + * exp_aggr.adb (Build_Array_Aggr_Code): In STEP 1 (c), duplicate + the expression and reset the Loop_Actions for each loop + generated for an others choice. + +2019-09-18 Justin Squirek + + * einfo.adb, einfo.ads (Minimum_Accessibility): Added new field. + (Set_Minimum_Accessibility): Added to set new field. + (Minimum_Accessibility): Added to fetch new field. + * exp_ch6.adb (Expand_Subprogram_Call): Modify calls to fetch + accessibility levels to the new subprogram Get_Accessibility + which handles cases where minimum accessibility might be needed. + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Add section to + generate a Minimum_Accessibility object within relevant + subprograms. + * sem_util.adb, sem_util.ads (Dynamic_Accessibility_Level): + Additional documentation added and modify section to use new + function Get_Accessibility. + (Get_Accessibility): Added to centralize processing of + accessibility levels. + +2019-09-18 Steve Baird + + * sem_util.ads (Interval_Lists): A new visible package. This + package is visible because it is also intended for eventual use + in Sem_Eval.Subtypes_Statically_Compatible when that function is + someday upgraded to handle static predicates correctly. This + new package doesn't really need to be visible for now, but it + still seems like a good idea. + * sem_util.adb (Gather_Components): Implement AI12-0086 via the + following strategy. The existing code knows how to take a static + discriminant value and identify the corresponding variant; in + the newly-permitted case of a non-static value of a static + subtype, we arbitrarily select a value of the subtype and find + the corresponding variant using the existing code. Subsequently, + we check that every other value of the discriminant's subtype + corresponds to the same variant; this is done using the newly + introduced Interval_Lists package. + (Interval_Lists): Provide a body for the new package. + +2019-09-18 Javier Miranda + + * exp_ch4.adb (Expand_N_Op_Eq): The frontend assumes that we can + do a bit-for-bit comparison of two access to protected + subprogram pointers. However, there are two reasons why we may + not be able to do that: (1) there may be padding bits for + alignment before the access to subprogram, and (2) the access to + subprogram itself may not be compared bit-for- bit because the + activation record part is undefined: two pointers are equal iff + the subprogram addresses are equal. This patch fixes it by + forcing a field-by-field comparison. + * bindgen.adb (Gen_Adainit): The type No_Param_Proc is defined + in the library as having Favor_Top_Level, but when we create an + object of that type in the binder file we don't have that + pragma, so the types are different. This patch fixes this issue. + * libgnarl/s-interr.adb, libgnarl/s-interr__hwint.adb, + libgnarl/s-interr__sigaction.adb, libgnarl/s-interr__vxworks.adb + (Is_Registered): This routine erroneously assumes that the + access to protected subprogram is two addresses. We need to + create the same record that the compiler makes to ensure that + any padding is the same. Then we have to look at just the first + word of the access to subprogram. This patch fixes this issue. + +2019-09-18 Bob Duff + + * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): The call + to Copy_Bitfield is now enabled. + (Expand_Assign_Array_Bitfield): Multiply 'Length times + 'Component_Size "by hand" instead of using 'Size. + +2019-09-18 Vasiliy Fofanov + + * doc/gnat_rm/implementation_defined_pragmas.rst: Fix minor + formatting issue. + +2019-09-18 Javier Miranda + + * exp_disp.adb (Make_DT, Make_Secondary_DT): Remove generation + of alignment representation clause for the following tables: + Predef_Prims, Iface_DT, TSD, ITable, DT. + +2019-09-18 Steve Baird + + * sem_eval.adb (Expr_Value): Do not fail "the type of a null + literal must be an access type" assertion if errors have already + been posted on the given node. + +2019-09-18 Piotr Trojanek + + * exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Refine type + from Nat to Pos. + * sem_util.adb (Add_Homonym_Suffix): Refine type of a local + variable. + +2019-09-18 Yannick Moy + + * exp_dbug.adb (Append_Homonym_Number): Use new function + Get_Homonym_Number. + (Get_Homonym_Number): New function to return the homonym number. + (Qualify_Entity_Name): Remove special case for GNATprove. + * exp_dbug.ads (Get_Homonym_Number): Make the new function + public for use in GNATprove. + * frontend.adb (Frontend): Do not qualify names in GNATprove + mode. + * sem_util.adb (Unique_Name): Append homonym suffix where needed + for entities which have local homonyms in the same scope. + +2019-09-18 Nicolas Roche + + * libgnat/s-valrea.adb (Scan_Integral_Digits): New procedure. + (Scan_Decimal_Digits): New procedure. + (As_Digit): New function. + (Scan_Real): Use Scan_Integral_Digits and Scan_Decimal_Digits. + +2019-09-18 Claire Dross + + * exp_attr.adb (Expand_N_Attribute_Reference): Call routine from + Exp_Util to know the value of the Constrained attribute in the + static case. + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Make + implicit dereferences inside the Constrained attribute explicit. + * exp_util.ads, exp_util.adb + (Attribute_Constrained_Static_Value): New routine to compute the + value of a statically known reference to the Constrained + attribute. + +2019-09-18 Vadim Godunko + + * libgnat/g-expect.adb (Expect_Internal): Don't include invalid + file descriptors into the set of file descriptors for Poll. + Raise Process_Died exception when computed set of file + descriptors to monitor is empty. + +2019-09-18 Frederic Konrad + + * adaint.c: Include dosFsLib.h and vwModNum.h for VxWorks 6. + (__gnat_rename): Map S_dosFsLib_FILE_NOT_FOUND to ENOENT. + +2019-09-18 Steve Baird + + * freeze.adb (Freeze_Object_Declaration): Do not call + Check_Large_Modular_Array when the object declaration being + frozen is an ignored ghost entity. + +2019-09-18 Tom Tromey + + * make.adb (Initialize): Fix typo. + +2019-09-18 Olivier Hainque + + * libgnat/s-win32.ads (DWORD_PTR): New type, pointer size + unsigned int. + (SYSTEM_INFO): Use it for dwActiveProcessorMask. + +2019-09-18 Arnaud Charlet + + * doc/gnat_rm/implementation_defined_pragmas.rst: Improve doc on + Warning_As_Error. + * gnat_rm.texi: Regenerate. + +2019-09-18 Arnaud Charlet + + * doc/gnat_rm/implementation_defined_characteristics.rst, + doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_rm/implementation_of_specific_ada_features.rst: Remove + remaining references to VMS support + * gnat_rm.texi: Regenerate. + +2019-09-18 Arnaud Charlet + + * libgnat/s-stausa.adb: Fix a typo + +2019-09-18 Bob Duff + + * libgnat/a-cbhama.adb, libgnat/a-cbhase.adb, + libgnat/a-cbmutr.adb, libgnat/a-cborma.adb, + libgnat/a-cborse.adb, libgnat/a-cobove.adb (Copy): Avoid reading + the uninitialized variable C in the Checks = False case. Change + variable to be a constant. + +2019-09-18 Claire Dross + + * libgnat/a-cofuma.adb (Remove, Elements_Equal_Except, + Keys_Included, Keys_Included_Except): Rename loop indexes and + global constants from I to J. + +2019-09-18 Arnaud Charlet + + * exp_unst.adb (Unnest_Subprograms): Refine previous change. + +2019-09-17 Claire Dross + + * libgnat/a-cofuma.ads, libgnat/a-cofuma.adb (Remove): New + function which returns a copy of the input container without a + given mapping. + +2019-09-17 Yannick Moy + + * libgnat/s-arit64.adb (Double_Divide): Correctly handle the + special case when rounding. + +2019-09-17 Javier Miranda + + * sem_ch3.adb (Complete_Private_Subtype): Propagate attributes + Has_Attributes and Predicate_Function to the cloned subtype. + +2019-09-17 Eric Botcazou + + * sem.adb (Do_Analyze): Save Style_Check_Max_Line_Length on + entry and restore it on exit instead of recomputing it. + +2019-09-17 Tom Tromey + + * exp_dbug.ads: Update character type comment. + +2019-09-17 Yannick Moy + + * libgnat/s-arit64.adb (Double_Divide): Simplify needlessly + complex computation. Fix comments. + (Scaled_Divide): Fix comments. Explain why implementation does + not suffer from bugs in Algorithm D from 2nd Edition of TAOCP. + +2019-09-17 Yannick Moy + + * libgnat/s-arit64.adb (Scaled_Divide): Add protection against + undesirable wrap-around. + +2019-09-17 Yannick Moy + + * libgnat/s-arit64.adb (Double_Divide): Fix two possible + overflows. + +2019-09-17 Dmitriy Anisimkov + + * make_util.ads (On_Windows): Move... + * osint.ads (On_Windows): There. + * osint.adb (OS_Time_To_GNAT_Time): If odd incremented on + Windows before conversion to Time_Stamp_Type. + +2019-09-17 Yannick Moy + + * sem_spark.adb (Check_Declaration): Do not check the assignment + from an illegal declaration. + +2019-09-17 Bob Duff + + * doc/gnat_ugn/gnat_and_program_execution.rst: Clarify + documentation. + * gnat_ugn.texi: Regenerate. + * libgnat/s-stausa.ads: Clarify comments. + +2019-09-17 Steve Baird + + * sem_util.adb (Wrong_Type): In deciding to suppress a message, + it is not enough for In_Instance to be True; in addition, + In_Generic_Actual (Expr) must be False. + * sem_type.adb (In_Generic_Actual): Fix bug where traversal of + parents skips every other node. + +2019-09-17 Claire Dross + + * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): If the + definition of a local borrower contains calls to traversal + functions, the borrowed expression is the first parameter of the + first traversal function call in the definition. + +2019-09-17 Ed Falis + + * doc/gnat_rm/implementation_defined_pragmas.rst: Remove + section. + * gnat_rm.texi, gnat_ugn.texi: Regenerate. + +2019-09-17 Vadim Godunko + + * libgnat/g-exptty.ads (Close_Input): New subprogram. + * libgnat/g-exptty.adb (Close_Input): New subprogram. + (Close): Move close of TTY to Close_Input. + * terminals.c (__gnat_close_tty): Set file descriptors to + invalid value after close. + +2019-09-17 Vadim Godunko + + * libgnat/g-expect.adb (Expect_Internal): Try to call 'poll' few + times. + +2019-09-17 Vadim Godunko + + * libgnat/g-expect.ads, libgnat/g-expect.adb (Close_Input): New + subprogram. + (Get_Command_Output): Call Close_Input to close input stream. + (Expect_Internal): Likewise. + (Close): Likewise. + * libgnat/g-exptty.adb (Close): Likewise. + +2019-09-17 Piotr Trojanek + + * sem_util.ads, sem_util.adb (Is_Attribute_Old): New utility + routine. + +2019-09-17 Yannick Moy + + * inline.adb (Can_Be_Inlined_In_GNATprove_Mode): Add handling + for dispatching operations. + +2019-09-17 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): In a + generic context, for a Predicate aspect, use + Preanalyze_Spec_Expression to verify conformance. + +2019-09-17 Javier Miranda + + * sem_ch3.adb (Constrain_Corresponding_Record): Propagate + attribute Is_Tagged_Type. + +2019-09-17 Javier Miranda + + * exp_ch3.adb (Build_Record_Init_Proc): Do not generate code to + adjust the tag component when the record is initialized with a + raise expression. + * sem_aggr.adb (Valid_Limited_Ancestor): Return True for + N_Raise_Expression nodes. + (Valid_Ancestor_Type): Return True for raise expressions. + * sem_ch3.adb (Analyze_Component_Declaration): Do not report an + error when a component is initialized with a raise expression. + * sem_ch4.adb (Analyze_Qualified_Expression): Do not report an + error when the aggregate has a raise expression. + +2019-09-17 Piotr Trojanek + + * ali.ads: Fix casing in comment. + * ali-util.ads, ali-util.adb (Read_Withed_ALIs): Remove + Ignore_Errors parameter; it was only set to non-default value of + True when running in GNATprove_Mode and wrongly reset to False + when calling this routine recursively. Now in GNATprove mode we + want it to be always True, so in fact it is equivalent to + GNATProve_Mode flag itself (which was already used in this + routine). + +2019-09-17 Arnaud Charlet + + * adaint.c (_REENTRANT, _THREAD_SAFE): Only define if needed. + +2019-09-17 Arnaud Charlet + + * libgnat/s-bitfie.ads (Val_Bits, Val_Bytes): Define from + Long_Long_Integer'Size. + +2019-09-17 Javier Miranda + + * exp_ch6.ads (Needs_BIP_Task_Actuals): New subprogram. + * exp_ch6.adb (Add_Task_Actuals_To_Build_In_Place_Call): Code + cleanup. + (Check_Number_Of_Actuals): New subprogram. + (Make_Build_In_Place_Call_In_Allocator): Adding assertion. + (Make_Build_In_Place_Call_In_Anonymous_Context): Adding + assertion. + (Make_Build_In_Place_Call_In_Assignment): Adding assertion. + (Make_Build_In_Place_Call_In_Object_Declaration): Code cleanup + plus assertion addition. + (Needs_BIP_Task_Actuals): New subprogram. + * sem_ch6.adb (Create_Extra_Formals): Rely on + Needs_BIP_Task_Actuals() to check if the master of the tasks to + be created, and the caller's activation chain formals are + needed. + +2019-09-17 Bob Duff + + * libgnat/s-bituti.adb (Get_Val_2, Set_Val_2): Use new routines + for getting and setting a Val_2, avoiding touching the second + half when that half might not exist. + * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Correct + tests for potential volatile or independent components. In + particular, do not call Prefix unless we know it's a slice. + +2019-09-17 Dmitriy Anisimkov + + * gsocket.h: Include sys/un.h. + * s-oscons-tmplt.c (AF_UNIX): New constant generation. + (SIZEOF_sockaddr_un): Idem. + * libgnat/g-socket.ads (Family_Type): New value Family_Unix + added. + (Family_Inet_4_6): New subtype only for network families. + (Sock_Addr_Type): Add Unbounded_String field for Family_Unix + variant. + (Unix_Socket_Address): Create Sock_Addr_Type from socket + pathname. + (Network_Socket_Address): Create Sock_Addr_Type from + Inet_Addr_Type and Port_Type parameters. + * libgnat/g-socket.adb: Support local unix address in socket + routines. + (Get_Address_Info): Disable warning about Result may be + referenced before it has a value. Remove duplicated code to exit + from Look_For_Supported. + * libgnat/g-sothco.ads (Unix_Name_Length): New constant defining + maximum number of characters in local socket address path. + (Sockaddr): Add variant for Family_Unix address family. Move + Sin_Port and Sin_Family to Family_Inet section. Add Sin6_Port + and Sin6_Family to Family_Inet6 section. + (Set_Address): Add out parameter Length to return valuable + Sockaddr data length. + (Get_Address): Add input parameter Length to set valuable + Sockaddr data length. + * libgnat/g-sothco.adb: Support local unix address in socket + routines. + +2019-09-17 Eric Botcazou + + * exp_attr.adb (Expand_Size_Attribute): Chain the special cases + on the back-end path and rewrite the attribute appled to slices + of bit-packed arrays into the product of the Length and the + Compoent_Size attributes of the slices. + * exp_ch5.adb (Expand_Assign_Array_Bitfield): Use Size attribute + directly to compute the bitfield's size. + +2019-09-17 Bob Duff + + * exp_ch5.adb (Expand_Assign_Array_Loop_Or_Bitfield): Add tests + for potential volatile or independent components. + * libgnat/s-bituti.adb (Copy_Small_Bitfield, + Copy_Large_Bitfield): Move declarations to more appropriate + place. + +2019-09-13 Maciej W. Rozycki + + * make.adb (Scan_Make_Arg): Also accept `--sysroot=' for the + compiler and the linker. + +2019-08-30 Eric Botcazou + + * gcc-interface/decl.c (maybe_saturate_size): New function. + (gnat_to_gnu_entity): Invoke it on the Esize of types before sending + it for back-annotations. + * gcc-interface/trans.c: Fix typo. + +2019-08-30 Eric Botcazou + + * gcc-interface/ada-tree.h (DECL_FORCED_BY_REF_P): New macro. + * gcc-interface/decl.c (gnat_to_gnu_param): Set it on parameters + whose mechanism was forced to by-reference. + * gcc-interface/trans.c (Call_to_gnu): Do not issue a warning about a + misaligned actual parameter if it is based on a CONSTRUCTOR. Remove + obsolete warning for users of Starlet. Issue a warning if a temporary + is make around the call for a parameter with DECL_FORCED_BY_REF_P set. + (addressable_p): Return true for REAL_CST and ADDR_EXPR. + +2019-08-30 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu): Do not set the location on an + expression used for a tag. + +2019-08-30 Eric Botcazou + + * gcc-interface/gigi.h (aggregate_type_contains_array_p): Declare. + * gcc-interface/decl.c (gnat_to_gnu_entity) : For an + extension, test Has_Record_Rep_Clause instead of Has_Specified_Layout. + (adjust_packed): Return 0 if the type of the field is an aggregate + type that contains (or is) a self-referential array. + (type_has_variable_size): Delete. + * gcc-interface/utils.c (inish_record_type): Constify a variable. + (aggregate_type_contains_array_p): Add parameter SELF_REFERENTIAL. + : Pass it in the recursive call. + : If it is true, return true only if the array type is + self-referential. + (create_field_decl): Streamline the setting of the alignment on the + field. Pass false to aggregate_type_contains_array_p. + +2019-08-30 Eric Botcazou + + * gcc-interface/trans.c (lvalue_required_p) : Adjust GNU_TYPE + in the recursive call. + : Likewise. + +2019-08-30 Eric Botcazou + + * gcc-interface/utils.c (build_template): Deal with parameters + passed by pointer to component of multi-dimensional arrays. + +2019-08-30 Eric Botcazou + + * gcc-interface/decl.c (annotate_value) : Inline the call + also if List_Representation_Info is greater than 3. + +2019-08-30 Eric Botcazou + + * gcc-interface/trans.c (Attribute_to_gnu) : Add assertion. + +2019-08-30 Eric Botcazou + + * gcc-interface/gigi.h (gigi_checking_assert): New macro. + * gcc-interface/decl.c (gnat_to_gnu_entity) : + Remove redundant test and adjust comments. Minor tweaks. + * gcc-interface/trans.c (Call_to_gnu): Do not generate range checks, + instead assert that the Do_Range_Check flag is not set. Adjust call + to convert_with_check. + (gnat_to_gnu): Likewise. + (assoc_to_constructor): Likewise. + (pos_to_constructor): Likewise. Remove GNAT_COMPONENT_TYPE parameter. + (emit_range_check): Delete. + (convert_with_check): Remove RANGE_P parameter and adjust. Do a single + overflow check for modular types. + +2019-08-23 Jakub Jelinek + + PR middle-end/91283 + * gcc-interface/misc.c (gnat_post_options): Set flag_excess_precision + instead of flag_excess_precision_cmdline. + +2019-08-21 Vadim Godunko + + * libgnat/g-expect.adb (Expect_Internal): Attempt to read + several times when 'read' returns non-positive. + +2019-08-21 Piotr Trojanek + + * einfo.adb (Is_Discriminal): Remove extra parens. + (Is_Constant_Object): Simplify by reusing Ekind_In. + (Is_Prival): Remove extra parens. + * checks.adb, exp_ch4.adb, sem_ch3.adb, sem_spark.adb: Minor + reformattings. + +2019-08-21 Claire Dross + + * libgnat/a-cofove.ads (Vector): Add an Iterable aspect to allow + iteration. + (Iter_First, Iter_Next): Primitives used for iteration. + +2019-08-21 Yannick Moy + + * sem_ch3.adb (Analyze_Subtype_Declaration): Inherit RM_Size + field for formal type parameters in generic instantiations. + +2019-08-21 Yannick Moy + + * sem_spark.adb: Update references to the SPARK RM. + +2019-08-21 Eric Botcazou + + * repinfo.adb (List_Array_Info): In -gnatR4 mode, set the + relevant flag on the component type here instead of... + (List_Object_Info): Likewise for the object type. + (List_Entities): ...here. In -gnatR4 mode, recurse into + entities local to a record type. + (List_Component_Layout): In -gnatR4 mode, mark the type as + relevant. + +2019-08-21 Bob Duff + + * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add s-bitutil.o and + s-biutin.o. + * exp_ch5.adb (Expand_Assign_Array_Bitfield): New function to + generate a call to Copy_Bitfield. This is disabled for now. + (Expand_Assign_Array_Loop_Or_Bitfield): New function to decide + whether to call Expand_Assign_Array_Bitfield. + (Expand_Assign_Array): Call Expand_Assign_Array_Loop_Or_Bitfield + instead of Expand_Assign_Array_Loop. + * libgnat/s-bitfie.ads, libgnat/s-bituti.adb, + libgnat/s-bituti.ads: New units. + * rtsfind.ads: Add enum literals for accessing Copy_Bitfield. + +2019-08-21 Piotr Trojanek + + * bindo-graphs.ads (Iterate_Edges_To_Successors): Fix typo in + pragma Inline. + * bindo-graphs.adb (Delete_Edge): Fix layout in parameter list. + +2019-08-21 Gary Dismukes + + * exp_ch3.adb (Build_Master): Suppress call to + Build_Class_Wide_Master in the case where the + access-to-limited-class-wide type was created for a component in + an entry's formal parameter + block (Is_Parameter_Block_Component_Type), to prevent a master + from being created for such access types generated by the front + end in a task spec for entry formals in a parameter block. Add + a ??? about whether this suppression should be done more + generally (such as by using Comes_From_Source). + +2019-08-21 Eric Botcazou + + * exp_ch6.adb (Expand_N_Extended_Return_Statement): In the case + of a built-in-place function that doesn't need a BIP_Alloc_Form + parameter but returns unconstrained, build the return + consistently using the function's result subtype. Remove bypass + added in previous change. + +2019-08-21 Piotr Trojanek + + * sem_prag.adb (Max_Entry_Queue_Length): Do not substitute + expression of the pragma argument with its value during + analysis. + * sem_util.adb (Get_Max_Queue_Length): Compute value of the + pragma argument when needed. + +2019-08-21 Yannick Moy + + * checks.adb (Install_Null_Excluding_Check): Do not install + check in GNATprove mode. + +2019-08-21 Yannick Moy + + * sem_spark.adb (Process_Path): Do nothing on address of + subprogram. + +2019-08-21 Eric Botcazou + + * exp_util.adb (Finalize_Address): Deal consistently with + subtypes of private protected types. + +2019-08-21 Piotr Trojanek + + * exp_util.adb (Corresponding_Runtime_Package): Use high-level + Is_Protected_Type. + * sem_ch8.adb (Analyze_Renamed_Entry): Likewise. + * sem_ch9.adb (Analyze_Requeue): Likewise. + +2019-08-21 Javier Miranda + + * sem_util.adb (Update_Named_Associations): Update + First_Named_Actual when the subprogram call has a single named + actual. + +2019-08-21 Joel Brobecker + + * doc/Makefile (mk_empty_dirs): New (PHONY) rule. + (%.html, %.pdf, %.txt, %.info, %.texinfo): Add dependencies on + mk_empty_dirs. + +2019-08-21 Justin Squirek + + * doc/gnat_rm/implementation_defined_pragmas.rst: Modify + documentation to reflect expected behavior. + * gnat_rm.texi: Regenerate. + * sem_prag.adb (Analyze_Pragma): Modify handling of pragma + Max_Entry_Queue_Length to not reject integer values of negative + one. + * sem_util.adb (Get_Max_Queue_Length): Add processing for values + of negative one to fit within the current scheme. + +2019-08-20 Arnaud Charlet + + * exp_unst.adb (Unnest_Subprograms, Unnest_Subprogram): Take + inlining (-gnatn) into account. + +2019-08-20 Ed Schonberg + + * exp_ch13.adb (Expand_N_Attribute_Definition_Clause, case + Storage_Size): If the expression for Storage_Size is not static + it may depend on characterstics of another type that may bot be + frozen yet, so the elaboration of the expression for the aspect + must be attached directly to the freeze actions of the type to + which it applies. + +2019-08-20 Piotr Trojanek + + * exp_util.adb (Build_DIC_Procedure_Declaration): Set the last + entity of the generated Default_Initial_Condition procedure in + order to construct a proper entity chain. + +2019-08-20 Yannick Moy + + * exp_spark.adb (Expand_SPARK_N_Slice_Or_Indexed_Component): + Renaming of function to apply to slices as well. + (Expand_SPARK): Expand prefix of slices of access type. + +2019-08-20 Bob Duff + + * exp_aggr.adb (Expand_Array_Aggregate): Use build-in-place in + the nonlimited case in STEP 4. This improves the efficiency of + things like (1 .. 1000 => <>). We still generate some code for + that, unfortunately, but it is much improved. + (Aggr_Assignment_OK_For_Backend): Return false if <> components + are present. + +2019-08-20 Bob Duff + + * exp_ch6.adb (Needs_BIP_Alloc_Form): Call + Requires_Transient_Scope rather than checking constrainedness + and so forth. We have previously improved + Requires_Transient_Scope to return False in various cases, + notably a limited record with an access discriminant. This + change takes advantage of that to avoid using the secondary + stack for functions returning such types. + (Make_Build_In_Place_Call_In_Allocator): Be consistent by + calling Needs_BIP_Alloc_Form rather than Is_Constrained and so + forth. + * sem_ch4.adb (Analyze_Allocator): The above change causes the + compiler to generate code that is not legal Ada, in particular + an uninitialized allocator for indefinite subtype. This is + harmless, so we suppress the error message in this case. + +2019-08-20 Gary Dismukes + + * ali.adb, ali.ads, aspects.adb, checks.ads, checks.adb, + doc/gnat_rm/implementation_defined_pragmas.rst, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + einfo.ads, exp_aggr.adb, exp_ch11.adb, exp_ch3.ads, exp_ch4.adb, + exp_disp.adb, inline.adb, libgnat/a-locale.ads, + libgnat/s-soflin.ads, par_sco.adb, repinfo.adb, sem_ch5.adb, + sem_disp.adb, sem_elab.adb, sem_eval.adb, sem_spark.adb, + sem_spark.ads, sinfo.ads: Minor reformattings, typo fixes and + and rewordings. + +2019-08-20 Dmitriy Anisimkov + + * adaint.c (__gnat_to_gm_time): On _WIN32, don't round time up + to even second. + +2019-08-20 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declaration): If actual type is + private and distinct from nominal type in declaration, propagate + flags Is_Constr_Subt_For_U_Nominal and _UN_Aliased to full view + of private type. + +2019-08-20 Ed Schonberg + + * exp_attr.adb (Expand_Loop_Entry_Attribute): When expanding a + loop entry attribute for a while_loop we construct a function + that incorporates the expanded condition of the loop. The itypes + that may be generated in that expansion must carry the scope of + the constructed function for proper handling in gigi. + +2019-08-20 Ed Schonberg + + * exp_disp.adb (Build_Class_Wide_Check, Replace_Formals): When a + dispatching call tp a subprogram with a class-wide precondition + occurrs in the same declarative part as the ancestor subprogram + being called, the`expression for the precondition has not been + analyzed yet. Such a call may appear, e.g. in an expression + function. In that case, the replacement of formals by actuals in + the call cannot use the formal entities of the subprogram being + called, and the occurrence of the formals in the expression must + be located by name (Chars fields) as would be done at a later + freeze point, when the expression is resolved in the context of + the subprogram itself. + +2019-08-20 Bob Duff + + * sem_prag.adb (Persistent_BSS): If an initialization is present + because of Initialize_Scalars or Normalize_Scalars, generate an + implicit pragma Suppress_Initialization to remove that, because + initialization is not allowed for these variables. Other + initializations remain illegal. + +2019-08-20 Gary Dismukes + + * sem_ch3.adb (OK_For_Limited_Init_In_05): In the case of type + conversions, apply the recursive call to the Original_Node of + the expression Exp rather than the Expression of the + Original_Node, in the case where Exp has been rewritten; + otherwise, when Original_Node is the same as Exp, apply the + recursive call to the Expression. + (Check_Initialization): Revise condition for special check on + type conversions of limited function calls to test Original_Node + (avoiding spurious errors on expanded unchecked conversions + applied to build-in-place dispatching calls). + +2019-08-20 Patrick Bernardi + + * exp_aggr.adb (Expand_Record_Aggregate): Always convert a + record Aggregate to assignment statements if the option + Aggregate_Individually_Assign is set. + * opt.ads (Aggregate_Individually_Assign): New option. + * par-prag.adb (Prag): Add Pragma_Aggregate_Individually_Assign. + * sem_prag.adb (Analyze_Pragma): Likewise. + * snames.ads-tmpl: Add Pragma_Aggregate_Individually_Assign and + Name_Aggregate_Individually_Assign. + * doc/gnat_rm/implementation_defined_pragmas.rst: Document + pragma Aggregate_Individually_Assign. + * gnat_rm.texi: Regenerate. + +2019-08-20 Bob Duff + + * par-ch4.adb: Minor wording change in error messages. + * sem_aggr.adb (Resolve_Delta_Aggregate): Emit an error for Ada + versions prior to Ada 2020. + +2019-08-20 Bob Duff + + * freeze.adb (Is_Atomic_VFA_Aggregate): Make the temp for + initialization of the atomic variable be constant. This is + cleaner, and might improve efficiency. + +2019-08-20 Eric Botcazou + + * repinfo.adb (List_Record_Info): In -gnatR4 mode, set the + relevant flag on the implicit base type of a record subtype. + +2019-08-20 Bob Duff + + * sem_eval.adb (Expr_Value): Implement the case of an unchecked + conversion of a static expression. + +2019-08-20 Bob Duff + + * sem_ch13.adb (Is_Null_Array): New function, used to detect the + null array case; used to warn about uncheckedly converting to a + zero-sized array. It is unfortunate that we can't just check + the size, and warn on all cases of converting from a + nonzero-sized type to a zero-sized one. That's because "0" means + two different things: "size is zero" and "size is unknown". + Until we fix that design flaw, we need this more targeted fix. + +2019-08-20 Bob Duff + + * libgnat/a-cborma.adb, libgnat/a-cborse.adb (Clear): Repeatedly + call Delete. This avoids clearing the free list, which + substantially speeds up future Delete operations. + +2019-08-20 Bob Duff + + * sem_ch13.adb (Component_Order_Check): New procedure to check + for out-of-order clauses. + * warnsw.ads, warnsw.adb: New -gnatw_r switch. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document new switch. + * gnat_ugn.texi: Regenerate. + +2019-08-20 Bob Duff + + * sem_ch13.adb (Object_Size): Give an error for zero. It really + rubs me the wrong way that we don't honor "for T'Object_Size use + 0;", but it's not important enough to fix. In any case, if we're + not going to obey the clause, we should give an error. + +2019-08-20 Bob Duff + + * errout.adb (Error_Msg_Internal): Set Warn_Err in case of + Is_Style_Msg. + * erroutc.adb (Output_Msg_Text): Do Warnings_Treated_As_Errors + processing and [warning-as-error] modification for style + messages. Clean up code, simplify, remove unnecessary block + statement, add renaming of table entry. + * erroutc.ads (Warning_Treated_As_Error): Fix comment: no such + thing as Set_Warning_As_Error. + * opt.ads: Clean up comments and move related declarations near + each other. + * par-prag.adb: Process Warning_As_Error. This is necessary + because many style warning happen during parsing. + * sem_prag.adb: Use new Acquire_Warning_Match_String. + * sem_util.ads, sem_util.adb (Acquire_Warning_Match_String): New + function shared by par-prag.adb and sem_prag.adb. Replaces the + procedure in sem_prag.adb. Avoid use of global variables. + * stringt.ads, stringt.adb (To_String): New function to convert + String_Id to String. + * doc/gnat_rm/implementation_defined_pragmas.rst: Document the + new feature. + * gnat_rm.texi: Regenerate. + +2019-08-20 Eric Botcazou + + * lib.ads: Add with clause for GNAT.HTable. + Add pragma Inline for Is_Loaded and alphabetize the list. + (Unit_Name_Table_Size): New constant. + (Unit_Name_Header_Num): New subtype. + (Unit_Name_Hash): New function declaration. + (Unit_Names): New simple hash table. + (Init_Unit_Name): New procedure declaration. + * lib.adb (Set_Unit_Name): Unregister the old name in the table, + if any, and then register the new name. + (Init_Unit_Name): New procedure. + (Is_Loaded): Reimplement using a lookup in the names table. + (Remove_Unit): Unregister the name. + (Unit_Name_Hash): New function. + * lib-load.adb (Create_Dummy_Package_Unit): Call Init_Unit_Name. + (Load_Unit): Use a lookup in the names table to find out whether + the unit has already been loaded. Call Init_Unit_Name and then + Remove_Unit if the loading has failed. + (Make_Child_Decl_Unit): Call Init_Unit_Name. + (Make_Instance_Unit): Likewise. + * lib-writ.adb (Ensure_System_Dependency): Likewise. + +2019-08-20 Bob Duff + + * sem_ch13.adb (Record_Hole_Check): Initialize After_Last. + +2019-08-20 Piotr Trojanek + + * impunit.adb (Get_Kind_Of_Unit): Revert change for adapting + this routine for gnatprove. + +2019-08-20 Arnaud Charlet + + * doc/gnat_rm/implementation_defined_pragmas.rst: Document + requirements for Pragma Lock_Free. + * gnat_rm.texi: Regenerate. + +2019-08-20 Philippe Gil + + * bindgen.adb (Gen_Main): Set gnat_argc/gnat_argv to argc/argv + only when still uninitialized. + +2019-08-20 Bob Duff + + * libgnat/g-comlin.ads (Exit_From_Command_Line): Fix + documentation for GNAT.Command_Line. + +2019-08-20 Pierre-Marie de Rodat + + PR ada/91492 + * gcc-interface/lang.opt (-fdump-scos): Add missing dot at the + end of the documentation. + +2019-08-20 Richard Sandiford + + * gcc-interface/misc.c (default_pass_by_ref): Update call to + pass_by_reference. + +2019-08-19 Bob Duff + + * doc/gnat_rm/implementation_advice.rst: Fix documentation for + stream oriented attributes. + * gnat_rm.texi: Regenerate. + +2019-08-19 Gary Dismukes + + * einfo.ads (E_Function, E_Procedure): Update comments to + reflect that Renamed_Entity is also used for nongeneric + subprograms. + +2019-08-19 Eric Botcazou + + * sem_prag.adb (Is_Before_First_Decl): Deal with rewritten + pragmas. + +2019-08-19 Bob Duff + + * sem_warn.adb (Warn_On_Unreferenced_Entity): Suppress warning + on formal parameters of dispatching operations. + +2019-08-19 Ed Schonberg + + * sem_res.adb (Resolve_Call): A call to an expression function + freezes when expander is active, unless the call appears within + the body of another expression function, + +2019-08-19 Dmitriy Anisimkov + + * libgnat/s-os_lib.ads, libgnat/s-os_lib.adb (To_Ada, To_C): New + routines. + +2019-08-19 Bob Duff + + * exp_attr.adb (Attribute_Valid): Correct the handling of + private types where the full type is modular. System.Address is + an example. Otherwise, we convert uncheckedly to a signed type, + so we get an incorrect range 0 .. -1, for which all values will + fail. The 'Valid attribute is illegal for such types, but we + generate such illegal attribute_references for 'Valid_Scalars, + and we generate 'Valid_Scalars when the -gnateV switch is used. + Rename Btyp --> PBtyp to avoid hiding the outer Btyp, which was + confusing. + * libgnat/a-except.adb: Set the Exception_Raised component. + Otherwise, we have incorrect reads of invalid data. + +2019-08-19 Pierre-Marie de Rodat + + * libgnat/a-cgaaso.ads, libgnat/a-cgarso.ads, + libgnat/a-cogeso.ads, libgnat/a-contai.ads, + libgnat/a-locale.ads: Import documentation from the RM. + +2019-08-19 Jerome Guitton + + * Makefile.rtl (system.o): New target to add generation of + target properties. + * gcc-interface/Makefile.in (install-gnatlib): Install + ada_target_properties. + +2019-08-19 Eric Botcazou + + * inline.adb (Add_Inlined_Body): Do not special-case instances + that are compilation units. + (Add_Pending_Instantiation): Likewise. + (Instantiate_Body): Skip instantiations that are compilation + units and have already been performed. + * sem_ch12.adb (Needs_Body_Instantiated): Do not special-case + instances that are compilation units. + (Load_Parent_Of_Generic): Be prepared for parent that is a + compilation unit but whose instantiation node has not been + replaced. + +2019-08-19 Eric Botcazou + + * inline.adb (Initialize, Lock): Deal with + Called_Pending_Instantiations. + +2019-08-19 Ed Schonberg + + * sem_ch6.adb (Check_Synchronized_Overriding): Complete + predicate that applies legality check in 9.4 (11.9/2): if an + inherited subprogram is implemented by a protected procedure or + entry, its first paarameter must be out, in_out or + access_to_varible. + +2019-08-19 Javier Miranda + + PR ada/65696 + * exp_atag.ads, exp_atag.adb (Build_Inherit_Predefined_Prims): + Adding formal to specify how many predefined primitives are + inherited from the parent type. + * exp_disp.adb (Number_Of_Predefined_Prims): New subprogram. + (Make_Secondary_DT): Compute the number of predefined primitives + of all tagged types (including tagged types not defined at + library level). Previously we unconditionally relied on the + Max_Predef_Prims constant value when building the dispatch + tables of tagged types not defined at library level (thus + consuming more memory for their dispatch tables than required). + (Make_DT): Compute the number of predefined primitives that must + be inherited from their parent type when building the dispatch + tables of tagged types not defined at library level. Previously + we unconditionally relied on the Max_Predef_Prims constant value + when building the dispatch tables of tagged types not defined at + library level (thus copying more data than required from the + parent type). + +2019-08-19 Bob Duff + + * sem_ch13.adb (Record_Hole_Check): Procedure to check for holes + that incudes processing type extensions. A type extension is + processed by first calling Record_Hole_Check recursively on the + parent type to compute the bit number after the last component + of the parent. + +2019-08-19 Gary Dismukes + + * checks.adb (Length_Mismatch_Info_Message): New function in + Selected_Length_Checks to return a message indicating the + element counts for the mismatched lengths for a failed + compile-time length check. + (Plural_Or_Singular_Ending): Support function in + Length_Mismatch_Info_Message to return either "" or "s", for + concatenating to the end of words. + (Selected_Length_Checks): Pass the result of + Length_Mismatch_Info_Message as an extra warning message to + Compile_Time_Constraint_Error to indicate the mismatched lengths + for a failed compile-time length check. + * sem_util.ads (Compile_Time_Constraint_Error): Add an optional + message formal (Extra_Msg), defaulted to the empty string. + * sem_util.adb (Compile_Time_Constraint_Error): Output an extra + message following the main warning message (when Extra_Msg is + not the empty string). + +2019-08-19 Patrick Bernardi + + * socket.c: Removed the redefinition of getaddrinfo, getnameinfo + and freeaddrinfo to internal VxWorks kernel calls because they + are, well, internal kernel calls and cannot be called from RTPs. + VxWorks provides the necessary components to call these routines + directly. + +2019-08-19 Eric Botcazou + + * exp_dist.adb (Is_Generic_Actual_Subtype): New predicate. + (Build_From_Any_Call, Build_To_Any_Call, Build_TypeCode_Call): + Use it instead of Is_Generic_Actual_Type flag to detect subtypes + representing generic actual types. + +2019-08-19 Ed Schonberg + + * sem_warn.adb (Check_References, Generic_Body_Formal): When a + formal parameter of a generic subprogram is not referenced in + the body, place the corresponding warning on the corresponding + entity in the specification of the generic body, as is done for + non-generic subprograms. + +2019-08-19 Bob Duff + + * errout.ads (Size_Too_Small_Message): New constant. + * errout.adb, freeze.adb, sem_ch13.adb: Use it. + +2019-08-19 Eric Botcazou + + * exp_dist.adb (Build_Package_Stubs): Do not specifically visit + the declarations of an N_Subprogram_Instantiation node. + +2019-08-19 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document missing + metrics switches. + +2019-08-19 Piotr Trojanek + + * sem_ch12.adb (Get_Unit_Instantiation_Node): Simplify Nkind_In + membership test. + * sem.adb (Depends_On_Main): Whitespace cleanup; only assign a + local variable if needed. + +2019-08-19 Claire Dross + + * sem_spark.ads, sem_spark.adb (Is_Pledge_Function): New + parameter of the generic. Function used to decide whether a + function is a pledge function. + (Check_Not_Borrowed): Disable check inside the second parameter + of a pledge function for the path borrowed by the first + parameter. Also disable checks for entities inside a Global + contract. + +2019-08-19 Joffrey Huguet + + * libgnat/a-cfdlli.ads, libgnat/a-cfhama.ads, + libgnat/a-cfinve.ads, libgnat/a-cforma.ads, + libgnat/a-cofove.ads, libgnat/a-cofuma.ads, + libgnat/a-cofuve.ads: Add formal function parameter "=" (L, R : + Element_Type) to the generic packages. + +2019-08-19 Eric Botcazou + + * opt.ads: Clean up left-overs of earlier implementation in + comment: + +2019-08-19 Ed Schonberg + + * sem_ch3.adb (Derived_Enumeration_Type): Do no freeze anonymous + base type if the bounds in the derived type declaration are + literals of the type. + +2019-08-19 Yannick Moy + + * sem_res.adb (Resolve_Call): Check non-aliasing rules before + GNATprove inlining. + +2019-08-19 Eric Botcazou + + * inline.adb (Add_Inlined_Body): Do not add pending + instantiations. + * sem_ch12.adb (Needs_Body_Instantiated): New predicate. + (Analyze_Package_Instantiation): Use it to decide whether to add + a pending instantiation for the body of the package. + +2019-08-19 Olivier Hainque + + * gcc-interface/trans.c (Acc_Loop_to_gnu): Return the openacc + BIND_EXPR node we have constructed on purpose. Remove unused + variable. + +2019-08-19 Pierre-Marie de Rodat + + * gcc-interface/lang.opt (fdump-scos): Define. + * gcc-interface/misc.c (gnat_handle_option): Handle + OPT_fdump_scos. + +2019-08-14 Joffrey Huguet + + * libgnat/a-cofuba.ads: Add a Length attribute to type + Container. Add a type Array_Base which replaces the previous + Elements attribute of Container. + (Content_Init): New subprogram. It is used to initialize the + Base attribute of Container. + * libgnat/a-cofuba.adb (Resize): New subprogram. It is used to + resize the underlying array of a container if necessary. + (=, <=, Find, Get, Intersection, Length, Num_Overlaps, Set, + Union): Update to match changes in type declarations. + (Add): Modify body to damp the time and space cost in a specific + case. + (Content_Init): New subprogram. It is used to initialize the + Base attribute of Container. + (Remove): Modify body to damp the time and space cost in a + specific case. + +2019-08-14 Bob Duff + + * sem_ch13.adb (Get_Alignment_Value): Return 1 for Alignment 0, + and do not give an error. + * doc/gnat_rm/representation_clauses_and_pragmas.rst: Update the + corresponding documentation. + * gnat_rm.texi: Regenerate. + +2019-08-14 Eric Botcazou + + * inline.adb (Add_Pending_Instantiation): Fix off-by-one error + in the comparison against the maximum number of instantiations. + +2019-08-14 Eric Botcazou + + * inline.adb (Add_Pending_Instantiation): Use greater-or-equal + in the comparison against the maximum number of instantiations. + +2019-08-14 Ed Schonberg + + * sem_aux.adb (Next_Rep_Item): If a node in the rep chain + involves a Ghost aspect it may have been replaced by a null + statement; use the original node to find next Rep_Item. + * repinfo.adb (List_Entities): Do not list an Ignored + Ghost_Entity, for which information may have been deleted. + +2019-08-14 Bob Duff + + * sem_prag.ads, sem_prag.adb + (Process_Compile_Time_Warning_Or_Error): In parameterless + version, improve detection of whether we are in a generic unit + to cover the case of an instance within a generic unit. + (Process_Compile_Time_Warning_Or_Error): Rename the + two-parameter version to be + Validate_Compile_Time_Warning_Or_Error, and do not export it. + Issue a warning if the condition is not known at compile time. + The key point is that the warning must be given only for pragmas + deferred to the back end, because the back end discovers + additional values that are known at compile time. Previous + changes in this ticket have enabled this by deferring to the + back end without checking for special cases such as 'Size. + (Validate_Compile_Time_Warning_Or_Error): Rename to be + Defer_Compile_Time_Warning_Error_To_BE. + * warnsw.ads, warnsw.adb (Warn_On_Unknown_Compile_Time_Warning): + Add new switches -gnatw_c and -gnatw_C to control the above + warning. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document new switches. + * gnat_ugn.texi: Regenerate. + +2019-08-14 Eric Botcazou + + * sem_ch12.adb (Might_Inline_Subp): Rework comment and restrict + the shortcut based on Is_Inlined to the back-end inlining case. + +2019-08-14 Bob Duff + + * inline.adb (Check_And_Split_Unconstrained_Function): Ignore + protected functions to get rid of spurious error. The + transformation done by this procedure triggers legality errors + in the generated code in this case. + +2019-08-14 Bob Duff + + * sem_prag.adb (Process_Compile_Time_Warning_Or_Error): Defer + processing to the back end in all cases where the pragma's + condition is not known at compile time during the front end + (except in generics), as opposed to detecting 'Size attributes + and the like. This ensures that we take advantage of whatever + can be compile-time known after running the back end, as opposed + to having the front end guess what the back end can do. Remove + a little duplicated code at the call site. + * gnat1drv.adb (Post_Compilation_Validation_Checks): Unlock the + Elists while in Validate_Compile_Time_Warning_Errors, because it + does analysis and name resolution, which sometimes involves + adding Elists. + +2019-08-14 Eric Botcazou + + * einfo.ads (Is_Called): Document new usage on E_Package + entities. + * einfo.adb (Is_Called): Accept E_Package entities. + (Set_Is_Called): Likewise. + * exp_ch6.adb (Expand_Call_Helper): Move code dealing with + instances for back-end inlining to Add_Inlined_Body. + * inline.ads: Remove with clauses for Alloc and Table. + (Pending_Instantiations): Move to... + * inline.adb: Add with clauses for Alloc, Uintp, Table and + GNAT.HTable. + (Backend_Instances): New variable. + (Pending_Instantiations): ...here. + (Called_Pending_Instantiations): New table. + (Node_Table_Size): New constant. + (Node_Header_Num): New subtype. + (Node_Hash): New function. + (To_Pending_Instantiations): New hash table. + (Add_Inlined_Body): Bail out early for subprograms in the main + unit or subunit. Likewise if the Is_Called flag is set. If the + subprogram is an instance, invoke Add_Inlined_Instance. Call + Set_Is_Called earlier. If the subrogram is within an instance, + invoke Add_Inlined_Instance. Also deal with the case where the + call itself is within an instance. + (Add_Inlined_Instance): New procedure. + (Add_Inlined_Subprogram): Remove conditions always fulfilled. + (Add_Pending_Instantiation): Move the defence against ludicruous + number of instantiations to here. When back-end inlining is + enabled, associate an instantiation with its index in table and + mark a few selected kinds of instantiations as always needed. + (Initialize): Set Backend_Instances to No_Elist. + (Instantiate_Body): New procedure doing the work extracted + from... + (Instantiate_Bodies): ...here. When back-end inlining is + enabled, loop over Called_Pending_Instantiations instead of + Pending_Instantiations. + (Is_Nested): Minor tweak. + (List_Inlining_Info): Also list the contents of + Backend_Instances. + * sem_ch12.adb (Might_Inline_Subp): Return early if Is_Inlined + is set and otherwise set it before returning true. + (Analyze_Package_Instantiation): Remove the defence against + ludicruous number of instantiations. Invoke + Remove_Dead_Instance instead of doing the removal manually if + there is a guaranteed ABE. + +2019-08-14 Gary Dismukes + + * exp_ch3.adb (Predef_Spec_Or_Body): For an equality operation + of an interface type, create an expression function (that + returns False) rather than declaring an abstract function. + * freeze.adb (Check_Inherited_Conditions): Set Needs_Wrapper to + False unconditionally at the start of the loop creating wrappers + for inherited operations. + +2019-08-14 Bob Duff + + * table.adb: Assert that the table is not locked when increasing + Last, even if it doesn't cause reallocation. In other words, + assert that on operations that MIGHT cause reallocation. + * table.ads: Fix comment accordingly. + +2019-08-14 Arnaud Charlet + + * doc/gnat_ugn/gnat_and_program_execution.rst: Remove + documentation of gnatelim. + +2019-08-14 Bob Duff + + * sem_prag.adb (Validate_Compile_Time_Warning_Error): Attach the + warning to the Sloc of the first pragma argument, rather than to + the pragma itself. This is to make pragmas processed after the + back end use the same Sloc as pragmas processed earlier, in the + front end. There's no reason for this discrepancy, and it + hinders further work on this ticket. + +2019-08-14 Bob Duff + + * sem.ads (Inside_A_Generic): Remove the ??? comment. + +2019-08-14 Eric Botcazou + + * inline.ads (Pending_Descriptor): Delete. + * inline.adb (Initialize): Do not initialize it. + * sem_ch12.adb (Delay_Descriptors): Delete. + (Analyze_Package_Instantiation): Call + Set_Delay_Subprogram_Descriptors instead of Delay_Descriptors + throughout. + +2019-08-14 Bob Duff + + * exp_aggr.adb (Init_Hidden_Discriminants): Avoid processing the + wrong discriminant, which could be of the wrong type. + +2019-08-14 Eric Botcazou + + * sem_ch12.adb (Analyze_Instance_And_Renamings): Do not reset + the Is_Generic_Instance flag previously set on the package + generated for the instantiation of a generic subprogram. + +2019-08-14 Ed Schonberg + + * exp_ch4.adb (Expand_N_Quantified_Expression): Freeze + explicitly the type of the loop parameter. + +2019-08-14 Javier Miranda + + * sem_util.adb (New_Copy_Tree.Copy_Node_With_Replacement): + Update the Chars attribute of identifiers. + +2019-08-14 Yannick Moy + + * sem_spark.adb, sem_spark.ads (Is_Legal): New function exposed + for use in GNATprove, to test legality rules not related to + permissions. + (Check_Declaration_Legality): Extract the part of + Check_Declaration that checks rules not related to permissions. + (Check_Declaration): Call the new Check_Declaration_Legality. + (Check_Type_Legality): Rename of Check_Type. Introduce + parameters to force or not checking, and update a flag detecting + illegalities. + (Check_Node): Ignore attribute references in statement position. + +2019-08-14 Yannick Moy + + * sem_spark.adb (Check_Old_Loop_Entry): New procedure to check + correct use of Old and Loop_Entry. + (Check_Node): Check subprogram contracts. + (Check_Pragma): Check Loop_Variant. + (Check_Safe_Pointers): Apply checking to library-level + subprogram declarations as well, in order to check their + contract. + +2019-08-14 Yannick Moy + + * sem_spark.adb (Is_Subpath_Expression): Take into account + conversion and qualification. + +2019-08-14 Eric Botcazou + + * sem_ch7.adb (Install_Private_Declarations) + : Do not rely solely on the + Is_Child_Unit flag on the unit to recurse. + (Uninstall_Declarations) : New + function. Use it to recurse on the private dependent entities + for child units. + +2019-08-14 Javier Miranda + + * exp_aggr.adb (Is_CCG_Supported_Aggregate): Return False for + arrays with bounds not known at compile time. + +2019-08-14 Ed Schonberg + + * sem_util.adb (New_Copy_Tree, Visit_Entity): A quantified + expression includes the implicit declaration of the loop + parameter. When a quantified expression is copied during + expansion, for example when building the precondition code from + the generated pragma, a new loop parameter must be created for + the new tree, to prevent duplicate declarations for the same + symbol. + +2019-08-14 Yannick Moy + + * sem_disp.adb (Check_Dispatching_Operation): Update assertion + for the separate declarations created in GNATprove mode. + * sem_disp.ads (Is_Overriding_Subprogram): Update comment. + * sem_elab.adb (SPARK_Processor): Fix test for checking of + overriding primitives. + +2019-08-14 Eric Botcazou + + * inline.adb (Add_Inlined_Body): Tweak comments. + (List_Inlining_Info): Also list information about non-main + units. + +2019-08-14 Gary Dismukes + + * sem_ch4.adb (Analyze_Selected_Component): In the case where + the prefix is of a concurrent type, and the selected entity + matching the selector is the first private declaration of the + type (such as the first local variable in a task's body), set + Is_Private_Op. + +2019-08-14 Piotr Trojanek + + * einfo.adb (Is_Generic_Actual_Subprogram): Replace repeated + calls to Ekind with Ekind_In. + +2019-08-13 Richard Sandiford + + PR middle-end/91421 + * gcc-interface/trans.c (gigi): Call set_decl_buillt_in_function. + (Call_to_gnu): Use DECL_FE_FUNCTION_CODE instead of DECL_FUNCTION_CODE. + +2019-08-13 Eric Botcazou + + * ali.ads (Linker_Option_Record): Remove Original_Pos component. + * ali.adb (Scan_ALI): Do not set it. + +2019-08-13 Eric Botcazou + + * sem_ch3.adb (Build_Derived_Concurrent_Type): Add a couple of + local variables and use them. When the derived type fully + constrains the parent type, rewrite it as a subtype of an + implicit (unconstrained) derived type instead of the other way + around. + (Copy_And_Build): Deal with concurrent types and use predicates. + (Build_Derived_Private_Type): Build the full derivation if + needed for concurrent types too. + (Build_Derived_Record_Type): Add marker comment. + (Complete_Private_Subtype): Use predicates. + +2019-08-13 Ed Schonberg + + * sem_ch3.adb (Check_Generic_Ancestor): New subprogram, + aubsidiary to Build_Derived_Record_Type. to enforce the rule + that a type extension declared in a generic body cznnot have an + ancestor that is a generic formal (RM 3.9.1 (4/2)). The rule + applies to all ancestors of the type, including interface + progenitors. + +2019-08-13 Eric Botcazou + + * sem_ch3.adb (Build_Underlying_Full_View): Delete. + (Complete_Private_Subtype): Do not set the full view on the + private subtype here. If the full base is itself derived from + private, do not re-derive the parent type but instead constrain + an existing underlying full view. + (Prepare_Private_Subtype_Completion): Do not get to the + underlying full view, if any. Set the full view on the private + subtype here. + (Process_Full_View): Likewise. + * sem_ch12.adb (Check_Generic_Actuals): Also set + Is_Generic_Actual_Type on the full view if the type of the + actual is private. + (Restore_Private_Views): Also reset Is_Generic_Actual_Type on + the full view if the type of the actual is private. + * sem_eval.adb (Subtypes_Statically_Match): Remove bypass for + generic actual types. + +2019-08-13 Javier Miranda + + * sem_res.adb (Resolve_Selected_Component): When the type of the + component is an access to a class-wide type and the type of the + context is an access to a tagged type the relevant type is that + of the component (since in such case we may need to generate + implicit type conversions or dispatching calls). + +2019-08-13 Ed Schonberg + + * exp_aggr.adb (Aggr_Assignment_OK_For_Backend): Preanalyze + expression, rather do a full analysis, to prevent unwanted + removal of side effects which mask the intent of the expression. + +2019-08-13 Eric Botcazou + + * impunit.adb (Non_Imp_File_Names_95): Add + GNAT.Branch_Prediction. + +2019-08-13 Eric Botcazou + + * exp_ch6.adb: Remove with and use clauses for Sem_Ch12. + (Expand_Call_Helper): Swap the back-end inlining case and the + special front-end expansion case. In back-end inlining mode, do + not invoke Add_Inlined_Body unless the call may be inlined. + * inline.ads (Add_Pending_Instantiation): New function moved + from... + * inline.adb (Add_Inlined_Body): Simplify comment. Turn test on + the enclosing unit into assertion. + (Add_Pending_Instantiation): New function moved from... + * sem_ch12.ads (Add_Pending_Instantiation): ...here. + * sem_ch12.adb (Add_Pending_Instantiation): ...here. + +2019-08-13 Eric Botcazou + + * sem.adb (Do_Analyze): Recompute Style_Check_Max_Line_Length + after restoring Style_Max_Line_Length. + +2019-08-13 Arnaud Charlet + + * sem_ch13.adb (Check_Iterator_Functions): Protect against + cascaded errors. + +2019-08-13 Ed Schonberg + + * sem_ch8.adb (Analyze_Subprogram_Renaming): Do no suppress mode + conformance checks on child unit instance that is a compilation + unit. + +2019-08-13 Gary Dismukes + + * exp_dbug.adb (Fully_Qualify_Name): Add full name qualification + for the E_Exception case. + +2019-08-13 Gary Dismukes + + * exp_aggr.adb (Aggr_Size_OK): Compute the aggregate size using + universal arithmetic, to avoid situations where the size + computation overflows. + +2019-08-13 Justin Squirek + + * repinfo.adb (List_Scalar_Storage_Order): Modify conditionals + for displaying ordering to always be triggered when -gnatR4 is + in effect. + +2019-08-13 Justin Squirek + + * aspects.adb, aspects.ads: Register new aspect. + * par-prag.adb (Prag): Register new pragma + * sem_ch13.adb (Analyze_Aspect_Specifications): Add processing + for new aspect similar to Aspect_Max_Entry_Queue_Length. + * sem_prag.adb, sem_prag.ads (Analyze_Pragma): Register new + pragma and set it to use the same processing as + Pragma_Max_Queue_Length. + * snames.ads-tmpl: Move definition of + Name_Max_Entry_Queue_Length so that it can be processed as a + pragma in addition to a restriction and add an entry for the + pragma itself. + +2019-08-13 Yannick Moy + + * sem_ch4.adb (Analyze_Allocator): Do not insert subtype + declaration for allocator inside a spec expression. + +2019-08-13 Yannick Moy + + * sem_res.adb (Resolve_Call): Do not inline calls inside record + types. + +2019-08-13 Eric Botcazou + + * sem_ch4.adb (Analyze_One_Call): Remove bypass for type + mismatch in nested instantiations. + * sem_ch8.adb (Find_Nearer_Entity): New function. + (Find_Renamed_Entity): Use it to disambiguate the candidates for + the renaming generated for an instantiation when it is + ambiguous. + +2019-08-13 Eric Botcazou + + * gnat1drv.adb (Adjust_Global_Switches): Do not set + Back_End_Inlining in ASIS mode either. + +2019-08-13 Olivier Hainque + + * libgnat/s-win32.ads: Define size_t and fix the MapViewOfFile + binding to use it instead of DWORD for the dwNumberOfBytesToMap + argument. + * libgnat/g-sercom__mingw.adb (Read): State which definition of + size_t to fetch in call to Last_Index. + +2019-08-13 Arnaud Charlet + + * gcc-interface/Make-lang.in: Remove unused TRACE variable. Pass + LN_S to relevant gnatlib targets. + * gcc-interface/Makefile.in: Systematically pass LN_S to + relevant gnatlib targets. + +2019-08-13 Yannick Moy + + * sem_dim.adb (Analyze_Dimension, + Analyze_Dimension_Array_Aggregate, Analyze_Dimension_Call, + Analyze_Dimension_Extension_Or_Record_Aggregate): Return + immediately when inside an inlined body. + * sem_res.adb (Resolve_Call): Remove special checking now done + inside Analyze_Dimension_Call. + +2019-08-13 Justin Squirek + + * exp_ch4.adb (Expand_N_Allocator): Add condition to detect + library-level object declarations + +2019-08-13 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst + (-gnateT): Document Double_Float_Alignment parameter and fix + description of Double_Scalar_Alignment parameter. + * gnat_ugn.texi: Regenerate. + +2019-08-13 Eric Botcazou + + * exp_ch6.adb (Expand_Call_Helper): If back-end inlining is + enabled, also instantiate the body of a generic unit containing + a subprogram subject to aspect/pragma Inline_Always at + optimization level zero. + * sem_ch12.adb (Might_Inline_Subp): Minor tweak. + (Analyze_Package_Instantiation): Do not instantiate the package + body because of inlining considerations if the instantiation is + done in a generic unit. Move around similar condition involving + the main unit. Add test on Back_End_Inlining to processing for + front-end inlining. + +2019-08-13 Javier Miranda + + * exp_disp.adb (Make_Secondary_DT): Handle record type + derivations that have interface components located at fixed + positions and interface components located at variable offset. + The offset of components located at fixed positions is computed + using the dummy object (similar to the case where all the + interface components are located at fixed positions). + (Make_DT): Build the dummy object for all tagged types that + implement interface types (that is, build it also for types with + variable size components), and use the dummy object to compute + the offset of all tag components located at fixed positions when + initializing the Interface_Table object. + +2019-08-13 Justin Squirek + + * gnatcmd.adb (GNATCmd): Add constant for new compiler switch + --help-ada, and include usage subprogram. Add line to usage help + explaining the new flag. + (GNATCmd_Usage): Rename from locally declared Usage so as not to + confuse with the newly imported version. Add new argument case + for --help-ada and add bug report email to implicit display of + help without the --help flag so as to unify output between the + two cases. + +2019-08-13 Dmitriy Anisimkov + + * libgnat/g-comlin.adb (Getopt): Quote unrecognized switch in + Invalid_Switch exception message. + +2019-08-13 Yannick Moy + + * sem_util.adb (Traverse_More_Func): Take into account + Loop_Actions inside N_Iterated_Component_Association nodes. + * sinfo.ads: Document correctly Loop_Actions as a field of nodes + of kind N_Iterated_Component_Association. + +2019-08-13 Claire Dross + + * libgnat/a-cfinve.adb, libgnat/a-cofove.adb (Find_Index, + Reverse_Find_Index): Use bigger type to avoid range check + failure at the last loop iteration. + +2019-08-12 Dmitriy Anisimkov + + * libgnat/g-socket.adb (Is_IPv6_Address): Check that no less + then 2 colons in IPv6 numeric address. + +2019-08-12 Dmitriy Anisimkov + + * libgnat/g-comlin.ads, libgnat/g-comlin.adb (Getopt): Add + parameter Quiet. Need to do not output error messages to + console. Invalid_Switch exception generation surrounded by an + error message. + +2019-08-12 Ed Schonberg + + * exp_ch6.adb (Expand_Actuals. Add_Call_By_Copy_Code): Add code + to generate proper checks when an actual for an in-out or out + parameter has a non-null access type. No constraints are + applied to an inbound access parameter, but on exit a not-null + check must be performed if the type of the actual requires it. + +2019-08-12 Ed Schonberg + + * sem_util.adb (Is_Expaned_Priority_Attribute): Check whether + call comes from a rewritten attribute before comparing name with + Get_Ceiling run-time subprogram. + +2019-08-12 Eric Botcazou + + * exp_util.ads (Component_May_Be_Bit_Aligned): Small comment + tweaks. + (Possible_Bit_Aligned_Component): Likewise. + (Type_May_Have_Bit_Aligned_Components): Likewise. + * exp_util.adb (Component_May_Be_Bit_Aligned): Likewise. + (Possible_Bit_Aligned_Component): Likewise. + (Type_May_Have_Bit_Aligned_Components): Likewise. + +2019-08-12 Eric Botcazou + + * exp_ch4.adb (Expand_N_Op_Eq): Expand the array equality if + either operand is a possibly unaligned slice. + * exp_ch6.adb (Expand_Simple_Function_Return): Do not generate a + copy for a possibly unaligned object if it is represented as a + scalar. + * exp_util.adb (Is_Possibly_Unaligned_Slice): Do not always + return false if the target doesn't have strict alignment. + +2019-08-12 Bob Duff + + * sem_ch12.adb (Instantiate_Package_Body): Remove suppression of + checks in instances of internal units. + * sem_ch6.adb (Analyze_Function_Return): Do not generate a + constraint check on an extended_return_statement if the subtype + of the return object in the statement is identical to the return + subtype of the function. + +2019-08-12 Bob Duff + + * libgnat/a-cbmutr.adb (Is_Reachable): Declare Idx to be of the + base subtype. Clearly it makes no sense to loop "while Idx >= + 0", if Idx is of a nonnegative subtype. + +2019-08-12 Bob Duff + + * libgnat/a-tifiio.adb (Put_Scaled): Prevent AA from being + negative, since Field is range 0 .. something. + +2019-08-12 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst (gnatmetric, gnatpp, + gnatstub): Remove documentation for Ada language version + switches, and note that they are no longer needed. + +2019-08-12 Gary Dismukes + + * sem_ch5.adb (Prepare_Param_Spec_Loop): Set the parents of the + copied low and high bounds in the case where the loop range is + given by a discrete_subtype_indication, to prevent hanging (or + Assert_Failure) in Insert_Actions. + +2019-08-12 Ed Schonberg + + * sem_ch6.adb (heck_Untagged_Equality): Verify that user-defined + equality has the same profile as the predefined equality before + applying legality rule in RM 4.5.2 (9.8). + +2019-08-12 Bob Duff + + * libgnat/a-except.ads: Update obsolete comment, still making + clear that this is a variant. Add explicit default for Id + component of Exception_Occurrence, because that value is used. + Define Null_Occurrence less redundantly. + * libgnat/a-einuoc.adb: Minor simplification of code. + +2019-08-12 Justin Squirek + + * libgnat/a-dhfina.adb, libgnat/a-dhfina.ads (Is_Simple_Name, + Is_Root_Directory, Is_Parent_Directory, + Is_Current_Directory_Name, Is_Relative_Name, Initial_Directory, + Relative_Name, Compose): Add implementation and documentation. + * libgnat/a-direct.adb (Containing_Directory): Modify routine to + use routines from Ada.Directories.Hierarchical_File_Names and + remove incorrect special case for parent directories. + (Fetch_Next_Entry): Add check for current directory and parent + directory and ignore them under certain circumstances. + (Simple_Nmae): Add check for null result from + Simple_Name_Internal and raise Name_Error. + (Simple_Name_Internal): Add explicit check for root directories, + sanitize trailing directory separators, and modify behavior so + that current and parent directories are considered valid + results. + * Makefile.rtl: Add entry to GNATRTL_NONTASKING_OBJS. + +2019-08-12 Eric Botcazou + + * freeze.adb (Freeze_Entity): Give the same error for an + Object_Size clause on a variable-sized type as for a Size + clause. + +2019-08-12 Gary Dismukes + + * sem_prag.adb (Analyze_Pragma, Pragma_Suppress_Initialization): + For private types, set the Suppress_Initialization flag on the + Full_View of the entity rather than the entity's base type. + +2019-08-12 Yannick Moy + + * aspects.adb, aspects.ads (Aspect_No_Caching): New aspect. + * contracts.adb, contracts.ads (Add_Contract_Item): Add handling + of No_Caching. + (Analyze_Object_Contract): Add handling of No_Caching. + * einfo.adb, einfo.ads + (Get_Pragma): Add handling of No_Caching. + * doc/gnat_rm/implementation_defined_aspects.rst, + doc/gnat_rm/implementation_defined_pragmas.rst: Document new + aspect/pragma. + * gnat_rm.texi: Regenerate. + * par-prag.adb (Prag): New pragma Pragma_No_Caching. + * sem_ch13.adb (Analyze_Aspect_Specifications, + Check_Aspect_At_Freeze_Point): Add handling of No_Caching. + * sem_prag.adb (Analyze_Pragma): Deal with pragma No_Caching. + * sem_prag.ads (Analyze_External_Property_In_Decl_Part): Now + applies to No_Caching. + * sem_util.adb, sem_util.ads (Is_Effectively_Volatile): Add + handling of No_Caching. + (No_Caching_Enabled): New query function. + * snames.ads-tmpl: New names for pragma. + +2019-08-12 Yannick Moy + + * sem_util.adb, sem_util.ads (Traverse_More_Func, + Traverse_More_Proc): Add formal parameter for Itypes traversal. + +2019-08-12 Yannick Moy + + * exp_attr.adb, exp_attr.ads (Expand_Size_Attribute): New + procedure to share part of the attribute expansion with + GNATprove mode. + (Expand_N_Attribute_Reference): Extract part of the + Size/Object_Size expansion in the new procedure + Expand_Size_Attribute. + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand + Size/Object_Size attributes using the new procedure + Expand_Size_Attribute. + +2019-08-12 Yannick Moy + + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Only + expand Enum_Rep attribute when its parameter is a literal. + +2019-08-12 Justin Squirek + + * sem_eval.adb (Check_Non_Static_Context): Add a condition to + determine if a range violation constitues a warning or an error. + (Out_Of_Range): Add a condition to determine if a range + violation constitues a warning or an error. + +2019-08-12 Eric Botcazou + + * exp_ch4.adb (Real_Range_Check): Do not rewrite the conversion + node but its expression instead, after having fetched its + current value. Clear the Do_Range_Check flag on entry. Return + early for a rewritten float-to-float conversion. Remove + redundant local variable. Suppress all checks when inserting + the temporary and do not reanalyze the node. + +2019-08-12 Eric Botcazou + + * sprint.ads: Minor comment tweak. + +2019-08-12 Eric Botcazou + + * checks.adb (Insert_Valid_Check): Do not retrieve the + Do_Range_Check flag from the Original_Node but from the + Validated_Object. Remove useless bypass for floating-point + types. + +2019-08-12 Yannick Moy + + * sem_util.adb, sem_util.ads (Traverse_More_Func, + Traverse_More_Proc): New traversal subprograms. + +2019-08-12 Jerome Lambourg + + * libgnarl/s-taprop__vxworks.adb (Abort_Handler): Only call + s-tpopsp.Self when actually needed. + +2019-08-12 Eric Botcazou + + * exp_ch4.adb (Discrete_Range_Check): Return if checks are + suppressed. + +2019-08-12 Eric Botcazou + + * sem_res.adb: Add with & use clause for Sem_Mech and + alphabetize. + (Resolve_Actuals): Do not apply a scalar range check for the + source of a conversion whose result is passed by reference to a + valued procedure. + +2019-08-12 Eric Botcazou + + * checks.adb (Insert_Valid_Check): Reset the Do_Range_Check flag + on the validated object. + * exp_ch6.adb (Add_Call_By_Copy_Code): Reset the Do_Range_Check + flag on the actual here, as well as on the Expression if the + actual is a N_Type_Conversion node. + (Add_Validation_Call_By_Copy_Code): Generate the incoming range + check if needed and reset the Do_Range_Check flag on the + Expression if the actual is a N_Type_Conversion node. + (Expand_Actuals): Do not reset the Do_Range_Check flag here. + Generate the incoming range check for In parameters here instead + of... + (Expand_Call_Helper): ...here. Remove redudant condition. + * sem_res.adb (Resolve_Actuals): Use local variable A_Typ and + remove obsolete comments. + (Resolve_Type_Conversion): Do not force the Do_Range_Check flag + on the operand if range checks are suppressed. + +2019-08-12 Eric Botcazou + + * checks.adb (Activate_Range_Check): Remove redundant argument. + (Generate_Range_Check): Likewise. + (Apply_Float_Conversion_Check): Reset the Do_Range_Check flag on + entry and remove redundant condition. + +2019-08-02 Alexandre Oliva + + * libgnat/a-exexpr.adb (Begin_Handler_v1, End_Handler_v1): New. + (Claimed_Cleanup): New. + (Begin_Handler, End_Handler): Document. + * gcc-interface/trans.c (gigi): Switch to exception handler + ABI #1. + (Exception_Handler_to_gnu_gcc): Save the original cleanup + returned by begin handler, pass it to end handler, and use + EH_ELSE_EXPR to pass a propagating exception to end handler. + (gnat_to_gnu): Leave the exception pointer alone for reraise. + (add_cleanup): Handle EH_ELSE_EXPR, require it by itself. + +2019-07-23 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations, + Freeze_Entity_Checks): Include Aspect_CPU with other aspects + whose expresssion may depend on a discriminant, and thus require + that components of the type be made visible. + +2019-07-23 Eric Botcazou + + * checks.adb (Convert_And_Check_Range): Add Suppress parameter + and pass it in the call to Insert_Actions. Rename local + variable. + (Generate_Range_Check): Minor comment fixes. Pass Range_Check + in the first call to Convert_And_Check_Range and All_Checks in + the second call. + * exp_ch4.adb (Expand_N_Type_Conversion): Reset the + Do_Overflow_Check flag in the float-to-float case too if there + is also a range check. + +2019-07-23 Eric Botcazou + + * checks.adb (Activate_Overflow_Check): Remove redundant + argument. + * exp_ch4.adb (Discrete_Range_Check): Reset the overflow flag. + (Expand_N_Type_Conversion): Do not reset it here. + +2019-07-23 Eric Botcazou + + * repinfo.adb (List_Component_Layout): Pass Decimal to UI_Write. + (Write_Val): Likewise. + +2019-07-23 Ed Schonberg + + * aspects.ads: New table Operational_Aspect, used to distinguish + between aspects that are view-specific, such as those related to + iterators, and representation aspects that apply to all views of + a type. + * aspects.adb (Find_Aspect): If the aspect being sought is + operational, do not ecamine the full view of a private type to + retrieve it. + * sem_ch5.adb (Analyze_Iterator_Specification): Improve error + message when the intended domain of iteration does not implement + the required iterator aspects. + +2019-07-23 Yannick Moy + + * sem_spark.ads (Is_Local_Context): New function. + * sem_spark.adb (Check_Declaration): Issue errors on violations + of SPARK RM 3.10(4) + (Process_Path): Do not issue error on borrow/observe during + elaboration, as these are caught by the new rule. + +2019-07-23 Yannick Moy + + * exp_ch7.adb (Create_Finalizer): Force finalizer not to be + Ghost enabled. + * exp_dbug.adb (Get_External_Name): Explain special case of + Ghost finalizer. + +2019-07-22 Eric Botcazou + + * repinfo.adb (List_Entities): Also list compiled-generated + types present as Etype of objects. + +2019-07-22 Eric Botcazou + + * sinfo.ads: Update the documentation about the + Do_Division_Check, Do_Overflow_Check and Do_Range_Check flags. + +2019-07-22 Eric Botcazou + + * exp_ch4.adb (Expand_N_Type_Conversion): Beef up comment. + (Fixup_Universal_Fixed_Operation): Set the base type instead of + the type of the enclosing type conversion on the operation. + +2019-07-22 Ed Schonberg + + * exp_ch4.adb (Expand_N_In): Do not suggest the use of attribute + 'Valid as a replacement for a range check on a discrete type + when the bounds of the range are given by type conversions, + because in such a case there are distinct types involved and the + subbested attribute replacement would be misplaced. + +2019-07-22 Yannick Moy + + * sem_spark.adb (Get_Root_Object, Is_Path_Expression, + Is_Subpath_Expression): Add parameter Is_Traversal to adapt + these functions to the case of paths returned from a traversal + function. + (Read_Indexes): Handle the case of an if-expression or + case-expression. + (Check_Statement): Check Emit_Messages only when issuing an + error message. This is important as Emit_Messages may store the + information that an error was detected. + +2019-07-22 Eric Botcazou + + * checks.adb (Apply_Type_Conversion_Checks): Do not set + Do_Range_Check flag on conversions from fixed-point types + either. + * exp_attr.adb: Add use and with clause for Expander. + (Expand_N_Attribute_Reference) : Set + the Conversion_OK flag and do not generate overflow/range checks + manually. + * exp_ch4.adb (Expand_N_Qualified_Expression): Remove + superfluous clearing of Do_Range_Check flag. + (Discrete_Range_Check): New procedure to generate a range check + for discrete types. + (Real_Range_Check): Remove redundant local variable and adjust. + Remove useless shortcut. Clear Do_Range_Check flag on all + paths. + (Expand_N_Type_Conversion): Remove redundant test on + Conversion_OK. Call Discrete_Range_Check to generate range + checks on discrete types. Remove obsolete code for + float-to-integer conversions. Add code to generate range checks + for conversions involving fixed-point types. + +2019-07-22 Eric Botcazou + + * sprint.ads: Fix pasto in comment. + +2019-07-22 Javier Miranda + + * sem_res.adb (Resolve_Actuals): Replace code that displaces the + pointer to an allocated object to reference its secondary + dispatch table by a type conversion (which takes care of + handling all cases). + +2019-07-22 Eric Botcazou + + * sprint.adb (Sprint_Node_Actual) + : Swap a couple of spaces. + (Write_Itype): Minor consistency fixes throughout. Add support + for printing ordinary and decimal fixed-point types and + subtypes. + +2019-07-22 Eric Botcazou + + * exp_attr.adb (Expand_Loop_Entry_Attribute): Beef up comment. + +2019-07-22 Ed Schonberg + + * libgnat/s-valboo.ads, libgnat/s-valcha.ads, + libgnat/s-valdec.ads, libgnat/s-valenu.ads, + libgnat/s-valint.ads, libgnat/s-vallld.ads, + libgnat/s-vallli.ads, libgnat/s-valllu.ads, + libgnat/s-valrea.ads, libgnat/s-valuns.ads, + libgnat/s-valwch.ads: Change categorization of packages that + implement attribute 'Value from Pure to Preelaborate, to prevent + undesirable optimizations when the evaluation of the attribute + raises Constraint_Error, but subsequent use of the result of + this evsaluation is removed by a subsequent optimization. + +2019-07-22 Ed Schonberg + + * sem_warn.adb (Check_References): Do not emit s warning on a + referenced entity with no explicit assignment if the type of the + entity has Preelaborable_Initialixation, such as + Exception_Occurrence. + +2019-07-22 Javier Miranda + + * exp_ch4.adb (Size_In_Storage_Elements): Improve the expansion + to handle array indexes that are modular type. + (Expand_N_Allocator): For 32-bit targets improve the generation + of the runtime check associated with large arrays supporting + arrays initialized with a qualified expression. + * libgnat/s-imenne.adb (Image_Enumeration_8, + Image_Enumeration_16, Image_Enumeration_32): Define the index of + Index_Table with range Natural'First .. Names'Length since in + the worst case all the literals of the enumeration type would be + single letter literals and the Table built by the frontend would + have as many components as the length of the names string. As a + result of this enhancement, the internal tables declared using + Index_Table have a length closer to the real needs, thus + avoiding the declaration of large arrays on 32-bit CCG targets. + +2019-07-22 Yannick Moy + + * sem_ch3.adb (Constrain_Access): Issue a message about ignored + constraint. + +2019-07-22 Eric Botcazou + + * sem_ch8.adb (End_Use_Type): Reset the In_Use flag on the + class-wide type if the type is tagged. + (Use_One_Type): Add commentary on the handling of the class-wide + type. + +2019-07-22 Eric Botcazou + + * einfo.ads (Is_For_Access_Subtype): Delete. + (Set_Is_For_Access_Subtype): Likewise. + * einfo.adb (Is_For_Access_Subtype): Likewise. + (Set_Is_For_Access_Subtype): Likewise. + (Write_Entity_Flags): Do not write Is_For_Access_Subtype. + * exp_ch4.adb (Expand_N_Selected_Component): Do not deal with + it. + * exp_spark.adb (Expand_SPARK_N_Selected_Component): Likewise. + * sem_ch4.adb (Analyze_Explicit_Dereference): Likewise. + * sem_ch3.adb (Build_Discriminated_Subtype): Do not build a + special private subtype for access-to-record subtypes. + +2019-07-22 Eric Botcazou + + * sem_ch3.adb (Complete_Private_Subtype): Rework the setting of + the Etype of the full view for full base types that cannot + contain any discriminant. Remove code and comment about it in + the main path. + +2019-07-22 Ed Schonberg + + * sem_ch3.adb (Convert_Bound): Subsidiary of + Floating_Point_Type_Declaration, to handle properly range + specifications with bounds that may include static constants of + a given type rather than real literals. + +2019-07-22 Eric Botcazou + + * sem_aggr.adb (Rewrite_Bound): Be prepared for discriminals + too. + (Rewrite_Range;): Minor tweak. + (Resolve_Record_Aggregate): For a component with default + initialization whose expression is an array aggregate, also + rewrite the bounds of the component associations, if any. + +2019-07-22 Gary Dismukes + + * exp_ch5.adb (Expand_N_Case_Statement): In the case where a + case statement is rewritten as an equivalent if statement, + inherit the From_Condition_Expression flag from the case + statement. + +2019-07-22 Eric Botcazou + + * sem_ch8.adb (Check_Constrained_Object): Further extend the + special optimization to all limited types. + +2019-07-22 Eric Botcazou + + * exp_attr.adb (Expand_N_Attribute_Reference) + : Set No_Truncation on the + N_Unchecked_Type_Conversion built around the argument passed to + the attribute. + +2019-07-22 Nicolas Roche + + * libgnat/s-valrea.adb (Scan_Real): Ignore non significative + digits to avoid converging to infinity in some cases. + +2019-07-22 Eric Botcazou + + * libgnat/g-encstr.adb (Encode_Wide_String): Fix oversight. + (Encode_Wide_Wide_String): Likewise. + +2019-07-22 Eric Botcazou + + * sem_warn.adb (Find_Var): Bail out for a function call with an + Out or In/Out parameter. + +2019-07-22 Nicolas Roche + + * terminals.c (__gnat_tty_waitpid): Support both blocking and + not blocking mode. + * libgnat/g-exptty.ads (Is_Process_Running): New function. + * libgnat/g-exptty.adb (Close): Don't try to interrupt/terminate + a process if it is already dead. + +2019-07-22 Ed Schonberg + + * freeze.adb (Freeze_Fixed_Point_Type): When freezing a + fixed-point subtype, check whether the parent type declarastion + includes an aspect specification for the 'Small type attribute, + and inherit the specified value. + +2019-07-22 Javier Miranda + + * freeze.adb (Freeze_Subprogram): Check that C++ constructors + must have external or link name. + +2019-07-22 Ed Schonberg + + * sem_res.adb (Resolve_Selected_Component): If the prefix has a + deferred reference, generate the correct reference now, to + indicate that the previous assignment is used. This prevents + spurious warnings on useless assignments when compiling with all + warnings enabled. when there is a subsequent call in the same + stqtement list, in which the prefix of the selected component is + the actual for an out parameter. + +2019-07-22 Eric Botcazou + + * exp_attr.adb (Expand_Loop_Entry_Attribute): Copy the condition + of a while loop instead of simply relocating it. + +2019-07-18 Arnaud Charlet + + * Makefile.rtl, expect.c, env.c, aux-io.c, mkdir.c, initialize.c, + cstreams.c, raise.c, tracebak.c, adadecode.c, init.c, raise-gcc.c, + argv.c, adaint.c, adaint.h, ctrl_c.c, sysdep.c, rtinit.c, cio.c, + seh_init.c, exit.c, targext.c: Introduce a "STANDALONE" mode where C + runtime files do not have any dependency on GCC include files. + Remove unnecessary includes. + Remove remaining references to VMS in runtime C file. + * runtime.h: new File. + +2019-07-13 Andreas Schwab + + * Makefile.rtl: Use g-sercom__linux.adb for all linuxes. + +2019-07-11 Piotr Trojanek + + * lib-writ.adb (Ensure_System_Dependency, + Up_To_Date_ALI_File_Exists, Write_ALI): Replace low-level access + to table with a high-level query. + +2019-07-11 Piotr Trojanek + + * checks.adb: Fix typo in comment. + * sem.adb (Semantics): Avoid repeated calls to + In_Extended_Main_Source_Unit by reusing an already-cached + result. + * sem_util.adb (First_Global): Fix style. + +2019-07-11 Yannick Moy + + * sem_res.adb (Resolve_Call): Do not perform dimensionality + checking on inlined bodies. + +2019-07-11 Yannick Moy + + * debug.adb: Flip meaning of debug switch -gnatdF. + +2019-07-11 Yannick Moy + + * sem_eval.adb (Is_Same_Value): Add special case for rewritten + Loop_Entry attribute. + +2019-07-11 Claire Dross + + * gnat1drv.adb: SPARK checking rules for pointer aliasing are + moved to GNATprove backend. + * sem_spark.ads, sem_spark.adb (Sem_SPARK): Is now a generic + unit. Takes as parameters: + - Retysp which is used to query the most underlying type + visible in SPARK. We do not introduce aliasing checks for + types which are not visibly deep. + - Component_Is_Visible_In_SPARK is used to avoid doing pointer + aliasing checks on components which are not visible in SPARK. + - Emit_Messages returns True in the second phase of SPARK + analysis. Error messages for failed aliasing checks are only + output in this case. + Additionally, errors on constructs not supported in SPARK are + removed as duplicates of marking errors. Components are stored + in the permission map using their original component to avoid + inconsistencies between components of different views of the + same type. + (Check_Expression): Handle delta constraints. + (Is_Deep): Exported so that we can check for SPARK restrictions + on deep types inside SPARK semantic checkings. + (Is_Traversal_Function): Exported so that we can check for SPARK + restrictions on traversal functions inside SPARK semantic + checkings. + (Check_Call_Statement, Read_Indexes): Check wether we are + dealing with a subprogram pointer type before querying called + entity. + (Is_Subpath_Expression): Image attribute can appear inside a + path. + (Check_Loop_Statement): Correct order of statements in the loop. + (Check_Node): Ignore raise nodes. + (Check_Statement): Use Last_Non_Pragma to get the object + declaration in an extended return statement. + +2019-07-11 Patrick Bernardi + + * bindgen.adb (Gen_Main): Do not generate a reference to + Ada_Main_Program_Name when the Minimal_Binder flag is set. + (Gen_Output_File_Ada): Do not output GNAT_Version and + Ada_Main_Program_Name info if Minimal_Binder flag is set. + * bindusg.adb: Add documentation for new -minimal switch. + * gnatbind.adb (Scan_Bind_Arg): Scan -minimal switch. + * opt.ads: Add new global flag Minimal_Binder to indicate if the + binder should not produce global variables. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Update documentation with new binder -minimal switch. + * gnat_ugn.texi: Regenerate. + +2019-07-11 Eric Botcazou + + * Makefile.rtl: Add warning note about compilation flags and + capitalize. + +2019-07-11 Ed Schonberg + + * exp_ch9.adb (Expand_N_Protected_Type_Declaaration): New + subsidiary routine Replace_Access_Definition, to handle properly + a protected type PT one of whose private components is of type + access PT. + +2019-07-11 Dmitriy Anisimkov + + * libgnat/g-socket.ads (Level_Type): Add enumerators for + IP_Protocol_For_ICMP, IP_Protocol_For_IGMP, + IP_Protocol_For_RAW_Level. + * libgnat/g-socket.adb (Levels): Handle them. + * s-oscons-tmplt.c: Import socket protocols defined in + netinet/in.h. + +2019-07-11 Claire Dross + + * libgnat/a-cfhama.adb, libgnat/a-cfhase.adb (Free): Do not + reset the Has_Element flag if no element is freed. + +2019-07-11 Arnaud Charlet + + * errno.c: Remove obsolete support for MaRTE OS. + +2019-07-11 Ed Schonberg + + * exp_ch4.adb (Expand_N_Type_Conversion): If a predicate check + is generated, analyze it with range check suppressed, because + that check has been previously applied. + * exp_ch5.adb (Expand_N_Assignment_Statement): If the RHS is a + type conversion to the type of the LHS, do not apply a predicate + check to the RHS because it will have been generated already + during its expansion. + * exp_ch6.adb (Can_Fold_Predicate_Call): Extend processing to + handle a predicate check on a constant entity whose value is + static. + +2019-07-11 Hristian Kirtchev + + * bindo.adb: Remove the documentation of switch -d_N because it + is no longer in use. + * bindo-graphs.ads, bindo-graphs.adb (Is_Spec_Before_Body_Edge): + New routine. + * bindo-writers.adb (Write_Dependency_Edge): Add the missing + case of a spec-before-body edge. + +2019-07-11 Dmitriy Anisimkov + + * libgnat/g-socket.ads (Mode_Type): Add a Socket_Raw enumerator. + * libgnat/g-socket.adb (Modes): Handle Socket_Raw. + +2019-07-11 Justin Squirek + + * exp_ch9.adb (Build_Private_Protected_Declaration): Add + exception for the moving of pragmas to internally generated + specs for pragma Unreferenced. + +2019-07-11 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Fix inconsistent + documentation for gnatmetric. + * gnat_ugn.texi: Regenerate. + +2019-07-11 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's + --spaces-only switch. + +2019-07-11 Hristian Kirtchev + + * sem_util.adb (Null_Status): Assume that an erroneous construct + has an undefined null status. + +2019-07-11 Hristian Kirtchev + + * checks.adb, exp_ch6.adb, gnat1drv.adb, sem_aux.adb, + sem_ch2.adb, sem_ch8.adb, sem_res.adb: Minor reformatting. + +2019-07-11 Hristian Kirtchev + + * sem_ch8.adb (Analyze_Object_Renaming): Obtain the object being + renamed using routine Get_Object_Name which takes care of + various name forms. + (Get_Object_Name): New routine. + +2019-07-11 Ed Schonberg + + * exp_ch6.adb (Can_Fold_Predicate_Call): New function, + subsidiary of Expand_Call_Helper, to compute statically a + predicate check when the argument is a static integer. + +2019-07-11 Hristian Kirtchev + + * sem_res.adb (Resolve_Op_Not): Do not rewrite an equality + operator into a function call when the operator is intrinsic. + +2019-07-11 Thomas Quinot + + * sem_prag.adb (Analyze_Pragma, case pragma Check): Do not call + Set_SCO_Pragma_Enabled for the dynamic predicate case. + +2019-07-11 Hristian Kirtchev + + * exp_util.ads, exp_util.adb (Needs_Finalization): Move to + Sem_Util. + * sem_ch9.adb (Analyze_Protected_Definition): Code cleanup. Mark + the protected type as having controlled components when it + contains at least one such component. + * sem_util.ads, sem_util.adb (Needs_Finalization): New + function. + +2019-07-11 Eric Botcazou + + * alloc.ads (Rep_JSON_Table_Initial): New constant. + (Rep_JSON_Table_Increment): Likewise. + * debug.adb: Document -gnatd_j switch. + * gcc-interface/Make-lang.in (GNAT_ADA_OBJS): Add + repinfo-input.o. + * gnat1drv.adb: Add with clause for Repinfo.Input. + Add with and use clauses for Sinput. + (Read_JSON_Files_For_Repinfo): New procedure. + (Gnat1drv1): Deal with -gnatd_j switch. + * repinfo-input.ad[sb]: New unit. + * snames.ads-tmpl (Name_Discriminant): New constant. + (Name_Operands): Likewise. + +2019-07-11 Justin Squirek + + * checks.adb (Apply_Accessibility_Check): Add check for constant + folded conditions on accessibility checks. + +2019-07-11 Arnaud Charlet + + * libgnarl/g-thread.ads, libgnarl/g-thread.adb (Get_Thread): + Update comments. Add new version taking a Task_Id. + +2019-07-11 Hristian Kirtchev + + * bindo.adb: Update the section of switches and debugging + elaboration issues. + * bindo.ads: Add type Elaboration_Phase. + * bindo-augmentors.adb: Add use clause for + Bindo.Writers.Phase_Writers. + (Augment_Library_Graph): Signal the start and end of the + aubmentation phase. + * bindo-builders.adb: Add with and use clause for Bindo.Writers. + Add use clause for Bindo.Writers.Phase_Writers. + (Build_Invocation_Graph): Signal the start and end of the + invocation graph construction phase. + (Build_Library_Graph): Signal the start and end of the library + graph construction phase. + * bindo-diagnostics.adb: Add use clause for + Bindo.Writers.Phase_Writers. + (Diagnose_Cycle): Signal the start and end of the cycle + diagnostic phase. + * bindo-elaborators.adb: Add use clause for + Bindo.Writers.Phase_Writers. + (Elaborate_Units): Signal the start and end of the unit + elaboration phase. + * bindo-graphs.adb: Add use clause for + Bindo.Writers.Phase_Writers. + (Find_Components): Signal the start and end of the component + discovery phase. + (Find_Cycles): Signal the start and end of the cycle discovery + phase. + * bindo-units.adb: Add with and use clause for Bindo.Writers. + Add use clause for Bindo.Writers.Phase_Writers. + (Collect_Elaborable_Units): Signal the start and end of the unit + collection phase. + * bindo-validators.adb: Add with and use clause for + Bindo.Writers. Add use clause for Bindo.Writers.Phase_Writers. + (Validate_Cycles, Validate_Elaboration_Order, + Validate_Invocation_Graph, Validate_Library_Graph): Signal the + start and end of the libray graph validation phase. + * bindo-writers.ads, bindo-writers.adb: Add new nested package + Phase_Writers. + * debug.adb: Update the documentation of switch d_S. + +2019-07-11 Yannick Moy + + * sem_res.adb (Check_Argument_Order): Special case calls to + operators. + +2019-07-10 Dmitriy Anisimkov + + * libgnat/s-ststop.adb: Remove System.Strings.Stream_Ops + dependence on System.Streams.Stream_IO. + +2019-07-10 Ed Schonberg + + * sem_ch2.adb (Analyze_Integer_Literal): Preserve the type of + the literal if prior analysis determined that its type is a + modular integer type. + +2019-07-10 Doug Rupp + + * init.c: Do not attempt to re-arm guard page on x86_64-vx7(r2). + +2019-07-10 Ed Schonberg + + * sem_ch8.adb (Check_Constrained_Object): A record that is + limited because of the presence of a limited component is + constrained, and no subtype indiciation needs to be created for + it, just as is the case for declared limited records. + +2019-07-10 Yannick Moy + + * sem_aux.adb, sem_aux.ads (Is_Protected_Operation): New + function to determine if a subprogram is protected. + * sem_spark.adb (Setup_Protected_Components): New procedure to + add protected components to the environment. + (Check_Callable_Body): Call the new Setup_Protected_Components. + (Check_Package_Spec): Merge local environment with enclosing one + when done. + +2019-07-10 Claire Dross + + * sem_spark.adb (Check_Expression): Allow digits constraints as + input. + (Illegal_Global_Usage): Pass in the entity. + (Is_Subpath_Expression): New function to allow different nodes + as inner parts of a path expression. + (Read_Indexes): Allow concatenation and aggregates with box + expressions. Allow attributes Update and Loop_Entry. + (Check_Expression): Allow richer membership test. + (Check_Node): Ignore bodies of generics. + (Get_Root_Object): Allow concatenation and attributes. + +2019-07-10 Hristian Kirtchev + + * sem_ch6.adb (Check_Discriminant_Conformance): Use Find_Type to + discover the type of a full view discriminant. + +2019-07-10 Arnaud Charlet + + * doc/gnat_ugn/gnat_and_program_execution.rst: Improve gnatmem's + doc for the depth switch. + +2019-07-10 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document gnatpp's + --source-line-breaks switch. + +2019-07-10 Justin Squirek + + * doc/gnat_rm/implementation_defined_attributes.rst: Add mention + of 'Image attribute with 'Img's entry to mention additional + added 2012 usage of Obj'Image. + * doc/gnat_rm/implementation_defined_pragmas.rst: Correct + mispelling of Async_Writers. + * gnat_rm.texi: Regenerate. + * sem_prag.adb (Analyze_Pragma): Correct mispelling of + Async_Writers. + * sem_util.adb (State_Has_Enabled_Property): Correct mispelling + of Async_Writers. + +2019-07-10 Simon Buist + + * sem_util.ads (Child_Prefix): New constant. + * sem_util.adb (Unique_Name): Add a special prefix to child + units that have a nested subprogram or package. + +2019-07-10 Arnaud Charlet + + * sfn_scan.adb (Scan_SFN_Pragmas): Add pragma Assert. + +2019-07-10 Hristian Kirtchev + + * sem_ch3.adb (Check_Nonoverridable_Aspects): Correct the + spelling in certain error messages. + (Check_Pragma_Implemented): Correct the spelling in certain + error messages. + +2019-07-10 Eric Botcazou + + * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Add g-brapre. + * libgnat/g-brapre.ads: New package specification. + * doc/gnat_rm/the_gnat_library.rst: Document it. + * gnat_rm.texi: Regenerate. + +2019-07-10 Yannick Moy + + * osint-c.adb (Set_File_Name): Always add extension for multiple + units per file mode. + +2019-07-10 Corentin Gay + + * sysdep.c: Put include directive for 'vxWorks.h' before any + other VxWorks headers. + +2019-07-10 Eric Botcazou + + * doc/gnat_rm/implementation_defined_attributes.rst + (Scalar_Storage_Order): Minor tweaks. Add note about debuggers. + * gnat_rm.texi: Regenerate. + +2019-07-10 Hristian Kirtchev + + * exp_ch4.adb (Expand_N_Case_Expression): Mark the generated + assignments to the temporary result as being OK because the + expansion of case expressions is correct by construction. + (Is_Copy_Type): Update the predicate to match the comment + within. + +2019-07-10 Hristian Kirtchev + + * bindo-graphs.adb, bindo.adb, debug.adb, exp_ch6.adb, + sem_ch10.adb, sem_ch13.adb, sem_ch3.adb, sem_ch4.adb, + sem_ch6.adb, sem_ch7.adb, sem_res.adb, sem_spark.adb, + sem_util.adb, warnsw.ads: Minor reformatting. + +2019-07-10 Joffrey Huguet + + * libgnat/a-strbou.ads, libgnat/a-strfix.ads, + libgnat/a-strunb.ads, libgnat/a-strunb__shared.ads: Add global + contracts, contract cases, preconditions and postconditions to + procedures and functions. + +2019-07-10 Doug Rupp + + * sysdep.c (__gnat_is_file_not_found_error): Reformulate to also + work for vxworks7r2 SR0610. + +2019-07-10 Doug Rupp + + * env.c (__gnat_environ): Reformulate to also work for + vxworks7r2 SR0610. + +2019-07-10 Patrick Bernardi + + * Makefile.rtl: Handle vxworks7r2 ppc target + +2019-07-10 Hristian Kirtchev + + * bindo.adb: Update the section on switches. + * bindo-graphs.adb + (Add_Cycle, Add_Vertex_And_Complement): Remove. + (Create): The graph no longer needs a set of recorded cycles + because the cycles are not rediscovered in permuted forms. + (Cycle_End_Vertices): New routine. + (Destroy): The graph no longer needs a set of recorded cycles + because the cycles are not rediscovered in permuted forms. + (Destroy_Library_Graph_Vertex): Move to the library level. + (Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge): + Remove. + (Find_Cycles_From_Successor, Find_Cycles_From_Vertex, + Find_Cycles_In_Component, Has_Elaborate_All_Edge): New routines. + (Insert_And_Sort): Remove. + (Is_Elaborate_Body_Edge): Use predicate + Is_Vertex_With_Elaborate_Body. + (Is_Recorded_Cycle): Remove. + (Is_Vertex_With_Elaborate_Body): New routine. + (Normalize_And_Add_Cycle): Remove. + (Precedence): Rename to xxx_Precedence, where xxx relates to the + input. These versions better reflect the desired input + precedence. + (Record_Cycle): New routine. + (Remove_Vertex_And_Complement, Set_Is_Recorded_Cycle): Remove. + (Trace_xxx): Update all versions to use debug switch -d_t. + (Trace_Component): New routine. + (Trace_Eol): Removed. + (Trace_Vertex): Do not output the component as this information + is already available when the component is traced. + (Unvisit, Visit): New routine. + * bindo-graphs.ads: Add new instance LGV_Lists. Remove instance + RC_Sets. Update the structure of type Library_Graph_Attributes + to remove the set of recorded cycles. + (Destroy_Library_Graph_Vertex): Move to the library level. + * bindo-writers.adb (Write_Component_Vertices): Output + information about the number of vertices. + * debug.adb: Document the use of binder switch -d_t. Update the + use of binder switch -d_T. + +2019-07-10 Yannick Moy + + * sem_spark.adb (Get_Root_Object): Replace precondition by error + message. + (Read_Indexes): Replace precondition by error message. + (Check_Callable_Body): Check only traversal function returns an + anonymous access type. + (Check_Expression): Issue error on unexpected expression as + path. + * sem_util.adb (First_Global): Fix access to global on + entry/task. + +2019-07-10 Javier Miranda + + * exp_ch6.adb (Is_Class_Wide_Interface_Type): New subprogram. + (Expand_Call_Helper): Handle non-limited views when we check if + any formal is a class-wide interface type. + * exp_disp.adb (Expand_Interface_Actuals): Handle non-limited + views when we look for interface type formals to force "this" + displacement. + +2019-07-10 Ed Schonberg + + * sem_res.adb (Resolve_Equality_Op): Do not replace the resolved + operator by its alias if expander is not active, because the + operand type may not be frozen yet and its inherited operations + have not yet been created. + +2019-07-10 Hristian Kirtchev + + * bindo-elaborators.adb (Elaborate_Units): Set attribute + Elab_Position of all elaborated units. + (Set_Unit_Elaboration_Positions): New routine. + +2019-07-10 Gary Dismukes + + * exp_util.adb: Reformatting and a typo fix. + +2019-07-10 Yannick Moy + + * exp_util.adb (Remove_Side_Effects): Prefer renamings for + objects of possible owning type in GNATprove mode. + +2019-07-09 Ed Schonberg + + * sem_ch3.adb (Analyze_Object_Declaration): If the object type + is a composite type that has a dynamic predicate and, the + expression in the declaration is an aggregate, the generated + predicate check must appear after the expanded code for the + aggregate, which will appear after the rewritten object + declarastion. + +2019-07-09 Justin Squirek + + * sem_eval.adb (Expr_Value_E): Add conditional to correctly + handle constant enumerated character types. + +2019-07-09 Eric Botcazou + + * libgnarl/s-osinte__mingw.ads (CRITICAL_SECTION): Use proper + type for SpinCount component. + +2019-07-09 Justin Squirek + + * exp_ch4.adb (Expand_N_Allocator): Add conditional to detect + the presence of anoymous access type allocators and issue a + warning if the appropriate warning flag is enabled. + * warnsw.ads: Add new warning flag for anonymous allocators + * warnsw.adb (All_Warnings, Restore_Warnings, Save_Warnings, + Set_Underscore_Warning_Switch): Register new flags. + (WA_Warnings): Register new flag as an "all warnings" switch + * usage.adb, + doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document new warning switches -gnatw_a and -gnatw_A. + * gnat_ugn.texi: Regenerate. + +2019-07-09 Ed Schonberg + + * sem_ch4.adb (Diagnose_Call): Improve error recovery when a + local subprogram name hides a possible candidate name declared + in a child package in the context of the current unit. + * sem_ch6.adb (Process_Formals): Protect against malformed + formal types when the parameter type does not denote an entity. + +2019-07-09 Hristian Kirtchev + + * bindo-augmentors.adb (Visit_Elaboration_Root): Do not start a + DFS from an elaboration root whose corresponding unit lacks + elaboration code. This behavior mimics that of the old + elaboration order mechanism. + * bindo-graphs.adb (Find_All_Cycles_Through_Vertex): Move the + vertex tracing within the functional branches of the routine. + This prevents spurious trace output. + (Has_No_Elaboration_Code): New routine. + (Trace_Cycle, Trace_Edge): Update the various Ids to use the + "standard" trace format. + * bindo-graphs.ads (Has_No_Elaboration_Code): New routine. + * bindo-units.ads, bindo-units.adb (Has_No_Elaboration_Code): + New routine. + +2019-07-09 Piotr Trojanek + + * ali.ads, bindo-graphs.adb, bindo-validators.adb, clean.adb, + doc/gnat_ugn/elaboration_order_handling_in_gnat.rst, einfo.ads, + exp_aggr.adb, exp_ch13.adb, exp_ch4.adb, exp_ch5.adb, + exp_ch6.adb, exp_ch7.adb, exp_ch9.adb, exp_pakd.adb, + fname-uf.ads, gnatlink.adb, inline.adb, lib.ads, make.adb, + namet.ads, opt.ads, par-ch4.adb, par-ch6.adb, par-labl.adb, + prep.adb, sem_aggr.adb, sem_ch13.adb, sem_ch4.adb, sem_ch5.adb, + sem_ch6.adb, sem_ch6.ads, sem_ch7.adb, sem_ch8.adb, sem_dim.adb, + sem_disp.adb, sem_prag.adb, sem_res.adb, sem_warn.adb, + sinfo.ads: Replace ". " with ". ". Minor reformatting and typo + corrections. + * gnat_ugn.texi: Generate. + +2019-07-09 Hristian Kirtchev + + * bindo.ads: Move type Precedence_Kind from the private to the + visible part of the unit. + * bindo-augmentors.adb: Remove the use of global data as it is + bad practice. + (Augment_Library_Graph): Update the parameter profile. + (Is_Visited, Set_Is_Visited): Remove. + (Visit_Elaboration_Root, Visit_Elaboration_Roots): Update the + parameter profile and comment on usage. + (Visit_Vertex): Likewise. Also keep track of which invocation + edge activates a task. + * bindo-augmentors.ads (Augment_Library_Graph): Update the + parameter profile and comment on usage. + * bindo-builders.adb (Create_Forced_Edge, + Create_Spec_And_Body_Edge, Create_With_Edge): Update the call to + Add_Edge. + * bindo-diagnostics.adb: Add with end use clauses for Restrict + and Rident. + (Output_Dynamic_Model_Suggestions): Remove. + (Output_Invocation_Related_Suggestions): New routine. + (Output_Suggestions): Output all invocation-related suggestions + together. + * bindo-elaborators.adb: Remove types Comparator_Ptr and + Predicate_Ptr. + (Find_Best_Vertex): Update the parameter profile. + * bindo-graphs.adb (Activates_Task): New routine. + (Add_Body_Before_Spec_Edge): Update the call to + Add_Edge_With_Return. + (Add_Edge): Update the parameter profile and the call to + Add_Edge_With_Return. + (Add_Edge_With_Return): Update the parameter profile and comment + on usage. + (At_Least_One_Edge_Satisfies): New routine. + (Contains_Elaborate_All_Edge): Reimplement. + (Contains_Static_Successor_Edge, Contains_Task_Activation): New + routine. + (Contains_Weak_Static_Successor): Remove. + (Is_Static_Successor_Edge): New routine. + * bindo-graphs.ads: Add types LGE_Predicate_Ptr, + LGV_Comparator_Ptr, and LGV_Predicate_Ptr. Update type + Library_Graph_Edge_Attributes to capture whether an invocation + edge activates a task. Update the value of + No_Library_Graph_Edge_Attributes. + (Activates_Task): Update the parameter profile and comment on + usage. + (Contains_Static_Successor_Edge, Contains_Task_Activation): New + routines. + (Contains_Weak_Static_Successor): Remove. + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: + Update the documentation to reflect the new task-related advice. + * gnat_ugn.texi: Regenerate. + +2019-07-09 Piotr Trojanek + + * exp_util.adb (Containing_Package_With_Ext_Axioms): Replace + low-level Ekind test with a high-level wrapper. + +2019-07-09 Arnaud Charlet + + * libgnat/s-memory.adb: Disable calls to Abort defer/undefer + when ZCX_By_Default. + +2019-07-09 Javier Miranda + + * sem_ch13.adb (Rep_Item_Too_Early): Representation clauses are + not allowed for a derivation of a generic type. Extend the + current test to check that none of the parents is a generic + type. + +2019-07-09 Hristian Kirtchev + + * exp_ch9.adb, exp_util.adb, repinfo.adb, sem_ch12.adb, + sem_prag.adb, sem_res.adb, sem_spark.adb, sem_util.adb: Minor + reformatting. + +2019-07-09 Ed Schonberg + + * sem_res.adb (Resolve_Equality_Op): If the node was overloaded, + set properly the entity to which the node has been resolved. The + original entity is the first one found during analysis, and is + not necessarily the resolved one. + (Resolve_Op_Not): If the argument of negation is an overloaded + equality operation, call its resolution directly given that the + context type does not participate in overload resolution. + +2019-07-09 Hristian Kirtchev + + * bindo.adb: Remove with and use clauses for Debug. Add with + and use clauses for Opt. + (Find_Elaboration_Order): Enable the v4.0 elaboration order. The + v3.0 mechanism is now available under binder switch -H. + * bindusg.adb (Display): Enable switch -H. + * debug.adb: Free compiler switch -gnatd_G. Free binder switch + -d_N. + * sem_elab.adb: Update the section on switches to remove + -gnatd_G. + (Invocation_Graph_Recording_OK): The invocation graph is now + unconditionally recorded in ALI files. + * switch-b.adb (Scan_Binder_Switches): Scan switch -H. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Update the documentation on compiler switches related to + elaboration. Update the documentation on binder switches to + include switch -H. + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update + the documentation on elaboration order handling in GNAT. + * gnat_ugn.texi: Regenerate. + +2019-07-09 Eric Botcazou + + * repinfo.adb (List_Entities): Disregard formals altogether. + (List_Name): Properly escape the double quote in the JSON + output. + +2019-07-09 Javier Miranda + + * exp_util.adb (Remove_Side_Effects): Preserve the + Do_Range_Check flag. + +2019-07-09 Yannick Moy + + * sinfo.ads: Refine comment for Do_Range_Check. + +2019-07-09 Yannick Moy + + * exp_spark.adb (Expand_SPARK_N_Attribute_Reference): Expand + attribute reference on Enum_Rep. + +2019-07-09 Ed Schonberg + + * sem_ch12.adb (Instantiate_Formal_Package): Handle properly the + case where the actual for a formal package in an instance is the + current instance of an enclosing generic package. + (Check_Formal_Packages): If the formal package declaration is + box-initialized or lacks associations altogether, no internal + instance was created to verify conformance, and there is no + validating package to remove from tree. + +2019-07-09 Yannick Moy + + * freeze.adb (Build_Renamed_Body): Do not set body to inline in + GNATprove mode. + +2019-07-09 Yannick Moy + + * exp_util.adb (Expand_Subtype_From_Expr): Still expand the type + of static expressions in GNATprove_Mode. + * sem_ch3.adb (Analyze_Object_Declaration): Remove obsolete + special case for GNATprove_Mode. + +2019-07-09 Piotr Trojanek + + * doc/gnat_rm/the_gnat_library.rst, + doc/gnat_ugn/building_executable_programs_with_gnat.rst, + erroutc.adb, libgnat/g-comlin.adb, libgnat/g-comlin.ads, + libgnat/g-regexp.ads, libgnat/g-regpat.ads, + libgnat/g-spipat.ads, libgnat/s-os_lib.ads, + libgnat/s-regexp.ads: Reword "wild card" to "wildcard". + * gnat_rm.texi, gnat_ugn.texi: Regenerate. + +2019-07-09 Yannick Moy + + * sem_spark.adb (Check_Expression): Handle correctly implicit + assignments as part of allocators and (extension) aggregates. + (Get_Root_Object): Adapt for new path expressions. + (Is_Path_Expression): Return True for (extension) aggregate. + +2019-07-09 Piotr Trojanek + + * einfo.ads: Fix a typo. + +2019-07-09 Ed Schonberg + + * sem_util.adb (Scope_Within_Or_Same): Handle properly task + bodies and protected bodies, so that local variables within have + their proper scopes after these constructs have been rewritten + during expansion. This patch resembles but is not identical to + the code in Scope_Within. + +2019-07-09 Arnaud Charlet + + * gnat1drv.adb (Adjust_Global_Switches): Set + Dynamic_Elaboration_Checks to True in CodePeer mode. + +2019-07-09 Yannick Moy + + * sem_spark.adb (Get_Perm_Or_Tree): Issue an error when + encountering unknown global variable. + +2019-07-09 Yannick Moy + + * sem_spark.adb (Check_Expression): Change signature to take an + Extended_Checking_Mode, for handling read permission checking of + sub-expressions in an assignment. + (Check_Parameter_Or_Global): Adapt to new behavior of + Check_Expression for mode Assign. + (Check_Safe_Pointers): Do not analyze generic bodies. + (Check_Assignment): Separate checking of the target of an + assignment. + +2019-07-09 Eric Botcazou + + * repinfo.ads (JSON format): Adjust. + * repinfo.adb (Need_Blank_Line): Rename to... + (Need_Separator): ...this. + (Blank_Line): Rename to... + (Write_Separator): ...this and add JSON specific handling. + (List_Array_Info): Adjust to above renaming. + (List_Object_Info): Likewise. + (List_Record_Info): Likewise. + (List_Subprogram_Info): Likewise. + (List_Type_Info): Likewise. + (List_Entities): Do not set Need_Blank_Line. + (List_Rep_Info): Set Need_Separator and add JSON specific + handling. Output a single JSON stream in the normal case. + +2019-07-09 Arnaud Charlet + + * doc/gnat_ugn/the_gnat_compilation_model.rst: Update doc on + -fdump-ada-spec now that we generate Ada 2012. + * gnat_ugn.texi: Regenerate. + +2019-07-08 Eric Botcazou + + * repinfo.adb (List_Common_Type_Info): New procedure extracted + from... + (List_Type_Info): ...here. Call it for the common information, + start with a blank line and output the linker section at the + end, if any. + (List_Mechanisms): Rename to... + (List_Subprogram_Info): ...this. + (List_Array_Info): Call List_Common_Type_Info. + (List_Entities): Adjust to above change and renaming. + (List_Record_Info): Call List_Common_Type_Info. + +2019-07-08 Dmitriy Anisimkov + + * libgnat/g-sercom.ads + (Serial_Port_Descriptor): New type. + (Serial_Port): Add a comment, make it hold a + Serial_Port_Descriptor. + (To_Ada, To_C): New procedures. + (Port_Data, Port_Data_Access): Remove types. + * libgnat/g-sercom.adb (To_Ada): New stub. + * libgnat/g-sercom__linux.adb, libgnat/g-sercom__mingw.adb: + Update implementations accordingly. + * s-oscons-tmplt.c: Bind Serial_Port_Descriptor to + System.Win32.HANDLE on Windows, and to Interfaces.C.int on + Linux. Add "Interfaces.C." prefix for other basic integer type + bindings. + * xoscons.adb (Output_Info): Remove the "Interfaces.C." prefix + for subtypes generation. + +2019-07-08 Arnaud Charlet + + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Update documentation on No_Exceptions restriction. + * gnat_rm.texi: Regenerate. + +2019-07-08 Dmitriy Anisimkov + + * libgnat/s-os_lib.adb: Do not call __gnat_kill for Invalid_Pid. + +2019-07-08 Piotr Trojanek + + * sem_util.adb (Enclosing_Package_Or_Subprogram): Do not expect + package and subprogram bodies. + +2019-07-08 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Remove documentation + of ignored GNATpp switch. + +2019-07-08 Hristian Kirtchev + + * doc/gnat_rm/implementation_defined_pragmas.rst: + Update the documentation of pragma Initialize_Scalars. + * gnat_rm.texi: Regenerate. + +2019-07-08 Javier Miranda + + * exp_ch4.adb (Tagged_Membership): Fix regression silently + introduced in r260738 that erroneouslusy causes the evaluation + to True of the membership test when the left operand of the + membership test is a class-wide interface object and the right + operand is a type that implements such interface type. + +2019-07-08 Hristian Kirtchev + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): Do not + register an address clause when its prefix denotes a generic + formal object. + +2019-07-08 Hristian Kirtchev + + * bindo-diagnostics.adb (Diagnose_Cycle): Capture the presence + of an Elaborate_All edge before iterating over the edges of the + cycle. + (Output_Elaborate_Body_Transition): Update the parameter profile + and the comment on usage. Add a missing case where the edge is + within the context of an Elaborate_All. + (Output_Transition): Update the call to + Output_Elaborate_Body_Transition. + * bindo-graphs.ads, bindo-graphs.adb + (Contains_Elaborate_All_Edge): New routine. + +2019-07-08 Piotr Trojanek + + * lib-xref-spark_specific.adb (Create_Heap): Set dummy Etype for + the fake __HEAP entity. + +2019-07-08 Daniel Mercier + + * gnat1drv.adb: Suppress warnings on memory representation in + CodePeer compiler mode. + +2019-07-08 Nicolas Roche + + * rtinit.c (__gnat_runtime_initialize): Remove dependency on + CommandLineToArgvW. + +2019-07-08 Doug Rupp + + * Makefile.rtl: Handle vxworks7r2 in x86_64 and x86 vxworks7. + +2019-07-08 Dmitriy Anisimkov + + * Makefile.rtl: Use g-sercom__linux.adb for all linuxes. + +2019-07-08 Yannick Moy + + * expander.adb (Expand): Do not reset Analyzed flag always. + * sem_eval.adb (Fold_Ureal): Mark node as analyzed. + +2019-07-08 Ed Schonberg + + * exp_ch9.adb (Expand_N_Timed_Entry_Call): Do not insert twice + the assignment statement that computes the delay value, to + prevent improper tree sharing when the value is a type + conversion and Float_Overflow checks are enabled. + +2019-07-08 Hristian Kirtchev + + * bindo.adb: Update the section on terminology to include new + concepts. Update the section on switches to include new + entries. + * bindo.ads: Add type Precedence_Kind. + * bindo-builders.adb: Add with and use clauses for Debug and + Bindo.Validators. Add use clauses for + Bindo.Validators.Invocation_Graph_Validators and + Bindo.Validators.Library_Graph_Validators. + (Build_Invocation_Graph): Validate the graph immediately after + it was built. + (Build_Library_Graph): Update the parameter profile. The + creation of the graph is now elaboration model-agnostic. + Validate the graph immediately after it was built. + (Create_With_Edge): Create regular with edges for Elaborate and + Elaborate_All edges when the appropriate debug switches are in + effect. + * bindo-builders.ads (Build_Library_Graph): Update the parameter + profile. + * bindo-diagnostics.adb (Diagnose_Cycle): Track the presence of + an Elaborate_All edge throughout the inspection of the cycle's + edges. + (Output_Dynamic_Model_Suggestions): Output the suggestion only + when the cycle contains at least one weak edge where the + successor was statically elaborated. + (Output_Elaborate_Body_Transition, Output_Forced_Transition, + Output_With_Transition): Update the assertions. + * bindo-elaborators.adb: Remove use clauses for + Bindo.Validators.Invocation_Graph_Validators and + Bindo.Validators.Library_Graph_Validators. Remove strings + Add_To_All_Candidates_Msg and Add_To_Comp_Candidates_Msg. + Remove type String_Ptr. + (Add_Vertex, Add_Vertex_If_Elaborable, Create_All_Candidates_Set + Create_Component_Candidates_Set): Remove. + (Create_Component_Vertex_Sets, Create_Vertex_Sets): New routine. + (Elaborate_Component): Update the parameter profile and the + comment on usage. Reimplement the elaboration of a component. + The algorithm will now attempt to elaborate as many vertices + possible. If this is not possible, and a weakly elaborable + vertex is available use unit was compiled using the dynamic + model, the algorithm will elaborate it. + (Elaborate_Library_Graph): Reimplement the elaboration of the + graph. The algorithm will now attempt to elaborate as many + vertices along with their components as possible. If this is not + possible, and a weakly elaborable vertex is available use unit + was compiled using the dynamic model, the algorithm will + elaborate it along with its component. + (Elaborate_Units): Merge with the functionality of + Elaborate_Units_Common. + (Elaborate_Units_Common, Elaborate_Units_Dynamic, + Elaborate_Units_Static): Remove. + (Elaborate_Vertex): Update the parameter profile and the comment + on usage. Reimplemented. + (Find_Best_Candidate): Remove. + (Find_Best_Elaborable_Vertex, Find_Best_Vertex, + Find_Best_Weakly_Elaborable_Vertex, Has_Elaborable_Body, + Insert_Elaborable_Successor, Insert_Vertex): New routines. + (Is_Better_Candidate): Remove. + (Is_Better_Elaborable_Vertex, + Is_Better_Weakly_Elaborable_Vertex, + Is_Suitable_Elaborable_Vertex, + Is_Suitable_Weakly_Elaborable_Vertex): New routines. + (Trace_Candidate_Vertices): Remove. + (Trace_Component): Output the number of strong and weak + predecessors. + (Trace_Unelaborated_Vertices): Remove. + (Trace_Vertex): Output the number of strong and weak + predecessors. + (Trace_Vertices): New routine. + (Update_Successor, Update_Successors): Update the parameter + profile and the comment on usage. + * bindo-graphs.adb: Remove type Precedence_Kind. + (Add_Edge_With_Return): Update the increment of pending + predecessors. + (Add_Vertex): Provide default values for strong and weak + predecessors. + (Complementary_Vertex): Move the initial declaration to the + spec. Update the parameter profile and the comment on usage. + (Contains_Weak_Static_Successor): New routine. + (Create): Update the parameter profile. The creation of the + graph is now elaboration model-agnostic. + (Decrement_Pending_Predecessors): Update the parameter profile + and the comment on usage. Reimplemented. + (Delete_Edge): Update the decrement of pending predecesors. + (Has_Elaborate_Body): Do not treat a vertex as being subject to + Elaborate_Body when a debug switch is in effect. + (Increment_Pending_Predecessors): Update the parameter profile + and the comment on usage. Reimplemented. + (Is_Elaborable_Component): Reimplemented. + (Is_Elaborable_Vertex): Move the initial declaration to the + spec. Reimplemented. + (Is_Elaborate_Body_Pair): New routine. + (Is_Dynamically_Elaborated): Update the parameter profile. + Reimplemented. + (Is_Weakly_Elaborable_Vertex): New routine. + (Pending_Predecessors): Removed. + (Pending_Predecessors_For_Elaboration, + Pending_Strong_Predecessors, Pending_Weak_Predecessors, + Update_Pending_Predecessors): New routines. + (Update_Pending_Predecessors_Of_Components): Update the + increment of pending predecessors. + * bindo-graphs.ads: Update the components of type + Component_Attributes. Update the components of type + Library_Graph_Attributes. Update the components of type + Library_Graph_Vertex_Attributes. Update the initialization of + No_Component_Attributes. Update the initialization of + No_Library_Graph_Vertex_Attributes. + (Complementary_Vertex, Contains_Weak_Static_Successor): New + routines. + (Create): Update the parameter profile and the comment on usage. + (Decrement_Pending_Predecessors, Is_Dynamically_Elaborated): + Update the parameter profile and the comment on usage. + (Is_Elaborate_Body_Pair, Is_Weakly_Elaborable_Vertex): New + routines. + (Pending_Predecessors): Removed. + (Pending_Predecessors_For_Elaboration, + Pending_Strong_Predecessors, Pending_Weak_Predecessors): New + routines. + * bindo-writers.adb (Write_Components): Moved from the spec. + (Write_Component): Output the strong and weak predecessors. + (Write_Library_Graph): Output the components as part of the + graph. + (Write_Library_Graph_Vertex): Output the strong and weak + predecessors. + * bindo-writers.ads (Write_Components): Moved to the body. + * debug.adb: Add and document new GNATbind switches -d_a, -d_b, + -d_e. + * bindo-validators.adb: Minor reformattings. + +2019-07-08 Bob Duff + + * libgnat/g-sercom.ads, libgnat/g-sercom__linux.adb (Data_Rate): + Support additional data rates. + +2019-07-08 Olivier Hainque + + * gcc-interface/trans.c (Compilation_Unit_to_gnu): Don't request + DECL_ARTIFICIAL_P on elab proc declarations. + +2019-07-08 Eric Botcazou + + * repinfo.adb (List_Record_Info): Declare Incomplete_Layout and + Not_In_Extended_Main local exceptions. + (List_Structural_Record_Layout): For an extension, raise the + former if the parent subtype has not been built and the latter + if it is not declared in the main source unit. Fall back to the + flat layout if either exception has been raised. + +2019-07-08 Ed Schonberg + + * libgnat/a-strfix.adb (Delete): The RM describes the semantics + of Delete as equivalent to that of Replace_String with a null + argument. As a result, deleting a null string that starts past + the end of its argument is a noop and must not raise + Index_Error. + +2019-07-08 Javier Miranda + + * exp_disp.adb (Register_Primitive): When registering a + primitive in the secondary dispatch table, handle primitive + inherited through several levels of type derivation (required to + properly handle inherited 'null' primitive). + +2019-07-08 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document handling of + preprocessor directives in GNATpp. + +2019-07-08 Javier Miranda + + * gnat1drv.adb (Post_Compilation_Validation_Checks: + Validate_Compile_Time_Warning_Errors is now located in sem_prag + (instead of sem_ch13). + * sem_ch13.ads (Validate_Compile_Time_Warning_Error, + Validate_Compile_Time_Warning_Errors): Move to sem_prag. + * sem_ch13.adb + (Compile_Time_Warnings_Errors): Move to sem_prag. + (Initialize): Remove initialization of table + Compile_Time_Warning_Errors. + (Validate_Compile_Time_Warning_Error, + Validate_Compile_Time_Warning_Errors): Move to sem_prag. + * sem_prag.ads (Validate_Compile_Time_Warning_Errors): New + procedure. + * sem_prag.adb (Initialize): Initialize table + Compile_Time_Warning_Errors. + +2019-07-08 Ed Schonberg + + * sem_ch13.adb (Analyze_Aspect_Specifications): For a + pre/postcondition of a generic subprogram declaration, do not + use Relocate_Node on the aspect expression to construct the + corresponding attribute specification, to prevent tree anomalies + when the expression is a call with named actual parameters. + +2019-07-08 Javier Miranda + + * sem_attr.adb (Analyze_Attribute [Attribute_Size]): For pragmas + used to report user defined compile time warning or errors + handle 'Size for types with known static RM size. + +2019-07-08 Justin Squirek + + * exp_imgv.adb (Build_Enumeration_Image_Tables): Default SSO for + the building of image tables. + (Expand_Image_Attribute): Minor cleanup. + +2019-07-08 Dmitriy Anisimkov + + * libgnat/g-socket.ads, libgnat/g-socket.adb: Improve + documentation. + (Get_Socket_Option, Set_Socket_Option): Remove default value for + the Level formal. + +2019-07-08 Ed Schonberg + + * sem_ch13.adb (Check_Aspect_At_End_Of_Declarations): For an + unanalized aspect in a generic context that has not been + analyzed yet, if the aspect applies to a type, place the type on + the scope stack to make its components visible, before checking + conformance with the version of the expression analyzed at the + freeze point. + +2019-07-05 Justin Squirek + + * checks.adb (Apply_Accessibility_Check): Add logic to fetch the + function result accessibility level if one is required within + the generated check. + * exp_ch6.adb (Needs_Result_Accessibility_Level): Modify + controlling elsif block to handle more cases such as anonymous + access results and disable checking for coextensions. + +2019-07-05 Ed Schonberg + + * sem_ch9.adb (Analyze_Accept_Statement): If this is an illegal + accept statement for an enclosing entry abandon analysis to + prevent scope mismatches and potential infinite loops in + compiler. + +2019-07-05 Hristian Kirtchev + + * ali.adb (For_Each_Invocation_Construct, + For_Each_Invocation_Relation): New version. + (Scan_ALI): Initialize field Invocation_Graph_Encoding. + (Set_Invocation_Graph_Encoding): Update the setting of the + invocation graph encoding. + * ali.ads: Move field Invocation_Graph_Encoding from Unit_Record + to ALI_Record because the encoding applies to the whole ALI, + rather than one of the units (spec or body) for which the ALI + file was created. + (For_Each_Invocation_Construct, For_Each_Invocation_Relation): + New version. + * bindo.adb: Update the section on switches. Complete the + section of debugging elaboration order issues. + (Find_Elaboration_Order): Prepare the routine for the switch + from the old to the new elaboration order mechanism. + * bindo-diagnostics.adb (Find_And_Output_Invocation_Paths): + Manage a visited set used by Visit_Vertex. + (Output_All_Cycles_Suggestions, + Output_Dynamic_Model_Suggestions): Clarify the nature of the + suggested switch. + (Output_Elaborate_Body_Transition): Update the diagnostic to + emit a better message. + (Output_Forced_Suggestions, Output_Full_Encoding_Suggestions): + Clarify the nature of the suggested switch. + (Visit_Vertex): Update the parameter profile to add a set of + invokers visited during the transition. This set prevents + infinite exploration of the graph in case the invocations are + recursive. + * bindo-elaborators.adb: Add a use clause for + Bindo.Writers.Dependency_Writers. + (Elaborate_Units_Common): Output the library graph after it has + been augmented with invocation edges. Output just the components + instead of outputting the whole library graph again. + (Elaborate_Units_Dynamic, Elaborate_Units_Static): Output the + dependencies as expressed in the library graph. + * bindo-units.adb (Invocation_Graph_Encoding): Update the + extraction of the invocation graph encoding. + * bindo-writers.adb: Add with and use clauses for Binderr and + Butil. + (palgc, plgc): New debug routine. + (Write_Components): Moved to the spec. Add a header for the + output. + (Write_Dependencies, Write_Dependencies_Of_Vertex, + Write_Dependency_Edge): New routine. + (Write_Elaboration_Order): Update the logic to follow the format + of Binde's order output. + (Write_Library_Graph): Do not output the components every time + the graph is written. + (Write_Unit): Output the invocation graph encoding of the unit. + Output the invocation constructs and relations for the unit + only. + * bindo-writers.ads (Write_Components): Moved from the body. + (Write_Dependencies): New routine. + * bindusg.adb: Prepare the routine for the switch from the old + to the new elaboration order mechanism. + * debug.adb: Binder switch -d_O is now not associated with any + functionality. + * einfo.adb (Is_Elaboration_Target): The attribute applies to + packages, as specified by the comment on the attribute usage. + * opt.ads: Add a global flag which controls the choice between + the new and the legacy elaboration order mechanism. + * sem_elab.adb: Add Package_Target to type Target_Kind. + (Build_Elaborate_Body_Procedure, Build_Elaborate_Procedure, + Build_Elaborate_Spec_Procedure, Check_Elaboration_Scenarios, + Check_SPARK_Model_In_Effect): Use Main_Unit_Entity to obtain the + entity of the main unit. + (Create_Package_Rep): New routine. + (Create_Target_Rep): Add processing for packages. + (Declaration_Placement_Of_Node, Has_Prior_Elaboration): Use + Main_Unit_Entity to obtain the entity of the main + unit. + (Invocation_Graph_Recording_OK): Prepare the routine for the + switch from the old to the new elaboration order mechanism. + (Main_Unit_Entity): New routine. + (Meet_Elaboration_Requirement, + Process_Conditional_ABE_Variable_Reference): Use + Main_Unit_Entity to obtain the entity of the main unit. + (Process_Invocation_Instantiation): New routine. + (Process_Invocation_Scenario): Add processing for + instantiations. + * switch-b.adb (Scan_Binder_Switches): Prepare the routine for + the switch from the old to the new elaboration order mechanism. + +2019-07-05 Joffrey Huguet + + * libgnat/a-textio.adb: Add abstract state refinment. + * libgnat/a-textio.ads: Add File_System abstract state. Add + global contracts, contract cases, preconditions and + postconditions to procedures and functions. + (Set_Input, Set_Output, Set_Error, Standard_Input, + Standard_Output, Standard_Error, Current_Input, Current_Output, + Current_Error): Turn SPARK_Mode off. + (Get_Line): Turn SPARK_Mode off on Get_Line functions. + * libgnat/a-tideio.ads, libgnat/a-tienio.ads, + libgnat/a-tifiio.ads, libgnat/a-tiflio.ads, + libgnat/a-tiinio.ads, libgnat/a-timoio.ads: Add global + contracts, contract cases, preconditions and postconditions to + procedures and functions. + +2019-07-05 Arnaud Charlet + + * doc/gnat_ugn/platform_specific_information.rst: Refresh doc on + installing from the command line on Windows. Remove obsolete + part. + * gnat_ugn.texi: Regenerate. + +2019-07-05 Vasiliy Fofanov + + * libgnat/a-wichha.ads (Is_Alphanumeric): Replace comment with + the correct one. Also capitalize references to False + throughout. + +2019-07-05 Eric Botcazou + + * exp_ch4.adb (Expand_N_Indexed_Component): Do not expand actual + parameters of function calls here either. + +2019-07-05 Hristian Kirtchev + + * bindo-units.adb, checks.adb, exp_attr.adb, exp_ch3.adb, + exp_ch4.adb, exp_pakd.adb, lib-writ.adb, libgnat/g-traceb.adb, + libgnat/g-traceb.ads, libgnat/s-stratt.ads, sem_aux.ads, + sem_util.adb: Minor reformatting. + +2019-07-05 Ed Schonberg + + * sem_ch13.adb (Build_Predicate_Functions): If a subtype that + carries a static predicate aspect is frozen immediately after + its declaration, ensure that the generated function body created + for predicate checking is inserted after the corresponding + subprogram declaration, which is created at the point the + declaration is elaborated. + +2019-07-05 Hristian Kirtchev + + * exp_ch7.adb (Cleanup_Record): Use the underlying type when + checking for components with tasks. + +2019-07-05 Arnaud Charlet + + * libgnarl/s-osinte__linux.ads: Link with -lrt before -lpthread. + +2019-07-05 Ed Schonberg + + * exp_pakd.adb (Expand_Bit_Packed_Element_Set): Add explicit + range checks when the index type of the bit-packed array is an + enumeration type with a non-standard representation, + +2019-07-05 Hristian Kirtchev + + * sem_res.adb (Is_Control_Flow_Statement): Delay statements + contain an expression, which in turn may have side effects and + affect the infinite recursion. As a result, delay statements + should not be treated specially. + +2019-07-05 Arnaud Charlet + + * libgnarl/s-linux.ads, libgnarl/s-linux__alpha.ads, + libgnarl/s-linux__android.ads, libgnarl/s-linux__hppa.ads, + libgnarl/s-linux__mips.ads, libgnarl/s-linux__riscv.ads, + libgnarl/s-linux__sparc.ads: Fix typos in comments. + +2019-07-05 Hristian Kirtchev + + * sem_res.adb (Check_Infinite_Recursion): Reimplemented. + (Enclosing_Declaration_Or_Statement, + Invoked_With_Different_Arguments, Is_Conditional_Statement, + Is_Control_Flow_Statement, Is_Immediately_Within_Body, + Is_Raise_Idiom, Is_Raise_Statement, Is_Sole_Statement, + Preceded_By_Control_Flow_Statement, + Within_Conditional_Statement): New routines. + +2019-07-05 Javier Miranda + + * exp_ch4.adb (Expand_N_Type_Conversion): Do not apply an + accessibility check when the conversion is an access to + class-wide interface type and it is an actual parameter. + * exp_ch6.adb (Expand_Call_Helper): Add documentation on the + accessibility level of an anonymous allocator defining the value + of an access parameter. + * sem_util.ads, sem_util.adb (Dynamic_Accessibility_Level): Add + support for an anonymous allocator whose type is that of a + stand-alone object of an anonymous access to object type. + +2019-07-05 Piotr Trojanek + + * einfo.ads, sem_res.adb: Typo fixes in comments. + +2019-07-05 Bob Duff + + * exp_ch6.adb (Is_Build_In_Place_Function): Narrow the check for + Has_Foreign_Convention to the imported case only. If a + build-in-place function is exported, and called from Ada code, + build-in-place protocols should be used. + +2019-07-05 Ed Schonberg + + * sem_util.adb (Encloing_Subprogram): If Enclosing_Dynamic_Scope + is a loop, continue climbing the scope stack to find the + enclosing subprogram. + (Gather_Components): Handle properly a choice in a record + aggregate that is given by a subtype with a static predicate. + +2019-07-05 Javier Miranda + + * debug.adb (-gnatd.K): Leave available this switch. + * contracts.adb (Build_And_Analyze_Contract_Only_Subprograms): + Remove. + * scil_ll.ads, scil_ll.adb (Contract_Only_Body_Flag, + Contract_Only_Body_Nodes, Get_Contract_Only_Body, + Is_Contract_Only_Body, Set_Contract_Only_Body): Remove. + +2019-07-05 Pierre-Marie de Rodat + + * libgnat/a-strunb.ads: Import documentation from the RM + +2019-07-05 Pierre-Marie de Rodat + + * libgnat/a-strfix.ads: Import documentation from the RM + +2019-07-05 Yannick Moy + + * adabkend.adb (Scan_Back_End_Switches): Accept -Og and -Ofast + switches. + +2019-07-05 Hristian Kirtchev + + * ali.adb: Relocate types Invocation_Construct_Record, + Invocation_Relation_Record, and Invocation_Signature_Record to + the body of ALI. Relocate tables Invocation_Constructs, + Invocation_Relations, and Invocation_Signatures to the body of + ALI. Remove type Body_Placement_Codes. Add new types + Declaration_Placement_Codes, and + Invocation_Graph_Encoding_Codes. Update the literals of type + Invocation_Graph_Line_Codes. + (Add_Invocation_Construct): Update the parameter profile. Add an + invocation construct built from all attributes provided. + (Add_Invocation_Relation): Update the parameter profile. Add an + invocation relation built from all attributes provided. + (Body_Placement): New routine. + (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind): + Removed. + (Code_To_Declaration_Placement_Kind, + Code_To_Invocation_Graph_Encoding_Kind, Column, + Declaration_Placement_Kind_To_Code, Extra, + For_Each_Invocation_Construct, For_Each_Invocation_Relation, + Invocation_Graph_Encoding, + Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line, + Locations, Name): New routine. + (Scan_Invocation_Construct_Line): Reimplement the scanning + mechanism. + (Scan_Invocation_Graph_Attributes_Line): New routine. + (Scan_Invocation_Graph_Line): Use a case statement to dispatch. + (Scan_Invocation_Relation_Line): Reimplement the scanning + mechanism. + (Scope): New routine. + (Set_Invocation_Graph_Encoding, Signature, Spec_Placement, + Target): New routine. + * ali.ads: Add new type Invocation_Graph_Encoding_Kind. Add + component Invocation_Graph_Encoding to type Unit_Record. + Relocate various types and data structures to the body of ALI. + (Add_Invocation_Construct, Add_Invocation_Relation): Update the + parameter profile. + (Body_Placement): New routine. + (Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind): + Removed. + (Code_To_Declaration_Placement_Kind, + Code_To_Invocation_Graph_Encoding_Kind, Column, + Declaration_Placement_Kind_To_Code, Extra, + For_Each_Invocation_Construct, For_Each_Invocation_Relation, + Invocation_Graph_Encoding, + Invocation_Graph_Encoding_Kind_To_Code, Invoker, Kind, Line, + Locations, Name, Scope, Set_Invocation_Graph_Encoding, + Signature, Spec_Placement, Target): New routine. + * bindo.adb: Add with clause for Binde. Add with and use + clauses for Debug. Update the documentation. Add new switches. + (Find_Elaboration_Order): Dispatch to the proper elaboration + mechanism. + * bindo-augmentors.adb: + Remove with and use clauses for GNAT and GNAT.Sets. Remove + membership set VS. Update the parameter profiles of most + routines to use better parameter names. Update the + implementation of most routine to use the new parameter names. + Remove various redundant assertions. + * bindo-builders.adb: Use better names for instantiated data + structures. Update all references to these names. Update the + parameter profiles of most routines to use better parameter + names. Update the implementation of most routine to use the new + parameter names. + (Build_Library_Graph): Update the parameter profile. Update the + call to Create. + (Create_Vertex): Reimplemented. + (Declaration_Placement_Vertex): New routine. + * bindo-builders.ads (Build_Library_Graph): Update the parameter + profile and comment on usage. + * bindo-diagnostics.adb: Almost a new unit. + * bindo-diagnostics.ads: Add a use clause for + Bindo.Graphs.Invocation_Graphs. Remove package + Cycle_Diagnostics. + (Diagnose_Circularities): New routine. + * bindo-elaborators.adb: Remove the with and use clauses for + Binderr and GNAT.Sets. Remove the use clause for + Bindo.Diagnostics.Cycle_Diagnostics. Remove membership set VS. + Update the parameter profiles of most routines to use better + parameter names. Update the implementation of most routine to + use the new parameter names. (Elaborate_Units_Common): Update + the parameter profile. Pass an infication to the library graph + builder whether the dynamic model is in effect. + (Elaborate_Units_Dynamic, Elaborate_Units_Static): Use + Diagnose_Circularities to provide diagnostics. + (Update_Successor): Use routine In_Same_Component to determine + whether the predecessor and successor reside in different + components. + * bindo-graphs.adb: Add with and use clauses for Butil, Debug, + Output, and Bindo.Writers. Remove with and use clauses for + GNAT.Lists. Update the parameter profiles of most routines to + use better parameter names. Update the implementation of most + routine to use the new parameter names. Remove various + redundant assertions. Remove doubly linked list EL. Add new + type Precedence_Kind. + (Add_Cycle): New routine. + (Add_Vertex): Update the parameter profile. Update the creation + of vertex attributes. + (Add_Vertex_And_Complement, Body_Vertex, Column, + Complementary_Vertex, Copy_Cycle_Path, Cycle_Kind_Of): New + routines. + (Destroy_Invocation_Graph_Edge, Destroy_Library_Graph_Cycle, + Destroy_Library_Graph_Edge, Extra, File_Name, + Find_All_Cycles_Through_Vertex, Find_All_Cycles_With_Edge, + Find_Cycles, Find_First_Lower_Precedence_Cycle, + Get_LGC_Attributes, Has_Next, Hash_Library_Graph_Cycle, + Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle, + Highest_Precedence_Edge, In_Same_Component, Insert_And_Sort, + Invocation_Edge_Count, Invocation_Graph_Encoding, + Is_Cycle_Initiating_Edge, Is_Cyclic_Edge, + Is_Cyclic_Elaborate_All_Edge, Is_Cyclic_Elaborate_Body_Edge, + Is_Cyclic_Elaborate_Edge, Is_Cyclic_Forced_Edge, + Is_Cyclic_Invocation_Edge, Is_Cyclic_With_Edge, + Is_Dynamically_Elaborated, Is_Elaborate_All_Edge, + Is_Elaborate_Body_Edge, Is_Elaborate_Edge: New routines. + (Is_Existing_Predecessor_Successor_Relation): Removed. + (Is_Forced_Edge, Is_Invocation_Edge, Is_Recorded_Cycle, + Is_Recorded_Edge, Is_With_Edge, Iterate_Edges_Of_Cycle, Kind, + Length): New routine. + (Lib_Vertex): Removed. + (Line, Links_Vertices_In_Same_Component, + Maximum_Invocation_Edge_Count, Next, Normalize_And_Add_Cycle, + Normalize_Cycle_Path, Number_Of_Cycles, Path, Precedence, + Remove_Vertex_And_Complement, Sequence_Next_Cycle): New routines. + (Sequence_Next_IGE_Id): Renamed to Sequence_Next_Edge. + (Sequence_Next_IGV_Id): Renamed to Sequence_Next_Vertex. + (Sequence_Next_LGE_Id): Renamed to Sequence_Next_Edge. + (Sequence_Next_LGV_Id): Renamed to Sequence_Next_Vertex. + (Set_Is_Existing_Predecessor_Successor_Relation): Removed. + (Set_Is_Recorded_Cycle, Set_Is_Recorded_Edge, + Set_LGC_Attributes, Spec_Vertex, Trace_Cycle, Trace_Edge, + Trace_Eol, Trace_Vertex): New routines. + * bindo-graphs.ads: Add with and use clauses for Types and + GNAT.Lists. Update the parameter profiles of most routines to + use better parameter names. Update the implementation of most + routine to use the new parameter names. Add the new + instantiated data structures IGE_Lists, IGV_Sets, LGC_Lists, + LGE_Lists, LGE_Sets, LGV_Sets, and RC_Sets. Add new type + Library_Graph_Cycle_Id along with an empty and initial value. + Remove component Lib_Vertex and add new components Body_Vertex + and Spec_Vertex to type Invocation_Graph_Vertex_Attributes. Add + new type Library_Graph_Cycle_Kind. Add new iterators + All_Cycle_Iterator and Edges_Of_Cycle_Iterator. Add new type + Library_Graph_Cycle_Attributes. Add new components + Cycle_Attributes, Cycles, and Dynamically_Elaborated to type + Library_Graph_Attributes. + (Body_Vertex, Column, Destroy_Invocation_Graph_Edge, + Destroy_Library_Graph_Cycle_Attributes, + Destroy_Library_Graph_Edge, Extra, File_Name, Find_Cycles, + Has_Elaborate_All_Cycle, Has_Next, Hash_Library_Graph_Cycle, + Hash_Library_Graph_Cycle_Attributes, Highest_Precedence_Cycle, + In_Same_Component, Invocation_Edge_Count, + Invocation_Graph_Encoding, Is_Dynamically_Elaborated, + Is_Elaborate_All_Edge, Is_Elaborate_Body_Edge, + Is_Elaborate_Edge, Is_Forced_Edge, Is_Invocation_Edge, + Is_With_Edge, Iterate_All_Cycles, Iterate_Edges_Of_Cycle, Kind): + New routines. + (Length, Lib_Vertex, (Line, Next, Number_Of_Cycles, Present, + Same_Library_Graph_Cycle_Attributes, Spec_Vertex): New routines. + * bindo-units.adb (File_Name, Invocation_Graph_Encoding): New + routines. + * bindo-units.ads: Add new instantiated data structure + Unit_Sets. + (File_Name, Invocation_Graph_Encoding): New routine. + * bindo-validators.adb: Remove with and use clauses for GNAT and + GNAT.Sets. Remove membership set US. Update the parameter + profiles of most routines to use better parameter names. Update + the implementation of most routine to use the new parameter + names. + (Validate_Cycle, Validate_Cycle_Path, Validate_Cycles, + Validate_Invocation_Graph_Vertex): Remove the validation of + component Lib_Vertex. Add the validation of components + Body_Vertex and Spec_Vertex. + (Write_Error): New routine. + * bindo-validators.ads (Validate_Cycles): New routine. + * bindo-writers.adb: Update the parameter profiles of most + routines to use better parameter names. Update the + implementation of most routine to use the new parameter names. + (Write_Cycle, Write_Cyclic_Edge, Write_Cycles): New routines. + (Write_Invocation_Graph_Vertex): Remove the output of component + Lib_Vertex. Add the output of components Body_Vertex and + Spec_Vertex. + * bindo-writers.ads (Write_Cycles): New routine. + * debug.adb: Use binder switches -d_C and -d_P, add + documentation on their usage. + * gnatbind.adb: Remove with and use clauses for Binde. Delegate + the choice of elaboration mechanism to Bindo. + * lib-writ.adb (Column, Extra, Invoker, Kind, Line, Locations, + Name, Placement, Scope, Signature, Target): Removed. + (Write_Invocation_Graph): Moved at the top level. + (Write_Invocation_Graph_Attributes): New routine. + (Write_Invocation_Relation, Write_Invocation_Signature): Moved + at the top level. + * lib-writ.ads: Add a documentation section on invocation graph + attributes. + * sem_elab.adb (Body_Placement_Of): New routine. + (Declare_Invocation_Construct): Update the call to + Add_Invocation_Construct. + (Declaration_Placement_Of_Node): New routine. + (Get_Invocation_Attributes): Correct the retrieval of the + enclosing subprogram where the postcondition procedure lives. + (Placement_Of, Placement_Of_Node): Removed. + (Record_Invocation_Graph): Record the encoding format used. + (Record_Invocation_Graph_Encoding): New routine. + (Record_Invocation_Relation): Update the call to + Add_Invocation_Relation. + (Spec_Placement_Of): Removed. + * libgnat/g-lists.ads, libgnat/g-lists.adb (Equal): New routine. + +2019-07-05 Ed Schonberg + + * checks.adb (Apply_Predicate_Check): Except within the + subprogram body that defines the formal, do not apply predicate + check on a formal IN parameter: such a check is redundant and + its expansion can lead to out-of-scope references when it is + originates in a function call in a precondition, + +2019-07-05 Yannick Moy + + * sem_res.adb (Resolve_Call): Cannot inline in quantified + expressions. + * sem_util.adb, sem_util.ads (In_Quantified_Expression): New + function. + +2019-07-05 Bob Duff + + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Fix typo. + * gnat_rm.texi: Regenerate. + +2019-07-05 Bob Duff + + * exp_attr.adb (Input): Take the No_Stream_Optimizations + restriction into account. + +2019-07-05 Claire Dross + + * libgnat/a-cofove.ads, libgnat/a-cofove.adb: Definite formal + vectors are now always bounded so that they do not need to be + limited anymore. + +2019-07-05 Dmitriy Anisimkov + + * libgnat/g-traceb.ads, libgnat/g-traceb.adb (Call_Chain): New + function. + +2019-07-04 James Clarke + + * libgnarl/s-osinte__kfreebsd-gnu.ads (clockid_t): Make type + definition public. + (CLOCK_REALTIME): Make value public. + +2019-07-04 Javier Miranda + + * exp_tss.adb (Init_Proc): Adding missing support for access to + subprograms and access to protected subprograms of non-default + C++ constructors. + +2019-07-04 Eric Botcazou + + * gnat1drv.adb (Adjust_Global_Switches): Use proper interface to + set the validity settings in CodePeer mode. + * par-load.adb (Load): Remove all code dealing with validity + settings. + * validsw.ads (Validity_Check_Copies): Alphabetize. + * validsw.adb (Reset_Validity_Check_Options): Set all options to + off. + (Save_Validity_Check_Options): Save all options. + +2019-07-04 Hristian Kirtchev + + * exp_ch3.adb, exp_ch4.adb, exp_ch4.ads, exp_ch5.adb, + exp_ch7.adb, exp_ch9.adb, exp_ch11.adb, exp_unst.adb, + rtsfind.ads, sem_attr.adb, sem_ch10.adb, sem_ch12.adb, + sem_ch13.adb, sem_dim.adb, sem_disp.adb, xref_lib.adb: Minor + reformatting. + +2019-07-04 Joffrey Huguet + + * libgnarl/a-taside.ads: Add assertion policy to ignore + preconditions. + (Abort_Task, Is_Terminated, Is_Callable): Add preconditions. + +2019-07-04 Eric Botcazou + + * doc/gnat_rm/implementation_defined_pragmas.rst: Fix + capitalization and parenthesis glitches. + * gnat_rm.texi: Regenerate. + +2019-07-04 Ed Schonberg + + * sem_ch10.adb (Remove_Context_Clauses): Handle properly the + removal of a limited_with_clause which appears in the library + unit oF the main unit, when some other unit in the context has a + regular with_clause on the same unit, to prevent spurious + visibility errors in the subsequent analysis of pending instance + bodies. + +2019-07-04 Hristian Kirtchev + + * sem_elab.adb: Add new type Elaboration_Phase_Status along with + a global to keep track of the elaboration phase status. + Initialize all internal data structures to Nil for services + Elaborated_Units, Internal_Representation, and Scenario_Storage. + (Build_Call_Marker): Do not create a call marker when the + elaboration phase is not active. + (Build_Variable_Reference_Marker): Do not create a call marker + when the elaboration phase is not active. + (Check_Elaboration_Scenarios): Destroy all internal structures + when the elaboration phase does not have to run. Do not execute + when the elaboration phase is not active. + (Elaboration_Phase_Active): New routine. + (Finalize_All_Data_Structures): New routine. + (Initialize): Initialize all internal data structures and signal + that the elaboration phase has started. + (Initialize_All_Data_Structures): New routine. + (Initialize_Elaborated_Units): Initialize all internal data + structures. + (Initialize_Internal_Representation): Initialize all internal + data structures. + (Initialize_Scenario_Storage): Initialize all internal data + structures. + (Kill_Elaboration_Scenario): Do not execute when the elaboration + phase is not active. + (Set_Elaboration_Phase): New routine. + (Update_Elaboration_Scenario): Do not execute when the + elaboration phase is not active. + +2019-07-04 Gary Dismukes + + * sem_ch6.adb (Analyze_Subprogram_Body_Helper): The special + treatment of calling Mask_Unfrozen_Types must also be done in + the case of an Ignored_Ghost_Entity, because Expander_Active is + False in that case. + +2019-07-04 Yannick Moy + + * sem_prag.adb (Check_Library_Level_Entity): Update for new rule + on SPARK_Mode. + +2019-07-04 Justin Squirek + + * sem_disp.adb (Check_Controlling_Formals): Obtain the full view + before type comparison. + +2019-07-04 Ed Schonberg + + * exp_ch4.ads, exp_ch4.adb (Build_Eq_Call): New visible + subprogram, extracted from Expand_Composite_Equality, to handle + properly the composition of equality for variant record types. + * exp_ch3.adb (MAke_Eq_If): Use Build_Eq_Call for each + component, to handle properly the case of a component with a + user-defined equality. Revert to predefined equality if the + user-defined operation is abstract, to maintain compatibility + with older versions, + +2019-07-04 Justin Squirek + + * exp_ch3.adb (Build_Initialization_Call): Fixup + *_skip_null_excluding_check argument to handle new default. + (Init_Formals): Make *_skip_null_excluding_check formal default + to False + * exp_ch4.adb (Expand_N_Allocator): Add comment to note heavy + code duplication + +2019-07-04 Bob Duff + + * sem_ch3.adb (Access_Definition): Do not create a master unless + Tasking_Allowed. Otherwise, this fails on restricted runtimes. + +2019-07-04 Hristian Kirtchev + + * sem_util.adb (Propagate_DIC_Attributes): Do not propagate the + Default_Initial_Condition attributes to an incomplete type. + +2019-07-04 Ed Schonberg + + * sem_attr.adb (Check_Array_Type): An array type attribute such + as 'First can be applied to an unconstrained array tyope when + the attribute reference appears within an aspect specification + and the prefix is a current instance, given that the prefix of + the attribute will become a formal of the subprogram that + implements the aspect (typically a predicate check). + +2019-07-04 Piotr Trojanek + + * sem_util.adb (Yields_Synchronized_Object): Fix typos in + comments. + +2019-07-04 Yannick Moy + + * sem_util.adb (Yields_Synchronized_Object): Adapt to new SPARK + rule. + +2019-07-04 Yannick Moy + + * sem_spark.adb (Check_Statement): Only check permission of + object in extended return when it is of a deep type. + +2019-07-04 Justin Squirek + + * sem_ch12.adb (Perform_Appropriate_Analysis): Added for + selecting which type of analysis based on wheither the + instantiation is a generic at the library-level. In which case + expansion during analysis. + (Preanalyze_Actuals): Modify calls to Analyze to use the new + routine. + +2019-07-04 Ed Schonberg + + * exp_unst.adb: Handle conditional expressions. + +2019-07-04 Yannick Moy + + * sem_spark.adb (Check_Package_Spec, Check_Package_Body): Only + analyze parts of the code marked in SPARK. + +2019-07-04 Hristian Kirtchev + + * erroutc.adb, exp_aggr.adb, inline.adb, opt.adb, sem_ch3.adb: + Minor reformatting. + +2019-07-04 Yannick Moy + + * sem_spark.adb (Explanation, Get_Expl): New functions to get + the explanation for a permission mismatch. + (Perm_Error, Perm_Mismatch, Perm_Error_Loop_Exit): Take + explanation into account for issuing a more precise error + message. + (Set_Perm_Prefixes, Set_Perm_Extensions, + Set_Perm_Extensions_Move): Pass suitable argument for the + explanation node. + +2019-07-04 Arnaud Charlet + + * exp_aggr.adb (In_Place_Assign_OK): Moved to top level and add + support for record aggregates. + (Component_Check): Use Is_CCG_Supported_Aggregate instead of a + similar local predicate. + (Convert_To_Assignments): Take advantage of In_Place_Assign_OK + predicate when possible. + (Is_CCG_Supported_Aggregate): Return False for records with + representation clauses and fix the logic for dealing with nested + aggregates. + +2019-07-04 Piotr Trojanek + + * opt.adb (Set_Config_Switches): Keep assertions policy as + enabled when analysing internal units in GNATprove mode. + +2019-07-04 Arnaud Charlet + + * exp_ch4.adb (Expand_Short_Circuit_Operator): Strip + N_Variable_Reference_Marker when checking for the presence of + actions. + +2019-07-04 Arnaud Charlet + + * exp_aggr.adb (Check_Component): Take into account type + conversions. + +2019-07-04 Dmitriy Anisimkov + + * doc/gnat_ugn/platform_specific_information.rst: Document + Windows socket timeout particularity. + * gnat_ugn.texi: Regenerate. + * gsocket.h: Include versionhelpers.h. + * socket.c (__gnat_minus_500ms): New function. + * libgnat/g-sothco.ads (Minus_500ms_Windows_Timeout): New + imported function. + * libgnat/g-socket.adb (Set_Socket_Option): Refactor to remove + 500ms from the requested timeout only on old Windows version. + +2019-07-04 Thomas Quinot + + * get_scos.adb: Remove bogus, dead code. + +2019-07-04 Ed Schonberg + + * sem_dim.adb (Analyze_Dimension_Array_Aggregate): If the + component is an entity name, its dimensions are those of its + type. + +2019-07-03 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document new flags in + GNATpp. + +2019-07-03 Hristian Kirtchev + + * binde.adb: Remove with clause for System.OS_Lib. + (Force_Elab_Order): Refactor the majority of the code in Butil. + Use the new forced units iterator to obtain unit names. + * bindo-builders.adb: Add with and use clauses for Binderr, + Butil, Opt, Output, Types, GNAT, and GNAT.Dynamic_HTables. Add + a hash table which maps units to line number in the forced + elaboration order file. + (Add_Unit): New routine. + (Build_Library_Graph): Create forced edges between pairs of + units listed in the forced elaboration order file. + (Create_Forced_Edge, Create_Forced_Edges, Destroy_Line_Number, + Duplicate_Unit_Error, Hash_Unit, Internal_Unit_Info, + Is_Duplicate_Unit, Missing_Unit_Info): New routines. + * bindo-graphs.adb (Is_Internal_Unit, Is_Predefined_Unit): + Refactor some of the behavior to Bindo-Units. + * bindo-graphs.ads: Enable the enumeration literal for forced + edges. + * bindo-units.adb, bindo-units.ads (Is_Internal_Unit, + Is_Predefined_Unit): New routines. + * butil.adb: Add with and use clauses for Opt, GNAT, and + System.OS_Lib. Add with clause for Unchecked_Deallocation. + (Has_Next, Iterate_Forced_Units, Next, Parse_Next_Unit_Name, + Read_Forced_Elab_Order_File): New routines. + * butil.ads: Add with and use clauses for Types. Add new + iterator over the units listed in the forced elaboration order + file. + (Has_Next, Iterate_Forced_Units, Next): New routine. + * namet.adb, namet.ads (Present): New routine. + +2019-07-03 Bob Duff + + * sem_ch3.adb (Access_Definition): The code was creating a + master in the case where the designated type is a class-wide + interface type. Create a master in the noninterface case as + well. That is, create a master for all limited class-wide types. + +2019-07-03 Yannick Moy + + * erroutc.adb (Sloc_In_Range): New function to determine whether + the range of a pragma Warnings covers a location, taking + instantiations into account. + +2019-07-03 Johannes Kanig + + * osint.ads, osint.adb (Get_First_Main_File_Name): New routine + to access the first file provided on the command line. + +2019-07-03 Ed Schonberg + + * inline.adb (Process_Formals_In_Aspects): New procedure within + Expand_Inlined_Call, to perform a replacement of references to + formals that appear in aspect specifications within the body + being inlined. + +2019-07-03 Justin Squirek + + * sem_ch8.adb (Analyze_Object_Renaming): Add call to search for + the appropriate actual subtype of the object renaming being + analyzed. + (Check_Constrained_Object): Minor cleanup. + +2019-07-03 Yannick Moy + + * sem_spark.adb (Get_Observed_Or_Borrowed_Expr): New function to + return go through traversal function call. + (Check_Type): Consistently use underlying type. + (Get_Perm): Adapt for case of elaboration code where variables + are not declared in the environment. Remove incorrect handling + of borrow and observe. + +2019-07-03 Hristian Kirtchev + + * inline.adb (Build_Return_Object_Formal): New routine. + (Can_Split_Unconstrained_Function): Code clean up. + (Copy_Formals,Copy_Return_Object): New routines. + (Split_Unconstrained_Function): Code clean up and refactoring. + +2019-07-03 Gary Dismukes + + * bindo-augmentors.adb, bindo-augmentors.ads, + bindo-builders.ads, bindo-elaborators.adb, sem_ch12.adb, + sem_ch13.adb, sem_spark.adb, sinfo.ads: Minor editorial + corrections and reformatting. + +2019-07-03 Bob Duff + + * sem_warn.adb (Check_Infinite_Loop_Warning): Avoid the warning + if an Iterator_Specification is present. + +2019-07-03 Bob Duff + + * doc/gnat_ugn/gnat_utility_programs.rst: Document default + new-line behavior. + +2019-07-03 Hristian Kirtchev + + * ali.adb: Add with and use clauses for GNAT, + GNAT.Dynamic_HTables, and Snames. Add a map from invocation + signature records to invocation signature ids. Add various + encodings of invocation-related attributes. Sort and update + table Known_ALI_Lines. + (Add_Invocation_Construct, Add_Invocation_Relation, + Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind, + Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind, + Code_To_Invocation_Graph_Line_Kind, Destroy, Hash): New + routines. + (Initialize_ALI): Sort the initialization sequence. Add + initialization for all invocation-related tables. + (Invocation_Construct_Kind_To_Code, + Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code, + Invocation_Signature_Of, Present): New routines. + (Scan_ALI): Add the default values for invocation-related ids. + Scan invocation graph lines. + (Scan_Invocation_Graph_Line): New routine. + * ali.ads: Add with clause for GNAT.Dynamic_Tables. Add types + for invocation constructs, relations, and signatures. Add + tables for invocation constructs, relations, and signatures. + Update Unit_Record to capture invocation-related ids. Relocate + table Unit_Id_Tables and subtypes Unit_Id_Table, Unit_Id_Array + from Binde. + (Add_Invocation_Construct, Add_Invocation_Relation, + Body_Placement_Kind_To_Code, Code_To_Body_Placement_Kind, + Code_To_Invocation_Construct_Kind, Code_To_Invocation_Kind, + Code_To_Invocation_Graph_Line_Kind, + Invocation_Construct_Kind_To_Code, + Invocation_Graph_Line_Kind_To_Code, Invocation_Kind_To_Code, + Invocation_Signature_Of, Present): New routines. + * binde.adb: Add with and use clause for Types. Add use clause + for ALI.Unit_Id_Tables; + * binde.ads: Relocate table Unit_Id_Tables and subtypes + Unit_Id_Table, Unit_Id_Array to ALI. + * bindgen.adb: Remove with and use clause for ALI. + * bindgen.ads: Remove with and use clause for Binde. Add with + and use clause for ALI. + * bindo.adb, bindo.ads, bindo-augmentors.adb, + bindo-augmentors.ads, bindo-builders.adb, bindo-builders.ads, + bindo-diagnostics.adb, bindo-diagnostics.ads, + bindo-elaborators.adb, bindo-elaborators.ads, bindo-graphs.adb, + bindo-graphs.ads, bindo-units.adb, bindo-units.ads, + bindo-validators.adb, bindo-validators.ads, bindo-writers.adb, + bindo-writers.ads: New units. + * debug.adb: Use and describe GNAT debug switches -gnatd_F and + -gnatd_G. Add GNATbind debug switches in the ranges dA .. dZ, + d.a .. d.z, d.A .. d.Z, d.1 .. d.9, d_a .. d_z, d_A .. d_Z, and + d_1 .. d_9. Use and describe GNATbind debug switches -d_A, + -d_I, -d_L, -d_N, -d_O, -d_T, and -d_V. + * exp_util.adb, exp_util.ads (Exceptions_OK): Relocate to + Sem_Util. + * gnatbind.adb: Add with and use clause for Bindo. Use the new + Bindo elaboration order only when -d_N is in effect. + * lib-writ.adb + (Column, Extra, Invoker, Kind, Line, Locations, Name, Placement, + Scope, Signature, Target): New routines. + (Write_ALI): Output all invocation-related data. + (Write_Invocation_Graph): New routine. + * lib-writ.ads: Document the invocation graph ALI line. + * namet.adb, namet.ads (Present): New routines. + * sem_ch8.adb (Find_Direct_Name): Capture the status of + elaboration checks and warnings of an identifier. + (Find_Expanded_Name): Capture the status of elaboration checks + and warnings of an expanded name. + * sem_ch12.adb (Analyze_Generic_Package_Declaration): Ensure + that invocation graph-related data within the body of the main + unit is encoded in the ALI file. + (Analyze_Generic_Subprogram_Declaration): Ensure that invocation + graph-related data within the body of the main unit is encoded + in the ALI file. + (Analyze_Package_Instantiation): Perform minimal decoration of + the instance entity. + (Analyze_Subprogram_Instantiation): Perform minimal decoration + of the instance entity. + * sem_elab.adb: Perform heavy refactoring of all code. The unit + is now split into "services" which specialize in one area of ABE + checks. Add processing in order to capture invocation-graph + related attributes of the main unit, and encode them in the ALI + file. The Processing phase can now operate in multiple modes, + all described by type Processing_Kind. Scenarios and targets + are now distinct at the higher level, and carry their own + representations. This eliminates the need to constantly + recompute their attributes, and offers the various processors a + uniform interface. The various initial states of the Processing + phase are now encoded using type Processing_In_State, and + xxx_State constants. + * sem_elab.ads: Update the literals of type + Enclosing_Level_Kind. Add Inline pragmas on several routines. + * sem_prag.adb (Process_Inline): Ensure that invocation + graph-related data within the body of the main unit is encoded + in the ALI file. + * sem_util.adb (Enclosing_Generic_Body, Enclosing_Generic_Unit): + Code clean up. + (Exceptions_OK): Relocated from Sem_Util. + (Mark_Save_Invocation_Graph_Of_Body): New routine. + * sem_util.ads (Exceptions_OK): Relocated from Sem_Util. + (Mark_Save_Invocation_Graph_Of_Body): New routine. + * sinfo.adb (Is_Elaboration_Checks_OK_Node): Now applicable to + N_Variable_Reference_Marker. + (Is_Elaboration_Warnings_OK_Node): Now applicable to + N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker. + (Is_Read): Use Flag4. + (Is_SPARK_Mode_On_Node): New applicable to + N_Variable_Reference_Marker. + (Is_Write): Use Flag5. + (Save_Invocation_Graph_Of_Body): New routine. + (Set_Is_Elaboration_Checks_OK_Node): Now applicable to + N_Variable_Reference_Marker. + (Set_Is_Elaboration_Warnings_OK_Node): Now applicable to + N_Expanded_Name, N_Identifier, N_Variable_Reference_Marker. + (Set_Is_SPARK_Mode_On_Node): New applicable to + N_Variable_Reference_Marker. + (Set_Save_Invocation_Graph_Of_Body): New routine. + * sinfo.ads: Update the documentation of attributes + Is_Elaboration_Checks_OK_Node, Is_Elaboration_Warnings_OK_Node, + Is_SPARK_Mode_On_Node. Update the flag usage of attributes + Is_Read, Is_Write. Add attribute Save_Invocation_Graph_Of_Body + and update its occurrence in nodes. + (Save_Invocation_Graph_Of_Body): New routine along with pragma + Inline. + (Set_Save_Invocation_Graph_Of_Body): New routine along with + pragma Inline. + * switch-b.adb (Scan_Binder_Switches): Refactor the scanning of + debug switches. + (Scan_Debug_Switches): New routine. + * libgnat/g-dynhta.adb, libgnat/g-dynhta.ads (Contains): New routine. + * libgnat/g-graphs.adb (Associate_Vertices): Update the use of + Component_Vertex_Iterator. + (Contains_Component, Contains_Edge, Contains_Vertex, Has_Next): + Reimplemented. + (Iterate_Component_Vertices): New routine. + (Iterate_Vertices): Removed. + (Next): Update the parameter profile. + (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New + routines. + * libgnat/g-graphs.ads: Update the initialization of + No_Component. Add type Component_Vertex_Iterator. Remove type + Vertex_Iterator. + (Has_Next): Add new versions and remove old ones. + (Iterate_Component_Vertices): New routine. + (Iterate_Vertices): Removed. + (Next): Add new versions and remove old ones. + (Number_Of_Component_Vertices, Number_Of_Outgoing_Edges): New + routines. + * libgnat/g-sets.adb (Contains): Reimplemented. + * gcc-interface/Make-lang.in (GNATBIND_OBJS): Add + GNAT.Dynamic_HTables, GNAT.Graphs and Bindo units. + * rtsfind.ads: Remove extra space. + +2019-07-03 Yannick Moy + + * sem_spark.adb: Add support for locally borrowing and observing + a path. + (Get_Root_Object): Add parameter Through_Traversal to denote + when we are interesting in getting to the traversed parameter. + (Is_Prefix_Or_Almost): New function to support detection of + illegal access to borrowed or observed paths. + (Check_Pragma): Add analysis of assertion pragmas. + +2019-07-03 Ed Schonberg + + * sem_ch13.adb (Build_Predicate_Functions): In a generic context + we do not build the bodies of predicate fuctions, but the + expression in a static predicate must be elaborated to allow + case coverage checking within the generic unit. + (Build_Discrete_Static_Predicate): In a generic context, return + without building function body once the + Static_Discrete_Predicate expression for the type has been + constructed. + +2019-07-03 Hristian Kirtchev + + * bindgen.adb, inline.adb, layout.adb, sem_ch12.adb, + sem_ch13.adb, sem_ch7.adb, styleg.adb: Minor reformatting. + +2019-07-03 Bob Duff + + * par-ch3.adb (P_Defining_Identifier): Call + Check_Defining_Identifier_Casing. + * style.ads, styleg.ads, styleg.adb + (Check_Defining_Identifier_Casing): New procedure to check for + mixed-case defining identifiers. + * stylesw.ads, stylesw.adb (Style_Check_Mixed_Case_Decls): New + flag for checking for mixed-case defining identifiers. + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: + Document new feature. + * gnat_ugn.texi: Regenerate. + +2019-07-03 Eric Botcazou + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst + (Warning message control): Document that -gnatw.z/Z apply to + array types. + * freeze.adb (Freeze_Entity): Give -gnatw.z warning for array + types as well, but not if the specified alignment is the minimum + one. + * gnat_ugn.texi: Regenerate. + +2019-07-03 Bob Duff + + * einfo.ads, exp_util.adb, layout.ads, sinfo.ads: Spell "laid" + correctly. + +2019-07-03 Ed Schonberg + + * sem_ch13.adb (Analyze_Attribute_Definition_Clause): No error + message on attribute applied to a renaming when the renamed + object is an aggregate (from code reading). + (Check_Aspect_At_End_Of_Declarations): In a generic context + where freeze nodes are not generated, the original expression + for an aspect may need to be analyzed to precent spurious + conformance errors when compared with the expression that is + anakyzed at the end of the current declarative list. + +2019-07-03 Eric Botcazou + + * layout.adb (Layout_Type): Do not set the component size of an + array with a scalar component if the component type is + overaligned. + +2019-07-03 Ed Schonberg + + * inline.adb (Make_Loop_Labels_Unique): New procedure to modify + the source code of subprograms that are inlined by the + front-end, to prevent accidental duplication between loop labels + in the inlined code and the code surrounding the inlined call. + +2019-07-03 Hristian Kirtchev + + * doc/gnat_ugn/elaboration_order_handling_in_gnat.rst: Update + the section on resolving elaboration circularities to eliminate + certain combinations of switches which together do not produce + the desired effect and confuse users. + * gnat_ugn.texi: Regenerate. + +2019-07-03 Arnaud Charlet + + * bindgen.adb (Gen_Main): Disable generation of reference to + Ada_Main_Program_Name for CCG. + * bindusg.adb (Display): Add -G to the command-line usage for + gnatbind. + * opt.ads (Generate_C_Code): Update comment. + * switch-b.adb (Scan_Binder_Switches): Add handling for -G. + +2019-07-03 Arnaud Charlet + + * sem_ch7.adb (Has_Referencer): Do not consider inlined + subprograms when generating C code, which allows us to generate + static inline subprograms. + +2019-07-03 Justin Squirek + + * sem_ch6.adb (Check_Conformance): Add expression checking for + constant modifiers in anonymous access types (in addition to + "non-null" types) so that they are considered "matching" for + subsequent conformance tests. + +2019-07-03 Arnaud Charlet + + * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst: + Clarify wording on No_Multiple_Elaboration. + * gnat_rm.texi: Regenerate. + +2019-07-03 Ed Schonberg + + * sem_ch8.adb (Find_Selected_Component): If the prefix is the + current instance of a type or subtype, complete the resolution + of the name by finding the component of the type denoted by the + selector name. + +2019-07-03 Eric Botcazou + + * doc/gnat_rm/interfacing_to_other_languages.rst (Interfacing to C): + Document that boolean types with convention C now map to C99 bool. + * gnat_rm.texi: Regenerate. + +2019-07-03 Javier Miranda + + * exp_attr.adb (Expand_Min_Max_Attribute): Code cleanup: + removing code that it is now never executed in the CCG compiler + (dead code). + +2019-07-02 Iain Sandoe + + * libgnat/system-darwin-ppc.ads: Set Stack_Check_Probes True for + PPC Darwin. + +2019-07-01 Ed Schonberg + + * sem_ch12.adb (Is_Defaulted): New predicate in + Check_Formal_Package_Intance, to skip the conformance of checks + on parameters of a formal package that are defaulted, + +2019-07-01 Hristian Kirtchev + + * checks.adb, exp_ch9.adb, exp_unst.adb, sem_ch4.adb, + sem_prag.adb, sem_spark.adb: Minor reformatting. + +2019-07-01 Ed Schonberg + + * sem_attr.adb (Analyze_Attribute, case Enum_Rep): Allow prefix + of attribute to be an attribute reference of a discrete type. + +2019-07-01 Eric Botcazou + + * sem_ch12.adb (Analyze_Subprogram_Instantiation): Move up + handling of Has_Pragma_Inline_Always and deal with + Has_Pragma_No_Inline. + +2019-07-01 Ed Schonberg + + * sem_ch3.adb (Build_Derived_Record_Type): If the parent type is + declared as a subtype of a private type with an inherited + discriminant constraint, its generated full base appears as a + record subtype, so we need to retrieve its oen base type so that + the inherited constraint can be applied to it. + +2019-07-01 Yannick Moy + + * sem_spark.adb: Completely rework the algorithm for ownership + checking, as the rules in SPARK RM have changed a lot. + * sem_spark.ads: Update comments. + +2019-07-01 Dmitriy Anisimkov + + * gsocket.h (Has_Sockaddr_Len): Use the offset of sin_family offset in + the sockaddr_in structure to determine the existence of length field + before the sin_family. + +2019-07-01 Ed Schonberg + + * sem_prag.adb (Analyze_Pragma, case Weak_External): Pragma only + applies to entities with run-time addresses, not to types. + +2019-07-01 Piotr Trojanek + + * einfo.adb, sem_ch7.adb, sem_prag.adb, sem_util.adb: Update + references to the SPARK RM after the removal of Rule 7.1.4(5). + +2019-07-01 Piotr Trojanek + + * sysdep.c: Cleanup references to LynuxWorks in docs and + comments. + +2019-07-01 Ed Schonberg + + * checks.adb (Insert_Valid_Check): Do not apply validity check + to variable declared within a protected object that uses the + Lock_Free implementation, to prevent unwarranted constant + folding, because entities within such an object msut be treated + as volatile. + +2019-07-01 Eric Botcazou + + * exp_ch9.adb (Check_Inlining): Deal with Has_Pragma_No_Inline. + +2019-07-01 Ed Schonberg + + * exp_unst.adb (Visit_Node, Check_Static_Type): Improve the + handling of private and incomplete types whose full view is an + access type, to detect additional uplevel references in dynamic + bounds. This is relevant to N_Free_Statement among others that + manipulate types whose full viww may be an access type. + +2019-07-01 Pat Rogers + + * doc/gnat_rm/representation_clauses_and_pragmas.rst: Correct + size indicated for R as a component of an array. + * gnat_rm.texi: Regenerate. + +2019-07-01 Justin Squirek + + * libgnat/s-win32.ads: Add definition for ULONG, modify + OVERLAPPED type, and add appropriate pragmas. + +2019-07-01 Bob Duff + + * gnat1drv.adb (gnat1drv): Call Write_ALI if the main unit is + ignored-ghost. + +2019-07-01 Yannick Moy + + * sem_ch4.adb (Operator_Check): Refine error message. + +2019-07-01 Piotr Trojanek + + * libgnat/a-calend.ads: Revert "Global => null" contracts on + non-pure routines. + +2019-07-01 Piotr Trojanek + + * exp_attr.adb, libgnat/g-graphs.ads: Fix typos in comments: + componant -> component. + +2019-07-01 Hristian Kirtchev + + * libgnat/g-graphs.adb: Use type Directed_Graph rather than + Instance in various routines. + * libgnat/g-graphs.ads: Change type Instance to Directed_Graph. + Update various routines that mention the type. + +2019-07-01 Hristian Kirtchev + + * libgnat/g-sets.adb: Use type Membership_Set rathern than + Instance in various routines. + * libgnat/g-sets.ads: Change type Instance to Membership_Set. + Update various routines that mention the type. + +2019-07-01 Hristian Kirtchev + + * libgnat/g-lists.adb: Use type Doubly_Linked_List rather than + Instance in various routines. + * libgnat/g-lists.ads: Change type Instance to + Doubly_Linked_List. Update various routines that mention the + type. + +2019-07-01 Hristian Kirtchev + + * libgnat/g-dynhta.adb: Use type Dynamic_Hash_Table rather than + Instance in various routines. + * libgnat/g-dynhta.ads: Change type Instance to + Dynamic_Hash_Table. Update various routines that mention the + type. + +2019-07-01 Hristian Kirtchev + + * exp_attr.adb, exp_ch7.adb, exp_unst.adb, sem_ch3.adb, + sem_util.adb, uintp.adb, uintp.ads: Minor reformatting. + +2019-07-01 Javier Miranda + + * exp_attr.adb (Expand_Min_Max_Attribute): Disable expansion of + 'Min/'Max on integer, enumeration, fixed point and floating + point types since the CCG backend now provides in file + standard.h routines to support it. + +2019-07-01 Hristian Kirtchev + + * impunit.adb: Add GNAT.Graphs to list Non_Imp_File_Names_95. + * Makefile.rtl, gcc-interface/Make-lang.in: Register unit + GNAT.Graphs. + * libgnat/g-dynhta.adb: Various minor cleanups (use Present + rather than direct comparisons). + (Delete): Reimplement to use Delete_Node. + (Delete_Node): New routine. + (Destroy_Bucket): Invoke the provided destructor. + (Present): New routines. + * libgnat/g-dynhta.ads: Add new generic formal Destroy_Value. + Use better names for the components of iterators. + * libgnat/g-graphs.adb, libgnat/g-graphs.ads: New unit. + * libgnat/g-lists.adb: Various minor cleanups (use Present + rather than direct comparisons). + (Delete_Node): Invoke the provided destructor. + (Present): New routine. + * libgnat/g-lists.ads: Add new generic formal Destroy_Element. + Use better names for the components of iterators. + (Present): New routine. + * libgnat/g-sets.adb, libgnat/g-sets.ads (Destroy, Preset, + Reset): New routines. + +2019-07-01 Dmitriy Anisimkov + + * libgnat/g-sothco.adb (Get_Address): Fix the case when AF_INET6 + is not defined. + +2019-07-01 Ed Schonberg + + * exp_attr.adb (Expand_Attribute_Reference, case Invalid_Value): + Resolve result of call to Get_Simple_Init_Val, which may be a + conversion of a literal. + +2019-07-01 Hristian Kirtchev + + * freeze.adb (Freeze_Expression): Remove the horrible useless + name hiding of N. Insert the freeze nodes generated by the + expression prior to the expression when the nearest enclosing + scope is transient. + +2019-07-01 Pierre-Marie de Rodat + + * doc/gnat_ugn/building_executable_programs_with_gnat.rst: Fix + formatting issues in the -gnatR section. + * gnat_ugn.texi: Regenerate. + +2019-06-30 Iain Sandoe + + * gnatlink.adb (Link_Step): Remove duplicate -static-libgcc switches. + Push -shared-libgcc explicitly, when it is the target default (unless + overidden by the static flag). + When the user has put an instance of shared/static-libgcc do not push + a duplicate of this. + +2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Beep up comment on SAVED, + and tweak comment on the assertion about the scopes of Itypes. Do not + skip the regular processing for Itypes that are E_Record_Subtype with + a Cloned_Subtype. Get the Cloned_Subtype for every E_Record_Subtype + if the type is dummy and hasn't got its own freeze node. + : Save again the DECL of the Cloned_Subtype, if any. + : Save again the DECL of the equivalent type. + (Gigi_Equivalent_Type) : New case. + +2019-06-29 Eric Botcazou + + * gcc-interface/utils.c (unchecked_convert): Tweak comment. Only skip + dereferences when padding to have the same size on both sides. Do it + for destination types with self-referential size too. + +2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : If the + type requires strict alignment, then set the RM size to the type size. + Rework handling of alignment and sizes of tagged types in ASIS mode. + (validate_size): Rename local variable and remove special handling for + strict-alignment types. + * gcc-interface/utils.c (finish_record_type): Constify local variables + and use properly typed constants. + +2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_field): Rework error messages for + fields requiring strict alignment, add explicit test on Storage_Unit + for position and size, and mention type alignment for position. + +2019-06-29 Eric Botcazou + + * gcc-interface/trans.c (mark_visited_r): Set TYPE_SIZES_GIMPLIFIED on + the main variant of a type, if any. + +2019-06-29 Eric Botcazou + + * gcc-interface/decl.c (set_nonaliased_component_on_array_type): Add + missing guard for the presence of TYPE_CANONICAL. + (set_reverse_storage_order_on_array_type): Likewise. + +2019-06-29 Eric Botcazou + + * gcc-interface/gigi.h (make_packable_type): Remove default value. + (value_factor_p): Tweak prototype. + * gcc-interface/decl.c (gnat_to_gnu_entity): Add comment. + (gnat_to_gnu_component_type): Likewise. + (gnat_to_gnu_field): Likewise. Fetch the position of the field earlier + and simplify the condition under which the type is packed. Declare + local variable is_bitfield. Pass 1 as max_align to make_packable_type + if it is set to true. + (copy_and_substitute_in_layout): Pass 0 to make_packable_type. + * gcc-interface/utils.c (make_packable_array_type): New function. + (make_packable_type): Use it to rewrite the type of array field. + (maybe_pad_type): Pass align parameter to make_packable_type. + (create_field_decl): Minor tweaks. + (value_factor_p): Assert that FACTOR is a power of 2 and replace the + modulo computation by a masking operation. + +2019-06-25 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity): Remove superfluous test + in previous change. + * gcc-interface/gigi.h (maybe_character_type): Fix formatting. + (maybe_character_value): Likewise. + +2019-06-24 Jan Hubicka + + * gcc-interface/decl.c (gnat_to_gnu_entity): Check that + type is array or integer prior checking string flag. + * gcc-interface/gigi.h (maybe_character_type): Likewise. + (maybe_character_value): Likewise. + +2019-06-24 Martin Sebor + + * gcc-interface/utils.c (handle_nonnull_attribute): Quote attribute + name. + +2019-06-18 Arnaud Charlet + + PR ada/80590 + * sem_ch5.adb (Analyze_Loop_Statement): Avoid exception propagation + during normal processing. + +2019-06-17 Arnaud Charlet + + PR ada/80590 + * exp_ch9.adb (Expand_N_Delay_Relative_Statement): Swap the two + conditions to avoid a unnecessary exception propagation in the default + case. + +2019-05-28 Eric Botcazou + + * gcc-interface/utils.c (handle_stack_protect_attribute): Move around. + +2019-05-28 Eric Botcazou + + * doc/gnat_rm/implementation_defined_pragmas.rst (Machine_Attribute): + Document additional optional parameters. + * sem_prag.adb (Analyze_Pragma) : Accept + more than one optional parameter. + * gcc-interface/decl.c (prepend_one_attribute_pragma): Alphabetize + the list of supported pragmas. Simplify the handling of parameters + and add support for more than one optional parameter. + * gcc-interface/utils.c (attr_cold_hot_exclusions): New constant. + (gnat_internal_attribute_table): Add entry for no_icf, noipa, flatten, + used, cold, hot, target and target_clones. + (begin_subprog_body): Do not create the RTL for the subprogram here. + (handle_noicf_attribute): New static function. + (handle_noipa_attribute): Likewise. + (handle_flatten_attribute): Likewise. + (handle_used_attribute): Likewise. + (handle_cold_attribute): Likewise. + (handle_hot_attribute): Likewise. + (handle_target_attribute): Likewise. + (handle_target_clones_attribute): Likewise. + +2019-05-28 Eric Botcazou + + * gcc-interface/trans.c (lvalue_required_for_attribute_p): Return 0 + for 'Size too. + (Identifier_to_gnu): Use the actual subtype for a reference to a + packed array in a return statement. + (Attribute_to_gnu) : Do not strip VIEW_CONVERT_EXPRs from + the prefix in every case. + +2019-05-28 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu): Remove superfluous tests on + Backend_Overflow_Checks_On_Target and rework comments. + +2019-05-28 Eric Botcazou + + * gcc-interface/trans.c (walk_nesting_tree): New static function. + (finalize_nrv): Use it to walk the entire nesting tree. + +2019-05-28 Eric Botcazou + + * gcc-interface/decl.c (gnat_to_gnu_entity) : Remove + obsolete test on Is_For_Access_Subtype. + +2019-05-28 Eric Botcazou + + * gcc-interface/decl.c (components_to_record): Set a name on the type + created for the REP part, if any. + * gcc-interface/utils.c (finish_record_type): Only take the maximum + when merging sizes for a variant part at offset 0. + (merge_sizes): Rename has_rep parameter into max. + +2019-05-28 Eric Botcazou + + * gcc-interface/utils.c (gnat_internal_attribute_table): Add support + for stack_protect attribute. + (handle_stack_protect_attribute): New static function. + +2019-05-28 Eric Botcazou + + * gcc-interface/decl.c (intrin_arglists_compatible_p): Do not return + false if the internal builtin uses a variable list. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): Do not initialize the temporary + created out of addressability concerns if it's for the _Init parameter + of an initialization procedure. + +2019-05-27 Eric Botcazou + + * gcc-interface/ada-builtin-types.def: New file. + * gcc-interface/ada-builtins.def: Likewise. + * gcc-interface/ada-tree.h (BUILT_IN_LIKELY): New macro. + (BUILT_IN_UNLIKELY): Likewise. + * gcc-interface/trans.c (independent_iterations_p): Initialize the + auto-vector to 16 elements. + (Call_to_gnu): Remove local variable and change the vector of actual + parameters to an auto-vector. Do not convert actual parameters to + the argument type for front-end built-in functions. Add support for + front-end built-in functions. + (build_noreturn_cond): Use internal instead of built-in function. + * gcc-interface/utils.c (c_builtin_type): Include ada-builtin-types.def + (install_builtin_function_types): Likewise. + (install_builtin_functions): Include ada-builtins.def first. + +2019-05-27 Eric Botcazou + + * gcc-interface/utils.c (maybe_pad_type): Issue the warning for the + specific case of component types preferably. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (Identifier_to_gnu): Minor tweaks. + (gnat_to_gnu): Do not convert the result if it is a reference to an + unconstrained array used as the prefix of an attribute reference that + requires an lvalue. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (Gigi_Types_Compatible): New predicate. + (Identifier_to_gnu): Use it to assert that the type of the identifier + and that of its entity are compatible for gigi. Rename a couple of + local variables and separate the processing of the result type. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (Call_to_gnu): Use the unpadded type when + putting back an intermediate conversion the type of the actuals. + +2019-05-27 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Convert the + count to the unsigned version of its base type before proceeding. + +2019-05-16 Martin Sebor + + * gcc-interface/trans.c (check_inlining_for_nested_subprog): Quote + reserved names. + +2019-05-08 Arnaud Charlet + + * standard.ads.h: New file. + +2019-05-07 Rainer Orth + + * gcc-interface/Makefile.in (install-gcc-specs): Use foreach. + Honor DESTDIR. + +2019-04-29 Michael K. Darling + + * gnatvsn.ads: Bump Library_Version to 10. + +2019-04-24 Ramana Radhakrishnan + Bernd Edlinger + Jakub Jelinek + + PR target/89093 + * raise-gcc.c (TARGET_ATTRIBUTE): Define. + (continue_unwind, personality_body, PERSONALITY_FUNCTION): Add + TARGET_ATTRIBUTE. + +2019-04-07 Eric Botcazou + + * libgnat/i-cexten.ads (CFloat_128): New type. + +2019-03-22 Dmitriy Anisimkov + + PR ada/89583 + * libgnat/g-socket.adb (Bind_Socket, Connect_Socket, + Send_Socket): Fix the computation of structure lengths passed to + low level routines. + (Is_IPv6_Address): Fix the number of expected colons. + +2019-03-11 Martin Liska + + * gcc-interface/misc.c (gnat_post_options): Wrap option name in string + format message and fix GNU coding style. + +2019-02-08 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Minor tweak. + * gcc-interface/utils.c (convert): Do not pad when doing an unchecked + conversion here. Use TREE_CONSTANT throughout the function. + (unchecked_convert): Also pad if the source is a CONSTRUCTOR and the + destination is a more aligned array type or a larger aggregate type, + but not between original and packable versions of a type. + +2019-02-08 Eric Botcazou + + * gcc-interface/utils.c (max_size) : Be prepared for an + operand with VOID_TYPE. + +2019-02-08 Eric Botcazou + + * gcc-interface/trans.c (elaborate_all_entities): Do not elaborate the + entities of a package renaming another one. + +2019-02-08 Eric Botcazou + + * gcc-interface/trans.c (Regular_Loop_to_gnu): Replace tests on + individual flag_unswitch_loops and flag_tree_loop_vectorize switches + with test on global optimize switch. + (Raise_Error_to_gnu): Likewise. + +2019-02-07 Eric Botcazou + + * libgnarl/s-linux__sparc.ads (ETIMEDOUT): Set to correct value. + +2019-02-06 Arnaud Charlet + + * libgnarl/s-linux__x32.ads: Resync list of signals with s-linux.ads + +2019-01-27 Eric Botcazou + + * repinfo.adb (List_Component_Layout): Remove superfluous space for + zero-sized field. + * gcc-interface/ada-tree.h (TYPE_IS_EXTRA_SUBTYPE_P): New macro. + * gcc-interface/gigi.h (create_extra_subtype): Declare. + * gcc-interface/decl.c (TYPE_ARRAY_SIZE_LIMIT): Likewise. + (update_n_elem): New function. + (gnat_to_gnu_entity): Use create_extra_subtype to create extra subtypes + instead of doing it manually. + : Use update_n_elem to compute the maximum size. Use the + index type instead of base type for the bounds. Set TYPE_ARRAY_MAX_SIZE + of the array to the maximum size. + : Create an extra subtype using the index type of the + base array type for self-referential bounds. Use update_n_elem to + compute the maximum size. Set TYPE_ARRAY_MAX_SIZE of the array to the + maximum size. + (gnat_to_gnu_field): Clear DECL_NONADDRESSABLE_P on discriminants. + * gcc-interface/misc.c (gnat_get_alias_set): Return the alias set of + the base type for an extra subtype. + (gnat_type_max_size): Remove obsolete code. + * gcc-interface/trans.c (Attribute_to_gnu): Minor tweak. + (can_be_lower_p): Deal with pathological types. + * gcc-interface/utils.c (create_extra_subtype): New function. + (create_field_decl): Minor tweak. + (max_size) : Compute a better value by using the extra + subtypes on the self-referential bounds. + : Rewrite. Deal with "negative value" in unsigned types. + : Likewise. + * gcc-interface/utils2.c (compare_arrays): Retrieve the original bounds + of the arrays upfront. Swap only if the second length is not constant. + Use comparisons on the original bounds consistently for the null tests. + (build_binary_op): Use TYPE_IS_EXTRA_SUBTYPE_P macro. + (build_allocator): Minor tweak. + +2019-01-27 Eric Botcazou + + * gcc-interface/decl.c (array_type_has_nonaliased_component): Return + the same value for every dimension of a multidimensional array type. + +2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (Regular_Loop_to_gnu): Use the SLOC of the + iteration scheme, if present, throughout the translation. + +2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (gnat_to_gnu) : Use + DECL_SIZE_UNIT instead of TYPE_SIZE_UNIT for the size to be assigned + by a call to memset if the LHS is a DECL. + +2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (struct loop_info_d): Remove artificial field. + (Loop_Statement_to_gnu): Do not set it. + +2019-01-26 Eric Botcazou + + * gcc-interface/trans.c (Iterate_Acc_Clause_Arg): Fix formatting. + (Acc_gnat_to_gnu): Likewise. + (Acc_Data_to_gnu): Likewise. + (Acc_Var_to_gnu): Likewise. + (Acc_Reduc_to_gnu): Likewise. + (Acc_Size_List_to_gnu): Likewise. + (Pragma_to_gnu) : Likewise. + ): Likewise. + (find_loop_for): Remove default value for parameters. + * gcc-interface/trans.c (gnat_to_gnu) : Merge into... + ): ...this. + +2019-01-26 Eric Botcazou + + * gcc-interface/decl.c (annotate_value) : Use test on + the sign bit instead of on the sign of the value. + : Turn addition of negative constant into subtraction. + : Add test for degenerate case. + : Simplify. + +2019-01-18 Sebastian Huber + + * s-oscons-tmplt.c (AF_INET6): Do not undefine for RTEMS. + +2019-01-09 Sandra Loosemore + + PR other/16615 + * exp_ch11.adb: Change "can not" to "cannot". + * sem_ch4.adb: Likewise. + +2019-01-09 Sandra Loosemore + + PR other/16615 + * exp_ch9.adb: Mechanically replace "can not" with "cannot". + * libgnat/s-regpat.ads: Likewise. + * par-ch4.adb: Likewise. + * set_targ.adb: Likewise. + * types.ads: Likewise. + +2019-01-08 Justin Squirek + + Revert: + 2018-07-31 Justin Squirek + + * lib-writ.adb (Write_With_Lines): Modfiy the generation + of dependencies within ali files so that source unit + bodies are properly listed even if said bodies are + missing. Perform legacy behavior in GNATprove mode. + * lib-writ.ads: Modify documentation to reflect current + behavior. + + and: + 2018-09-26 Justin Squirek + + * lib-writ.adb, lib-writ.ads (Write_With_Lines): Add + documentation and an extra conditional check for RCI + units so that generated ali files will list the spec + only instead of a body when a body is not found. + +2019-01-04 Eric Botcazou + + * gnatvsn.ads: Bump copyright year. + +2019-01-01 Jakub Jelinek + + Update copyright years. + + * gnat_ugn.texi: Bump @copying's copyright year. + * gnat_rm.texi: Likewise. + +Copyright (C) 2019 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. diff --git a/gcc/ada/gnat_rm.texi b/gcc/ada/gnat_rm.texi index 5261d38bb22..bd9c86e5c18 100644 --- a/gcc/ada/gnat_rm.texi +++ b/gcc/ada/gnat_rm.texi @@ -25,7 +25,7 @@ GNAT Reference Manual , Dec 10, 2019 AdaCore -Copyright @copyright{} 2008-2019, Free Software Foundation +Copyright @copyright{} 2008-2020, Free Software Foundation @end quotation @end copying diff --git a/gcc/ada/gnat_ugn.texi b/gcc/ada/gnat_ugn.texi index 66bea96d13a..861a92ec2d1 100644 --- a/gcc/ada/gnat_ugn.texi +++ b/gcc/ada/gnat_ugn.texi @@ -25,7 +25,7 @@ GNAT User's Guide for Native Platforms , Dec 10, 2019 AdaCore -Copyright @copyright{} 2008-2019, Free Software Foundation +Copyright @copyright{} 2008-2020, Free Software Foundation @end quotation @end copying diff --git a/gcc/d/ChangeLog b/gcc/d/ChangeLog index 046f28373c5..125bbc910ac 100644 --- a/gcc/d/ChangeLog +++ b/gcc/d/ChangeLog @@ -1,330 +1,8 @@ -2019-11-14 Richard Sandiford - - * d-codegen.cc (build_boolop): Use truth_type_for instead of - build_same_sized_truth_vector_type. - -2019-11-13 Joseph Myers - - * d-target.cc (define_float_constants): Update call to - get_max_float. - -2019-11-04 Richard Sandiford - - * d-builtins.cc (build_frontend_type): Cope with variable - TYPE_VECTOR_SUBPARTS. - -2019-08-23 Jakub Jelinek - - PR middle-end/91283 - * d-lang.cc (d_post_options): Set flag_excess_precision instead of - flag_excess_precision_cmdline. - -2019-08-20 Iain Buclaw - - PR d/88722 - * modules.cc: Include diagnostic.h. - (register_moduleinfo): Use sorry instead of gcc_assert for targets - without named sections. - -2019-08-20 Iain Buclaw - - * d-target.cc: Include diagnostic.h. - (Target::_init): Set Tsize_t and Tptrdiff_t as D ushort and short if - the target pointer size is 2. Add sorry if the pointer size is not - either 2, 4, or 8. - -2019-08-20 Iain Buclaw - - PR d/90446 - * d-lang.cc (d_type_for_mode): Check for all internal __intN types. - (d_type_for_size): Likewise. - -2019-08-20 Iain Buclaw - - PR d/90445 - * d-builtins.cc (d_build_c_type_nodes): Test UINTMAX_TYPE for setting - uintmax_type_node. Set signed_size_type_node as the signed_type_for - size_type_node. - -2019-08-20 Iain Buclaw - - PR d/90444 - * d-builtins.cc (build_frontend_type): Build anonymous RECORD_TYPE - nodes as well, push all fields to the struct members. - (d_build_builtins_module): Push anonymous va_list structs to the - builtins module, naming them __builtin_va_list. - (d_init_builtins): Use sorry instead of gcc_unreachable if va_list did - not succeed in being represented as a D type. - -2019-08-13 Richard Sandiford - - PR middle-end/91421 - * intrinsics.cc (maybe_set_intrinsic): Use set_decl_built_in_function. - -2019-08-11 Iain Buclaw - - PR d/90601 - * d-convert.cc (convert_expr): Don't convert an expression to its - original front-end type before converting to its target type. - -2019-08-10 Iain Buclaw - - PR d/91238 - * d-codegen.cc (build_address): If taking the address of a CALL_EXPR, - wrap it in a TARGET_EXPR. - -2019-08-10 Iain Buclaw - - PR d/90893 - * runtime.cc (enum libcall_type): Rename to... - (enum d_libcall_type): ...this. - (get_libcall_type): Use d_libcall_type. - (build_libcall_decl): Likewise. - -2019-06-16 Iain Buclaw - - PR d/90559 - * d-target.cc (Target::_init): Reduce max static data size to INT_MAX. - -2019-06-16 Iain Buclaw - - PR d/90651 - * typeinfo.cc (object_module): New variable. - (make_frontend_typeinfo): Update signature. Set temporary on - generated TypeInfo classes. - (create_tinfo_types): Set object_module. Move generation of front-end - typeinfo into ... - (create_frontend_tinfo_types): ... New function. - (layout_typeinfo): Call create_frontend_tinfo_types. - (layout_classinfo): Likewise. - (layout_cpp_typeinfo): Likewise. - (create_typeinfo): Likewise. - -2019-06-11 Richard Biener - - d/90778 - * toir.cc (pop_label): Only queue labels in a vector. - (cmp_labels): Label decl comparator. - (pop_binding_level): Pop labels in DECL_UID order to avoid - debug info differences. - -2019-05-24 Nathan Sidwell - - * types.cc (fixup_anonymous_offset): Use IDENTIFIER_ANON_P. - (layout_aggregate_members): Use make_anon_name. - -2019-05-16 Martin Sebor - - * d-builtins.cc (d_init_builtins): Quote keywords, operators, - and types in diagnostics. - * d-codegen.cc (get_array_length): Same. Replace can't with cannot. - * d-convert.cc (convert_expr): Same. - * d-frontend.cc (getTypeInfoType): Quote an option name in - a diagnostic. - * d-lang.cc (d_handle_option): Same. - (d_parse_file): Same. - * decl.cc: Remove a trailing period from a diagnostic. - * expr.cc: Use a directive for an apostrophe. - * toir.cc: Quote keywords, operators, and types in diagnostics. - * typeinfo.cc (build_typeinfo): Quote an option name in a diagnostic. - -2019-04-25 Johannes Pfau - - * config-lang.in: Do not add target_libs if phobos is disabled. - -2019-04-23 Iain Buclaw - Robin Dapp - - * typeinfo.cc (create_typeinfo): Write typeinfo flags as uint. - -2019-04-23 Iain Buclaw - - * d-builtins.cc (d_init_versions): Add D_BetterC, D_ModuleInfo, - D_Exceptions, D_TypeInfo as predefined version conditions. - * d-codegen.cc (build_bounds_condition): Generate trap if D asserts - are turned off. - * d-frontend.cc (getTypeInfoType): Add error when -fno-rtti is set. - * d-lang.cc (d_init_options): Initialize new front-end options. - (d_handle_option): Handle -fdruntime, -fexceptions, and -frtti. - (d_post_options): Turn off D runtime features if -fno-druntime is set. - * d-spec.cc (lang_specific_driver): Handle -fdruntime. - * d-tree.h (have_typeinfo_p): Add prototype. - (build_typeinfo): Update prototype. - * decl.cc (DeclVisitor::visit(StructDeclaration)): Create typeinfo - only if TypeInfo exists. - (DeclVisitor::visit(ClassDeclaration)): Likewise. - (DeclVisitor::visit(InterfaceDeclaration)): Likewise. - (DeclVisitor::visit(EnumDeclaration)): Likewise. - * expr.cc: Update all calls to build_typeinfo. - * gdc.texi (Runtime Options): Document -fdruntime and -frtti. - * lang.opt: Add -fdruntime and -frtti. - * modules.cc (build_module_tree): Create module info only if - ModuleInfo exists. - * toir.cc (IRVisitor::visit(ThrowStatement)): Update test for - -fno-exceptions. - * typeinfo.cc (create_tinfo_types): Build internal typeinfo classes - only if Object exists. - (have_typeinfo_p): New function. - (class TypeInfoVisitor): Update all calls to build_typeinfo. - (build_typeinfo): Add error when -fno-rtti is set. - -2019-04-21 Iain Buclaw - - * decl.cc (DeclVisitor::visit(Import)): Set semanticRun after - completion, guard against being called more than once. - (DeclVisitor::visit(StructDeclaration)): Likewise. - (DeclVisitor::visit(ClassDeclaration)): Likewise. - (DeclVisitor::visit(InterfaceDeclaration)): Likewise. - (DeclVisitor::visit(VarDeclaration)): Likewise. - (DeclVisitor::visit(TypeInfoDeclaration)): Likewise. - -2019-04-21 Iain Buclaw - - * modules.cc (register_module_decl): Don't register unittests against - the ModuleInfo symbol for -fbuilding-libphobos-tests. - -2019-04-17 Iain Buclaw - - * d-system.h (POSIX): Define unix as POSIX. - (INT32_MAX, INT32_MIN, INT64_MIN, UINT32_MAX, UINT64_MAX): Provide - fallback definitions. - -2019-04-16 Iain Buclaw - - * Make-lang.in (d.mostyclean): Clean idgen and impcvgen. - (d/idgen): Rename to d/idgen$(build_exeext), add BUILD_LIBDEPS. - (d/impcvgen): Rename to d/impcvgen$(build_exeext), add BUILD_LIBDEPS. - (d/id.c): Call idgen$(build_exeext). - (d/impcnvtab.c): Call impcvgen$(build_exeext). - -2019-04-14 Johannes Pfau - PR d/87799 - * d-system.h (_mkdir): Forward _mkdir on MinGW to mkdir in system.h. - -2019-04-12 Iain Buclaw - - * d-tree.h (DECL_IN_UNITTEST_CONDITION_P): Define. - * decl.cc (DeclVisitor): Add in_version_unittest_ field. - (DeclVisitor::visit(ConditionalDeclaration)): New override. - (DeclVisitor::visit(FuncDeclaration)): Set - DECL_IN_UNITTEST_CONDITION_P. - * lang.opt (-fbuilding-libphobos-tests): Add option. - * modules.cc (current_testing_module): New static variable. - (build_module_tree): Generate second moduleinfo symbol to hold - reference to unittests if flag_building_libphobos_tests. - (register_module_decl): Check DECL_IN_UNITTEST_CONDITION_P to decide - which moduleinfo the decl should be registered against. - -2019-03-31 Iain Buclaw - - PR d/88462 - * modules.cc (layout_moduleinfo_fields): Properly align ModuleInfo, - instead of forcing alignment to be 1. - -2019-03-21 Iain Buclaw - - PR d/89017 - * d-codegen.cc (d_decl_context): Skip over template instances when - finding the context. - * decl.cc (DeclVisitor::visit(TemplateDeclaration)): New override. - (build_type_decl): Include parameters in name of template types. - -2019-03-13 Iain Buclaw - - PR d/88957 - * expr.cc (ExprVisitor::visit(VectorArrayExp)): New override. - -2019-03-12 Iain Buclaw - - PR d/87866 - * d-system.h (realpath): Redefine as lrealpath. - -2019-03-12 Iain Buclaw - - * d-lang.cc (d_init_options): Set global.params.cplusplus to C++14. - * d-target.cc (Target::cppFundamentalType): New method. - -2019-03-09 Iain Buclaw - - PR d/89041 - * d-codegen.cc (get_frame_for_symbol): Delegate literals defined in - global scope don't have a frame pointer. - -2019-03-01 Iain Buclaw - - * d-builtins.cc (d_init_versions): Add CppRuntime_Gcc as predefined - version condition. - -2019-02-14 Maya Rashish - - * d-system.h: NetBSD is POSIX. - -2019-02-14 Rainer Orth - - PR d/87864 - * lang.opt (dstartfiles): New option. - * d-spec.cc (need_spec): New variable. - (lang_specific_driver) : Enable need_spec. - (lang_specific_pre_link): Also load libgphobos.spec if need_spec. - -2019-01-26 Iain Buclaw - - PR d/89042 - * decl.cc (DeclVisitor::visit(VarDeclaration)): Don't assert if - handling a void initialized manifest constant. - -2019-01-21 Iain Buclaw - - * d-frontend.cc (Compiler::paintAsType): Update for new signature. - -2019-01-20 Iain Buclaw - - * d-builtins.cc (d_init_versions): Check value of - STACK_GROWS_DOWNWARD. - -2019-01-20 Iain Buclaw - - * d-codegen.cc (identity_compare_p): Return false if seen built-in - type with padding. - (build_float_identity): Moved here from expr.cc. - (lower_struct_comparison): Handle real and complex types. - * d-tree.h (build_float_identity): New. - * expr.cc (build_float_identity): Move to d-codegen.cc. - -2019-01-20 Johannes Pfau - - * expr.cc (build_float_identity): New function. - (ExprVisitor::visit(IdentityExp)): Add support for complex types. - -2019-01-16 Iain Buclaw - - PR d/87824 - * d-lang.cc (d_post_options): Disable implicit - -forder-blocks-and-partition. - -2019-01-16 Iain Buclaw - - * d-codegen.cc (build_typeof_null_value): New function. - * d-tree.h (build_typeof_null_value): Declare. - * d-convert.cc (convert_expr): Use build_typeof_null_value. - * expr.cc (ExprVisitor::visit(NullExp)): Likewise. - -2019-01-15 Richard Sandiford - - PR inline-asm/52813 - * lang.opt (Wdeprecated): Reference common.opt instead of c.opt. - -2019-01-12 Iain Buclaw - - * README.gcc: New file. - -2019-01-01 Jakub Jelinek - - Update copyright years. +2020-01-01 Jakub Jelinek * gdc.texi: Bump @copyrights-d year. -Copyright (C) 2019 Free Software Foundation, Inc. +Copyright (C) 2020 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/d/ChangeLog-2019 b/gcc/d/ChangeLog-2019 new file mode 100644 index 00000000000..046f28373c5 --- /dev/null +++ b/gcc/d/ChangeLog-2019 @@ -0,0 +1,331 @@ +2019-11-14 Richard Sandiford + + * d-codegen.cc (build_boolop): Use truth_type_for instead of + build_same_sized_truth_vector_type. + +2019-11-13 Joseph Myers + + * d-target.cc (define_float_constants): Update call to + get_max_float. + +2019-11-04 Richard Sandiford + + * d-builtins.cc (build_frontend_type): Cope with variable + TYPE_VECTOR_SUBPARTS. + +2019-08-23 Jakub Jelinek + + PR middle-end/91283 + * d-lang.cc (d_post_options): Set flag_excess_precision instead of + flag_excess_precision_cmdline. + +2019-08-20 Iain Buclaw + + PR d/88722 + * modules.cc: Include diagnostic.h. + (register_moduleinfo): Use sorry instead of gcc_assert for targets + without named sections. + +2019-08-20 Iain Buclaw + + * d-target.cc: Include diagnostic.h. + (Target::_init): Set Tsize_t and Tptrdiff_t as D ushort and short if + the target pointer size is 2. Add sorry if the pointer size is not + either 2, 4, or 8. + +2019-08-20 Iain Buclaw + + PR d/90446 + * d-lang.cc (d_type_for_mode): Check for all internal __intN types. + (d_type_for_size): Likewise. + +2019-08-20 Iain Buclaw + + PR d/90445 + * d-builtins.cc (d_build_c_type_nodes): Test UINTMAX_TYPE for setting + uintmax_type_node. Set signed_size_type_node as the signed_type_for + size_type_node. + +2019-08-20 Iain Buclaw + + PR d/90444 + * d-builtins.cc (build_frontend_type): Build anonymous RECORD_TYPE + nodes as well, push all fields to the struct members. + (d_build_builtins_module): Push anonymous va_list structs to the + builtins module, naming them __builtin_va_list. + (d_init_builtins): Use sorry instead of gcc_unreachable if va_list did + not succeed in being represented as a D type. + +2019-08-13 Richard Sandiford + + PR middle-end/91421 + * intrinsics.cc (maybe_set_intrinsic): Use set_decl_built_in_function. + +2019-08-11 Iain Buclaw + + PR d/90601 + * d-convert.cc (convert_expr): Don't convert an expression to its + original front-end type before converting to its target type. + +2019-08-10 Iain Buclaw + + PR d/91238 + * d-codegen.cc (build_address): If taking the address of a CALL_EXPR, + wrap it in a TARGET_EXPR. + +2019-08-10 Iain Buclaw + + PR d/90893 + * runtime.cc (enum libcall_type): Rename to... + (enum d_libcall_type): ...this. + (get_libcall_type): Use d_libcall_type. + (build_libcall_decl): Likewise. + +2019-06-16 Iain Buclaw + + PR d/90559 + * d-target.cc (Target::_init): Reduce max static data size to INT_MAX. + +2019-06-16 Iain Buclaw + + PR d/90651 + * typeinfo.cc (object_module): New variable. + (make_frontend_typeinfo): Update signature. Set temporary on + generated TypeInfo classes. + (create_tinfo_types): Set object_module. Move generation of front-end + typeinfo into ... + (create_frontend_tinfo_types): ... New function. + (layout_typeinfo): Call create_frontend_tinfo_types. + (layout_classinfo): Likewise. + (layout_cpp_typeinfo): Likewise. + (create_typeinfo): Likewise. + +2019-06-11 Richard Biener + + d/90778 + * toir.cc (pop_label): Only queue labels in a vector. + (cmp_labels): Label decl comparator. + (pop_binding_level): Pop labels in DECL_UID order to avoid + debug info differences. + +2019-05-24 Nathan Sidwell + + * types.cc (fixup_anonymous_offset): Use IDENTIFIER_ANON_P. + (layout_aggregate_members): Use make_anon_name. + +2019-05-16 Martin Sebor + + * d-builtins.cc (d_init_builtins): Quote keywords, operators, + and types in diagnostics. + * d-codegen.cc (get_array_length): Same. Replace can't with cannot. + * d-convert.cc (convert_expr): Same. + * d-frontend.cc (getTypeInfoType): Quote an option name in + a diagnostic. + * d-lang.cc (d_handle_option): Same. + (d_parse_file): Same. + * decl.cc: Remove a trailing period from a diagnostic. + * expr.cc: Use a directive for an apostrophe. + * toir.cc: Quote keywords, operators, and types in diagnostics. + * typeinfo.cc (build_typeinfo): Quote an option name in a diagnostic. + +2019-04-25 Johannes Pfau + + * config-lang.in: Do not add target_libs if phobos is disabled. + +2019-04-23 Iain Buclaw + Robin Dapp + + * typeinfo.cc (create_typeinfo): Write typeinfo flags as uint. + +2019-04-23 Iain Buclaw + + * d-builtins.cc (d_init_versions): Add D_BetterC, D_ModuleInfo, + D_Exceptions, D_TypeInfo as predefined version conditions. + * d-codegen.cc (build_bounds_condition): Generate trap if D asserts + are turned off. + * d-frontend.cc (getTypeInfoType): Add error when -fno-rtti is set. + * d-lang.cc (d_init_options): Initialize new front-end options. + (d_handle_option): Handle -fdruntime, -fexceptions, and -frtti. + (d_post_options): Turn off D runtime features if -fno-druntime is set. + * d-spec.cc (lang_specific_driver): Handle -fdruntime. + * d-tree.h (have_typeinfo_p): Add prototype. + (build_typeinfo): Update prototype. + * decl.cc (DeclVisitor::visit(StructDeclaration)): Create typeinfo + only if TypeInfo exists. + (DeclVisitor::visit(ClassDeclaration)): Likewise. + (DeclVisitor::visit(InterfaceDeclaration)): Likewise. + (DeclVisitor::visit(EnumDeclaration)): Likewise. + * expr.cc: Update all calls to build_typeinfo. + * gdc.texi (Runtime Options): Document -fdruntime and -frtti. + * lang.opt: Add -fdruntime and -frtti. + * modules.cc (build_module_tree): Create module info only if + ModuleInfo exists. + * toir.cc (IRVisitor::visit(ThrowStatement)): Update test for + -fno-exceptions. + * typeinfo.cc (create_tinfo_types): Build internal typeinfo classes + only if Object exists. + (have_typeinfo_p): New function. + (class TypeInfoVisitor): Update all calls to build_typeinfo. + (build_typeinfo): Add error when -fno-rtti is set. + +2019-04-21 Iain Buclaw + + * decl.cc (DeclVisitor::visit(Import)): Set semanticRun after + completion, guard against being called more than once. + (DeclVisitor::visit(StructDeclaration)): Likewise. + (DeclVisitor::visit(ClassDeclaration)): Likewise. + (DeclVisitor::visit(InterfaceDeclaration)): Likewise. + (DeclVisitor::visit(VarDeclaration)): Likewise. + (DeclVisitor::visit(TypeInfoDeclaration)): Likewise. + +2019-04-21 Iain Buclaw + + * modules.cc (register_module_decl): Don't register unittests against + the ModuleInfo symbol for -fbuilding-libphobos-tests. + +2019-04-17 Iain Buclaw + + * d-system.h (POSIX): Define unix as POSIX. + (INT32_MAX, INT32_MIN, INT64_MIN, UINT32_MAX, UINT64_MAX): Provide + fallback definitions. + +2019-04-16 Iain Buclaw + + * Make-lang.in (d.mostyclean): Clean idgen and impcvgen. + (d/idgen): Rename to d/idgen$(build_exeext), add BUILD_LIBDEPS. + (d/impcvgen): Rename to d/impcvgen$(build_exeext), add BUILD_LIBDEPS. + (d/id.c): Call idgen$(build_exeext). + (d/impcnvtab.c): Call impcvgen$(build_exeext). + +2019-04-14 Johannes Pfau + PR d/87799 + * d-system.h (_mkdir): Forward _mkdir on MinGW to mkdir in system.h. + +2019-04-12 Iain Buclaw + + * d-tree.h (DECL_IN_UNITTEST_CONDITION_P): Define. + * decl.cc (DeclVisitor): Add in_version_unittest_ field. + (DeclVisitor::visit(ConditionalDeclaration)): New override. + (DeclVisitor::visit(FuncDeclaration)): Set + DECL_IN_UNITTEST_CONDITION_P. + * lang.opt (-fbuilding-libphobos-tests): Add option. + * modules.cc (current_testing_module): New static variable. + (build_module_tree): Generate second moduleinfo symbol to hold + reference to unittests if flag_building_libphobos_tests. + (register_module_decl): Check DECL_IN_UNITTEST_CONDITION_P to decide + which moduleinfo the decl should be registered against. + +2019-03-31 Iain Buclaw + + PR d/88462 + * modules.cc (layout_moduleinfo_fields): Properly align ModuleInfo, + instead of forcing alignment to be 1. + +2019-03-21 Iain Buclaw + + PR d/89017 + * d-codegen.cc (d_decl_context): Skip over template instances when + finding the context. + * decl.cc (DeclVisitor::visit(TemplateDeclaration)): New override. + (build_type_decl): Include parameters in name of template types. + +2019-03-13 Iain Buclaw + + PR d/88957 + * expr.cc (ExprVisitor::visit(VectorArrayExp)): New override. + +2019-03-12 Iain Buclaw + + PR d/87866 + * d-system.h (realpath): Redefine as lrealpath. + +2019-03-12 Iain Buclaw + + * d-lang.cc (d_init_options): Set global.params.cplusplus to C++14. + * d-target.cc (Target::cppFundamentalType): New method. + +2019-03-09 Iain Buclaw + + PR d/89041 + * d-codegen.cc (get_frame_for_symbol): Delegate literals defined in + global scope don't have a frame pointer. + +2019-03-01 Iain Buclaw + + * d-builtins.cc (d_init_versions): Add CppRuntime_Gcc as predefined + version condition. + +2019-02-14 Maya Rashish + + * d-system.h: NetBSD is POSIX. + +2019-02-14 Rainer Orth + + PR d/87864 + * lang.opt (dstartfiles): New option. + * d-spec.cc (need_spec): New variable. + (lang_specific_driver) : Enable need_spec. + (lang_specific_pre_link): Also load libgphobos.spec if need_spec. + +2019-01-26 Iain Buclaw + + PR d/89042 + * decl.cc (DeclVisitor::visit(VarDeclaration)): Don't assert if + handling a void initialized manifest constant. + +2019-01-21 Iain Buclaw + + * d-frontend.cc (Compiler::paintAsType): Update for new signature. + +2019-01-20 Iain Buclaw + + * d-builtins.cc (d_init_versions): Check value of + STACK_GROWS_DOWNWARD. + +2019-01-20 Iain Buclaw + + * d-codegen.cc (identity_compare_p): Return false if seen built-in + type with padding. + (build_float_identity): Moved here from expr.cc. + (lower_struct_comparison): Handle real and complex types. + * d-tree.h (build_float_identity): New. + * expr.cc (build_float_identity): Move to d-codegen.cc. + +2019-01-20 Johannes Pfau + + * expr.cc (build_float_identity): New function. + (ExprVisitor::visit(IdentityExp)): Add support for complex types. + +2019-01-16 Iain Buclaw + + PR d/87824 + * d-lang.cc (d_post_options): Disable implicit + -forder-blocks-and-partition. + +2019-01-16 Iain Buclaw + + * d-codegen.cc (build_typeof_null_value): New function. + * d-tree.h (build_typeof_null_value): Declare. + * d-convert.cc (convert_expr): Use build_typeof_null_value. + * expr.cc (ExprVisitor::visit(NullExp)): Likewise. + +2019-01-15 Richard Sandiford + + PR inline-asm/52813 + * lang.opt (Wdeprecated): Reference common.opt instead of c.opt. + +2019-01-12 Iain Buclaw + + * README.gcc: New file. + +2019-01-01 Jakub Jelinek + + Update copyright years. + + * gdc.texi: Bump @copyrights-d year. + +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. diff --git a/gcc/d/gdc.texi b/gcc/d/gdc.texi index bf262103988..496066cb59a 100644 --- a/gcc/d/gdc.texi +++ b/gcc/d/gdc.texi @@ -12,7 +12,7 @@ @include gcc-common.texi @c Copyright years for this manual. -@set copyrights-d 2006-2019 +@set copyrights-d 2006-2020 @copying @c man begin COPYRIGHT diff --git a/gcc/doc/cpp.texi b/gcc/doc/cpp.texi index bd741ce78ee..8c3dfcc708a 100644 --- a/gcc/doc/cpp.texi +++ b/gcc/doc/cpp.texi @@ -10,7 +10,7 @@ @copying @c man begin COPYRIGHT -Copyright @copyright{} 1987-2019 Free Software Foundation, Inc. +Copyright @copyright{} 1987-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/cppinternals.texi b/gcc/doc/cppinternals.texi index 0476ced86c4..6e99d661546 100644 --- a/gcc/doc/cppinternals.texi +++ b/gcc/doc/cppinternals.texi @@ -18,7 +18,7 @@ @ifinfo This file documents the internals of the GNU C Preprocessor. -Copyright (C) 2000-2019 Free Software Foundation, Inc. +Copyright (C) 2000-2020 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -47,7 +47,7 @@ into another language, under the above conditions for modified versions. @page @vskip 0pt plus 1filll @c man begin COPYRIGHT -Copyright @copyright{} 2000-2019 Free Software Foundation, Inc. +Copyright @copyright{} 2000-2020 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice diff --git a/gcc/doc/gcc.texi b/gcc/doc/gcc.texi index 4d03e3a6d96..e4523d58bbf 100644 --- a/gcc/doc/gcc.texi +++ b/gcc/doc/gcc.texi @@ -40,7 +40,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988-2019 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/gccint.texi b/gcc/doc/gccint.texi index 99ec005e967..5965650e294 100644 --- a/gcc/doc/gccint.texi +++ b/gcc/doc/gccint.texi @@ -26,7 +26,7 @@ @c %**end of header @copying -Copyright @copyright{} 1988-2019 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/gcov.texi b/gcc/doc/gcov.texi index dcdd7831ff0..03d12ced400 100644 --- a/gcc/doc/gcov.texi +++ b/gcc/doc/gcov.texi @@ -4,7 +4,7 @@ @ignore @c man begin COPYRIGHT -Copyright @copyright{} 1996-2019 Free Software Foundation, Inc. +Copyright @copyright{} 1996-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi index 656410afff4..960e704fcc9 100644 --- a/gcc/doc/install.texi +++ b/gcc/doc/install.texi @@ -43,7 +43,7 @@ @settitle Installing GCC: GNU Free Documentation License @end ifset -@c Copyright (C) 1988-2019 Free Software Foundation, Inc. +@c Copyright (C) 1988-2020 Free Software Foundation, Inc. @c *** Converted to texinfo by Dean Wakerley, dean@wakerley.com @c IMPORTANT: whenever you modify this file, run `install.texi2html' to @@ -68,7 +68,7 @@ @c Part 2 Summary Description and Copyright @copying -Copyright @copyright{} 1988-2019 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2020 Free Software Foundation, Inc. @sp 1 Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi index 559617eb86f..f750581652a 100644 --- a/gcc/doc/invoke.texi +++ b/gcc/doc/invoke.texi @@ -8,7 +8,7 @@ @c man end @c man begin COPYRIGHT -Copyright @copyright{} 1988-2019 Free Software Foundation, Inc. +Copyright @copyright{} 1988-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/fortran/ChangeLog b/gcc/fortran/ChangeLog index 1fcfd920c53..a95e97f77c5 100644 --- a/gcc/fortran/ChangeLog +++ b/gcc/fortran/ChangeLog @@ -1,3122 +1,4 @@ -2019-12-30 Thomas Koenig - - PR fortran/91651 - * intrinsic.c (add_sym_4ind): New function. - (add_functions): Use it for INDEX. - (resolve_intrinsic): Also call f1m for INDEX. - * intrinsic.h (gfc_resolve_index_func): Adjust prototype to - take a gfc_arglist instead of individual arguments. - * iresolve.c (gfc_resolve_index_func): Adjust arguments. - Remove KIND argument if present, and make sure this is - not done twice. - * trans-decl.c: Include "intrinsic.h". - (gfc_get_extern_function_decl): Special case for resolving INDEX. - -2019-12-30 Thomas Koenig - - PR fortran/92961 - * gfortran.h (gfc_seen_div0): Add declaration. - * arith.h (gfc_seen_div0): Add definition. - (eval_intrinsic): For integer division by zero, set gfc_seen_div0. - * decl.c (variable_decl): If resolution resp. simplification - fails for array spec and a division of zero error has been - seen, return MATCH_ERROR. - -2019-12-21 Harald Anlauf - - PR fortran/92990 - * match.c (gfc_match_nullify): Check for valid pointer object. - Reject bounds remapping. - -2019-12-21  Paul Thomas   - - PR fortran/92753 - * expr.c (find_inquiry_ref): Catch INQUIRY_LEN case, where the - temporary expression has been converted to a constant and make - the new expression accordingly. Correct the error in INQUIRY_RE - and INQUIRY_IM cases. The original rather than the resolved - expression was being used as the source in mpfr_set. - -2019-12-20 Jakub Jelinek - - PR middle-end/91512 - PR fortran/92738 - * lang.opt (-finline-arg-packing): Add trailing dot to help text. - -2019-12-20 Thomas Koenig - - PR middle-end/91512 - PR fortran/92738 - * invoke.texi: Document -finline-arg-packing. - * lang.opt: Add -finline-arg-packing. - * options.c (gfc_post_options): Handle -finline-arg-packing. - * trans-array.c (gfc_conv_array_parameter): Use - flag_inline_arg_packing instead of checking for optimize and - optimize_size. - -2019-12-20 Tobias Burnus - - PR fortran/92996 - * expr.c (simplify_parameter_variable): Call gfc_resolve_ref and - gfc_expression_rank; fix location info. - * gfortran.h (gfc_resolve_ref, gfc_expression_rank): Declare. - * match.c (gfc_match_stopcode): Remove redundant setting of - gfc_init_expr_flag; early return if gfc_simplify_expr has an error. - * resolve.c (gfc_expression_rank): Renamed from expression_rank; - minor cleanup. - (gfc_resolve_ref): Removed static and renamed from resolve_ref. - (resolve_variable, resolve_typebound_function, - resolve_typebound_subroutine, resolve_ppc_call, resolve_expr_ppc, - gfc_resolve_expr, resolve_procedure): Update calls. - -2019-12-20 Tobias Burnus - - * openmp.c (resolve_omp_clauses): Move is-coindexed check from here ... - (gfc_match_omp_variable_list): ... to here. - -2019-12-19 Julian Brown - - * openmp.c (resolve_oacc_data_clauses): Don't disallow allocatable - polymorphic types for OpenACC. - * trans-openmp.c (gfc_trans_omp_clauses): Support polymorphic class - types. - -2019-12-19 Julian Brown - - * gfortran.h (gfc_omp_map_op): Add OMP_MAP_ATTACH, OMP_MAP_DETACH. - * openmp.c (gfc_match_omp_variable_list): Add allow_derived parameter. - Parse derived-type member accesses if true. - (omp_mask2): Add OMP_CLAUSE_ATTACH and OMP_CLAUSE_DETACH. - (gfc_match_omp_map_clause): Add allow_derived parameter. Pass to - gfc_match_omp_variable_list. - (gfc_match_omp_clauses): Support attach and detach. Support derived - types for appropriate OpenACC directives. - (OACC_PARALLEL_CLAUSES, OACC_SERIAL_CLAUSES, OACC_KERNELS_CLAUSES, - OACC_DATA_CLAUSES, OACC_ENTER_DATA_CLAUSES): Add OMP_CLAUSE_ATTACH. - (OACC_EXIT_DATA_CLAUSES): Add OMP_CLAUSE_DETACH. - (check_symbol_not_pointer): Don't disallow pointer objects of derived - type. - (resolve_oacc_data_clauses): Don't disallow allocatable derived types. - (resolve_omp_clauses): Perform duplicate checking only for non-derived - type component accesses (plain variables and arrays or array sections). - Support component refs. - * trans-expr.c (gfc_conv_component_ref, - conv_parent_component_references): Make global. - (gfc_maybe_dereference_var): New function, broken out of... - (gfc_conv_variable): ...here. Call above function. - * trans-openmp.c (gfc_omp_privatize_by_reference): Support component - refs. - (gfc_trans_omp_array_section): New function, broken out of... - (gfc_trans_omp_clauses): ...here. Support component refs/derived - types, attach and detach clauses. - * trans.h (gfc_conv_component_ref, conv_parent_component_references, - gfc_maybe_dereference_var): Add prototypes. - -2019-12-19 Mark Eggleston - - PR fortran/92896 - * array.c (walk_array_constructor): Replace call to gfc_convert_type - with call to gfc_convert_type_warn with new argument set to true. - (check_element_type): Replace call to cfg_convert_type with call to - gfc_convert_type_warn with new argument set to true. - * gfortran.h: Add argument "array" to gfc_convert_type_warn default - value set to false. - *intrinsic.c (gfc_convert_type_warn): Update description of arguments. - Add new argument to argument list. Add check for conversion to numeric - or logical from character and array set to true, i.e. if conversion - from character is in an array constructor reject it, goto bad. - -2019-12-19 Jakub Jelinek - - PR fortran/92977 - * frontend-passes.c (call_external_blas): Use || instead of |. - -2019-12-19 Jakub Jelinek - - PR fortran/92977 - * frontend-passes.c (in_omp_atomic): New variable. - (cfe_expr_0, matmul_to_var_expr, matmul_temp_args, - inline_matmul_assign, call_external_blas): Don't optimize in - EXEC_OMP_ATOMIC. - (optimize_namespace): Clear in_omp_atomic. - (gfc_code_walker): Set in_omp_atomic for EXEC_OMP_ATOMIC, save/restore - it around. - -2019-12-19 Julian Brown - Maciej W. Rozycki - Tobias Burnus - Thomas Schwinge - - * gfortran.h (gfc_omp_map_op): Add OMP_MAP_NO_ALLOC. - * openmp.c (omp_mask2): Add OMP_CLAUSE_NO_CREATE. - (gfc_match_omp_clauses): Support no_create. - (OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES) - (OACC_DATA_CLAUSES): Add OMP_CLAUSE_NO_CREATE. - * trans-openmp.c (gfc_trans_omp_clauses_1): Support - OMP_MAP_NO_ALLOC. - -2019-12-18 Harald Anlauf - - PR fortran/70853 - * trans-expr.c (gfc_trans_pointer_assignment): Reject bounds - remapping if pointer target is NULL(). - -2019-12-12 Harald Anlauf - - PR fortran/92898 - * check.c (gfc_check_is_contiguous): Simplify check to handle - arbitrary NULL() argument. - -2019-12-11 Jakub Jelinek - - PR fortran/92899 - * trans-openmp.c (gfc_trans_omp_atomic): For GFC_OMP_ATOMIC_SWAP, - do look through conversion on expr2 if any. - -2019-12-11 Steven G. Kargl - - PR fortran/92897 - * array.c (gfc_set_array_spec): Remove invalid assert() triggered - by invalid Fortran code. - -2019-12-10 Thomas Koenig - - PR fortran/91643 - * trans-array.c (gfc_conv_array_parameter): Do not repack - an assumed rank dummy argument. - -2019-12-10 Martin Liska - - PR fortran/92874 - * dependency.c (gfc_dep_compare_expr): Bail out - when one of the arguments is null. - -2019-12-10 Thomas Koenig - - PR fortran/92863 - * misc.c (gfc_typename): If derived component is NULL for - derived or class, return "invalid type" or "invalid class", - respectively. - -2019-12-10 Tobias Burnus - - PR fortran/92872 - * trans-array.c (get_CFI_desc): Fix cond whether saved desc exists. - -2019-12-09 David Malcolm - - * error.c (gfc_diagnostic_starter): Add pp_newline call before - call to diagnostic_show_locus. - -2019-12-09 Frederik Harwath - - * trans-openmp.c (gfc_trans_omp_reduction_list): Pass correct location for each - clause to build_omp_clause. - -2018-12-08 Thomas Koenig - - PR fortran/92780 - * resolve.c (resolve_assoc_var): Issue error if the associating - entity is a program. - -2018-12-08 Thomas Koenig - - PR fortran/92764 - * interface.c (gfc_procedure_use): Check for existence of derived - component before using (twice). - -2019-12-08 Thomas Koenig - - PR fortran/92755 - * dependency.c (gfc_dep_resolver): Move skipping of _data ref - into the loop. - -2019-12-07 Tobias Burnus - - PR fortran/92793 - * trans.c (gfc_get_location): Declare. - * trans.c (gfc_get_location): Define; returns column-corrected location. - (trans_runtime_error_vararg, gfc_trans_runtime_check, - gfc_generate_module_code): Use new function. - * trans-array.c (gfc_trans_auto_array_allocation): Likewise. - * trans-common.c (build_field, get_init_field, create_common): Likewise. - * trans-decl.c (gfc_build_label_decl, gfc_get_symbol_decl): Likewise. - * trans-openmp.c (gfc_trans_omp_reduction_list, gfc_trans_omp_clauses): - Likewise. - * trans-stmt.c (gfc_trans_if_1): Likewise. - -2019-12-06 Jakub Jelinek - - PR fortran/92775 - * trans.h (struct lang_type, struct lang_decl): Remove span member. - (GFC_DECL_SPAN, GFC_TYPE_ARRAY_SPAN): Remove macros. - * trans-array.h (gfc_get_descriptor_offsets_for_info): Add another - argument. - * trans-array.c (gfc_get_descriptor_offsets_for_info): Add SPAN_OFF - argument and initialize *SPAN_OFF to the offset of span field. - * trans-types.c (gfc_get_array_descr_info): Adjust - gfc_get_descriptor_offsets_for_info caller. Compute elem_size - as base->span instead of TYPE_SIZE_UNIT (etype) constant. - -2019-12-06 Tobias Burnus - Kwok Cheung Yeung - - * trans-openmp.c (gfc_build_conditional_assign, - gfc_build_conditional_assign_expr): New static functions. - (gfc_omp_finish_clause, gfc_trans_omp_clauses): Handle mapping of - absent optional arguments and fix mapping of present optional args. - -2019-12-05 Tobias Burnus - - * trans-openmp.c (gfc_omp_is_optional_argument, - gfc_omp_check_optional_argument): Handle type(c_ptr),value which uses a - -2019-12-05 Jakub Jelinek - - PR fortran/92781 - * trans-decl.c (gfc_get_symbol_decl): If sym->backend_decl is - current_function_decl, add length to current rather than parent - function and expect DECL_CONTEXT (length) to be current_function_decl. - -2019-12-04 Tobias Burnus - - PR fortran/92754 - * intrinsic.c (gfc_intrinsic_func_interface): Set - sym's flavor, intrinsic and function attribute if - unset. - -2019-12-04 Jakub Jelinek - - PR fortran/92756 - * trans-openmp.c (gfc_trans_omp_teams): Wrap OMP_TEAMS body into a - BIND_EXPR with a forced BLOCK. - -2019-11-30 Thomas Koenig - - PR fortran/91783 - * dependency.c (gfc_dep_resolver): Do not look at _data - component if present. - -2019-11-28 Jerry DeLisle - - PR fortran/90374 - * io.c (check_format): Allow zero width expoenent with e0. - -2019-11-27 Jakub Jelinek - - PR fortran/91944 - * simplify.c (gfc_simplify_spread): Check gfc_init_expr_flag instead - of gfc_current_ns->sym_root->n.sym->attr.flavor == FL_PARAMETER. - -2019-11-27 Tobias Burnus - - PR middle-end/92463 - * arith.c (gfc_check_real_range): Replace mp_exp_t by mpfr_exp_t. - -2019-11-25 Harald Anlauf - - PR fortran/92629 - * simplify.c (convert_mpz_to_unsigned): Skip assert for argument - range when -fno-range-check is specified. - -2019-11-25 Mark Eggleston - Jim MacArthur - - * gfortran.texi: Update Hollerith constants support for character types - and use in comparisons. - * invoke.texi: Tidy up list of options. Update description of - -fdec-char-conversions. - * resolve.c (is_character_based): New. - (Convert_hollerith_to_character): New. (convert_to_numeric): New. - (resolve_operator): If both sides are character based and -fdec is - enabled convert Hollerith to character. If an operand is Hollerith, the - other is numeric and -fdec is enabled convert to numeric. - (resolve_ordinary_assign): Add check for -fdec-char-conversions for - assignment of character literals.2019-11-20 Janne Blomqvist - - PR fortran/92463 - Revert r269139 - * simplify.c (norm2_do_sqrt, gfc_simplify_norm2): Use - mpfr_regular_p instead of mpfr_number_p && !mpfr_zero_p. - (norm2_add_squared): Likewise. Use mpfr_exp_t rather than - mp_exp_t. - -2019-11-20 Janne Blomqvist - - PR fortran/92463 - * arith.c (gfc_mpfr_to_mpz): Change mp_exp_t to mpfr_exp_t. - (gfc_check_real_range): Likewise. - * gfortran.h (GFC_RND_MODE): Change GMP_RNDN to MPFR_RNDN. - * module.c (mio_gmp_real): Change mp_exp_t to mpfr_exp_t. - * simplify.c (degrees_f): Change mp_rnd_t to mpfr_rnd_t. - (radians_f): Likewise. - (fullprec_erfc_scaled): Change mp_prec_t to mpfr_prec_t. - (asympt_erfc_scaled): Likewise. - (gfc_simplify_nearest): Change mp_exp_t to mpfr_exp_t, and - GMP_RND* to MPFR_RND*. - -2019-11-15 Paul Thomas - - PR fortran/69654 - * trans-expr.c (gfc_trans_structure_assign): Move assignment to - 'cm' after treatment of C pointer types and test that the type - has been completely built before it. Add an assert that the - backend_decl for each component exists. - -2019-11-13 Tobias Burnus - - * trans-expr.c (gfc_conv_procedure_call): Fold hidden - is-present argument to the right type. - -2019-11-12 Harald Anlauf - - PR fortran/81651 - * module.c (gzopen_included_file, gzopen_included_file_1) - (gzopen_intrinsic_module, bad_module, gfc_use_module): Use fully - qualified module path for error reporting. - -2019-11-12 Martin Liska - - * options.c (gfc_init_options): - Use SET_OPTION_IF_UNSET. - -2019-11-12 Maciej W. Rozycki - Frederik Harwath - - gcc/fortran/ - * gfortran.h (gfc_statement): Add ST_OACC_SERIAL_LOOP, - ST_OACC_END_SERIAL_LOOP, ST_OACC_SERIAL and ST_OACC_END_SERIAL - enumeration constants. - (gfc_exec_op): Add EXEC_OACC_SERIAL_LOOP and EXEC_OACC_SERIAL - enumeration constants. - * match.h (gfc_match_oacc_serial): New prototype. - (gfc_match_oacc_serial_loop): Likewise. - * dump-parse-tree.c (show_omp_node, show_code_node): Handle - EXEC_OACC_SERIAL_LOOP and EXEC_OACC_SERIAL. - * match.c (match_exit_cycle): Handle EXEC_OACC_SERIAL_LOOP. - * openmp.c (OACC_SERIAL_CLAUSES): New macro. - (gfc_match_oacc_serial_loop): New function. - (gfc_match_oacc_serial): Likewise. - (oacc_is_loop): Handle EXEC_OACC_SERIAL_LOOP. - (resolve_omp_clauses): Handle EXEC_OACC_SERIAL. - (oacc_code_to_statement): Handle EXEC_OACC_SERIAL and - EXEC_OACC_SERIAL_LOOP. - (gfc_resolve_oacc_directive): Likewise. - * parse.c (decode_oacc_directive) <'s'>: Add case for "serial" - and "serial loop". - (next_statement): Handle ST_OACC_SERIAL_LOOP and ST_OACC_SERIAL. - (gfc_ascii_statement): Likewise. Handle ST_OACC_END_SERIAL_LOOP - and ST_OACC_END_SERIAL. - (parse_oacc_structured_block): Handle ST_OACC_SERIAL. - (parse_oacc_loop): Handle ST_OACC_SERIAL_LOOP and - ST_OACC_END_SERIAL_LOOP. - (parse_executable): Handle ST_OACC_SERIAL_LOOP and - ST_OACC_SERIAL. - (is_oacc): Handle EXEC_OACC_SERIAL_LOOP and EXEC_OACC_SERIAL. - * resolve.c (gfc_resolve_blocks, gfc_resolve_code): Likewise. - * st.c (gfc_free_statement): Likewise. - * trans-openmp.c (gfc_trans_oacc_construct): Handle - EXEC_OACC_SERIAL. - (gfc_trans_oacc_combined_directive): Handle - EXEC_OACC_SERIAL_LOOP. - (gfc_trans_oacc_directive): Handle EXEC_OACC_SERIAL_LOOP and - EXEC_OACC_SERIAL. - * trans.c (trans_code): Likewise. - -2019-11-11 Janne Blomqvist - - PR fortran/91828 - * simplify.c (gfc_simplify_fraction): Remove fallback path for - MPFR < 3.1.0. - -2019-11-11 Tobias Burnus - Kwok Cheung Yeung - - * trans-expr.c (gfc_conv_expr_present): Check for DECL_ARTIFICIAL - for the VALUE hidden argument avoiding -fallow-underscore issues. - * trans-decl.c (create_function_arglist): Also set - GFC_DECL_OPTIONAL_ARGUMENT for per-value arguments. - * f95-lang.c (LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT): - Renamed from LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT; point - to gfc_omp_check_optional_argument. - * trans.h (gfc_omp_check_optional_argument): Subsitutes - gfc_omp_is_optional_argument declaration. - * trans-openmp.c (gfc_omp_is_optional_argument): Make static. - (gfc_omp_check_optional_argument): New function. - -2019-11-10 Janne Blomqvist - - PR fortran/91413 - * trans-decl.c (gfc_finish_var_decl): Don't print warning when - -fno-automatic is enabled. - -2019-11-10 Paul Thomas - - PR fortran/92123 - *decl.c (gfc_verify_c_interop_param): Remove error asserting - that pointer or allocatable variables in a bind C procedure are - not supported. Delete some trailing spaces. - * trans-stmt.c (trans_associate_var): Correct the attempt to - treat scalar pointer or allocatable temporaries as if they are - array descriptors. - -2019-11-09 Thomas Koenig - - PR fortran/92321 - * frontend-passes.c (call_external_blas): Commit symbol for - external BLAS routine. - -2019-11-08 Jakub Jelinek - - * arith.c (character2representation): Change i type to size_t. - -2019-11-08 Mark Eggleston - Jim MacArthur - - * arith.c (hollerith2representation): Use OPT_Wcharacter_truncation in - call to gfc_warning. - (character2representation, gfc_character2int, gfc_character2real, - gfc_character2complex and gfc_character2logical): New. - * arith.h (gfc_character2int, gfc_character2real, gfc_character2complex, - gfc_character2logical): Declare. - * expr.c (gfc_check_assign): Return true if left hand side is numeric - or logical and the right hand side is character and of kind=1. - * gfortran.texi: Add -fdec-char-conversions. - * intrinsic.c (add_conversions): Add conversions from character to - integer, real, complex and logical types for their supported kinds. - (gfc_convert_type_warn): Reorder if..else if.. sequence so that warnings - are produced for conversion to logical. - * invoke.texi: Add option to list of options. - * invoke.texi: Add Character conversion subsection to Extensions - section. - * lang.opt: Add new option. - * options.c (set_dec_flags): Add SET_BITFLAG for - flag_dec_char_conversions. - * resolve.c (resolve_ordindary_assign): Issue error if the left hand - side is numeric or logical and the right hand side is a character - variable. - * simplify.c (gfc_convert_constant): Assign the conversion function - depending on destination type. - * trans-const.c (gfc_constant_to_tree): Use OPT_Wsurprising in - gfc_warning allowing the warning to be switched off only if - flag_dec_char_conversions is enabled. - -2019-11-08 Tobias Burnus - - PR fortran/90374 - * io.c (check_format): Allow zero width for D, E, EN, and ES - specifiers as default and when -std=F2018 is given. Retain - existing errors when using the -fdec family of flags. - -2019-11-03 Thomas Koenig - - PR fortran/92113 - * trans-decl.c (gfc_get_symbol_decl): If __def_init actually - contains a value, put it into the read-only section. - -2019-11-01 Steven G. Kargl - - * decl.c (match_byte_typespec): New function. Match BYTE type-spec. - (gfc_match_decl_type_spec): Use it. - -2019-11-01 Steven G. Kargl - - PR fortran/90988 - * decl.c (gfc_match_private, gfc_match_public): Fixed-form source code - does not require whitespace between PRIVATE (or PUBLIC) and an entity. - -2019-11-01 Tobias Burnus - - * f95-lang.c (LANG_HOOKS_OMP_ARRAY_DATA): Set to gfc_omp_array_data. - * trans-array.c (gfc_conv_descriptor_data_get): Handle also - REFERENCE_TYPE. - * trans-openmp.c (gfc_omp_array_data): New. - * trans.h (gfc_omp_array_data): New prototype. - -2019-10-31 Tobias Burnus - - PR fortran/92284. - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Free CFI descriptor - at the end; partial revised revert of Rev. 277502. - -2019-10-31 Tobias Burnus - - PR fortran/92277 - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Fix DECL_ARTIFICIAL - checking. - -2019-10-30 Tobias Burnus - - PR fortran/92208 - * trans-array.c (gfc_conv_array_parameter): Only copy - string-length backend_decl if expression is not a function. - -2019-10-30 Mark Eggleston - - * invoke.texi: Add -Wno-overwrite-recursive to list of options. Add - description of -Wno-overwrite-recursive. Fix typo in description - of -Winteger-division. - * lang.opt: Add option -Woverwrite-recursive initialised as on. - * option.c (gfc_post_options): Output warning only if it is enabled. - -2019-10-28 Tobias Burnus - - PR fortran/91863 - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Don't free data - memory as that's done on the Fortran side. - (gfc_conv_procedure_call): Handle void* pointers from - gfc_conv_gfc_desc_to_cfi_desc. - -2019-10-27 Paul Thomas - - PR fortran/86248 - * resolve.c (flag_fn_result_spec): Correct a typo before the - function declaration. - * trans-decl.c (gfc_sym_identifier): Boost the length of 'name' - to allow for all variants. Simplify the code by using a pointer - to the symbol's proc_name and taking the return out of each of - the conditional branches. Allow symbols with fn_result_spec set - that do not come from a procedure namespace and have a module - name to go through the non-fn_result_spec branch. - -2019-10-25 Cesar Philippidis - Tobias Burnus - - * openmp.c (gfc_match_omp_map_clause): Add and pass allow_commons - argument. - (gfc_match_omp_clauses): Update calls to permit common blocks for - OpenACC's copy/copyin/copyout, create/delete, host, - pcopy/pcopy_in/pcopy_out, present_or_copy, present_or_copy_in, - present_or_copy_out, present_or_create and self. - -2019-10-24 Martin Liska - - PR fortran/92174 - * array.c (gfc_resolve_array_spec): Break the loop - for out of bounds index. - * resolve.c (is_non_constant_shape_array): Likewise. - -2019-10-23 Steven G. Kargl - - dump-parse-tree.c (show_expr): Add dumping of BT_BOZ constants. - -2019-10-22 Steven G. Kargl - - PR fortran/92174 - * decl.c (attr_decl1): Move check for F2018:C822 from here ... - * array.c (gfc_set_array_spec): ... to here. - -2019-10-18 Steven G. Kargl - - PR fortran/69455 - * trans-decl.c (generate_local_decl): Avoid misconstructed - intrinsic modules in a BLOCK construct. - -2019-10-18 Tobias Burnus - - PR fortran/91586 - * class.c (gfc_find_derived_vtab): Return NULL - instead of deref'ing NULL pointer. - -2019-10-15 James Norris - Tobias Burnus - - PR fortran/65438 - * openmp.c (check_array_not_assumed): Remove pointer check. - -2019-10-14 Steven G. Kargl - - PR fortran/89943 - decl.c (gfc_match_function_decl): Ignore duplicate BIND(C) for function - declaration in submodule. Implement at check for F2018 C1550. - (gfc_match_entry): Use temporary for locus, which allows removal of - one gfc_error_now(). - (gfc_match_subroutine): Ignore duplicate BIND(C) for subroutine - declaration in submodule. Implement at check for F2018 C1550. - -2019-10-14 Thomas Koenig - - PR fortran/92004 - * array.c (expand_constructor): Set from_constructor on - expression. - * gfortran.h (gfc_symbol): Add maybe_array. - (gfc_expr): Add from_constructor. - * interface.c (maybe_dummy_array_arg): New function. - (compare_parameter): If the formal argument is generated from a - call, check the conditions where an array element could be - passed to an array. Adjust error message for assumed-shape - or pointer array. Use correct language for assumed shaped arrays. - (gfc_get_formal_from_actual_arglist): Set maybe_array on the - symbol if the actual argument is an array element fulfilling - the conditions of 15.5.2.4. - -2019-10-14 Tobias Burnus - - * error.c: Remove debug pragma added in previous commit. - -2019-10-14 Tobias Burnus - - PR fortran/92072 - * error.c (error_print, gfc_format_decoder): Fix %C column- - offset handling. - -2019-10-13 Damian Rouson - - PR fortran/91513 - * resolve.c (resolve_ordinary_assign): Improved error message. - -2019-10-13 Steven G. Kargl - - PR fortran/90297 - * resolve.c (resolve_typebound_function): Remove code with no - functional effect. - -2019-10-13 Thomas Koenig - - PR fortran/92017 - * expr.c (simplify_parameter_variable): Set the character length - of the result expression from the original expression if - necessary. - -2019-10-11 Steven G. Kargl - - PR fortran/91649 - check.c (gfc_check_findloc): Additional checking for valid arguments - -2019-10-11 Steven G. Kargl - - PR fortran/91715 - * decl.c (gfc_match_prefix): If matching a type-spec returns an error, - it's an error so re-act correctly. - -2019-10-11 Steven G. Kargl - - PR fortran/92018 - * check.c (reset_boz): New function. - (illegal_boz_arg, boz_args_check, gfc_check_complex, gfc_check_float, - gfc_check_transfer): Use it. - (gfc_check_dshift): Use reset_boz, and re-arrange the checking to - help suppress possible run-on errors. - (gfc_check_and): Restore checks for valid argument types. Use - reset_boz, and re-arrange the checking to help suppress possible - run-on errors. - * resolve.c (resolve_function): Actual arguments cannot be BOZ in - a function reference. - -2019-10-11 Steven G. Kargl - - PR fortran/92019 - * array.c (match_subscript): BOZ cannot be an array subscript. - -2019-10-11 Tobias Burnus - - PR fortran/92050 - * trans-expr.c (gfc_conv_procedure_call): Handle code generated - by -fcheck=all. - -2019-10-11 Tobias Burnus - - * f95-lang.c (LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR): Re-define to - gfc_omp_is_allocatable_or_ptr. - * trans-decl.c (create_function_arglist): Set GFC_DECL_OPTIONAL_ARGUMENT - only if not passed by value. - * trans-openmp.c (gfc_omp_is_allocatable_or_ptr): New. - (gfc_trans_omp_clauses): For MAP, handle (present) optional arguments; - for target update, handle allocatable/pointer scalars. - * trans.h (gfc_omp_is_allocatable_or_ptr): Declare. - -2019-10-10 Tobias Burnus - - * trans-openmp.c (gfc_trans_omp_clauses): Actually pass use_device_addr - on to the middle end. - -2019-10-08 Steven G. Kargl - - PR fortran/91801 - * simplify.c (gfc_simplify_reshape): Convert a gcc_assert into a - gfc_error as a user can easily hit the condition. - -2019-10-08 Tobias Burnus - - * parse.c (parse_executable): Add missing ST_OMP_TARGET_SIMD. - -2019-10-08 Tobias Burnus - - * match.h (gfc_match_omp_eos_error): Renamed from gfc_match_omp_eos. - * openmp.c (gfc_match_omp_eos): Make static. - (gfc_match_omp_eos_error): New. - * parse.c (matchs, matchdo, matchds): Do as done for 'matcho' - - if error occurred after OpenMP/OpenACC directive matched, do not - try other directives. - (decode_oacc_directive, decode_omp_directive): Call new function - instead. - -2019-10-05 Steven G. Kargl - - PR fortran/47045 - * decl.c (variable_decl): Do not search parent namespace for symbol. - -2019-10-05 Paul Thomas - - PR fortran/91926 - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Correct the - assignment of the attribute field to account correctly for an - assumed shape dummy. Assign separately to the gfc and cfi - descriptors since the atribute can be different. Add btanch to - correctly handle missing optional dummies. - -2019-10-04 Steven G. Kargl - - PR fortran.91959 - * fortran/decl.c (variable_decl): Re-arrange code for matching %FILL. - -2019-10-04 Tobias Burnus - - * error.c (error_print, gfc_format_decoder): Fix off-by one issue - with %C. - -2019-10-03 Steven G. Kargl - - PR fortran/91497 - * simplify.c (gfc_simplify_dble, simplify_intconv, gfc_simplify_real, - gfc_simplify_sngl): Disable -Wconversion and -Wconversion-extra - warnings for explicit conversion of literal constants. - -2019-10-03 Bernd Edlinger - - * primary.c (match_real_constant): Remove shadowing local vars. - Rename local vars. Fix undefined behavior in loop termination. - (gfc_convert_to_structure_constructor): Rename local var. - -2019-10-03 Thomas Koenig - - PR fortran/84487 - * trans-decl.c (gfc_get_symbol_decl): For __def_init, set - DECL_ARTIFICAL and do not set TREE_READONLY. - -2019-10-03 Mark Eggleston - - * array.c (check_element_type): Call gfc_typename with the gfc_expr - "expr" instead of its gfc_typespec "ts". - * check.c (gfc_check_co_reduce): Call gfc_typename with the gfc_expr - "a" instead of its gfc_typespec "ts". - (gfc_check_co_reduce): Call gfc_typename with the gfc_expr "a" instead - of its gfc_typespec "ts". - (gfc_check_eoshift): Call gfc_typename with the gfc_expr "array" - instead of its gfc_typespec ts. - (gfc_check_same_type_as): In two calls to gfc_typename use "a" and "b" - of type gfc_expr instead of the "ts" fields of "a" and "b" - * decl.c (variable_decl): Call gfc_typename with the gfc_expr - "initializer" instead of its gfc_typespec "ts". - * expr.c (gfc_check_assign): Use "rvalue" and "lvalue" of type gfc_expr - in calls to gfc_typename instead of their "ts" fields of type - gfc_typespec. - (gfc_check_pointer_assign): Use "rvalue" and "lvalue" of type gfc_expr - in calls to gfc_typename instead of their "ts" fields of type - gfc_typespec. - * gfortran.h: Add prototypes for gfc_dummy_typename and a new function - gfc_typename for gfc_expr *. - *interface.c (gfc_check_dummy_characteristics): Use gfc_dummy_typename - for the dummy variable. - (compare_parameter): Use gfc_dummy_typename for the formal argument. - Use "actual" of type gfc_expr in call to gfc_typename for the actual - argument. - * intrinsic.c (check_arglist): Use gfc_dummy_typename for the formal - argument. Use expressions of type gfc_expr from the argument list to - call gfc_typename. - (gfc_convert_type_warn): New local variable "is_char_constant" set if - the expression type is a character constant. At the "bad" label - determine source type name by calling gfc_typename with either "expr" - for character constants or "from_ts" and use that in the warning - messages instead of the original call to gfc_typename. - * misc.c (gfc_typename): New function for gfc_expr *, use for where - character types are possible it can get the character length from - gfc_expr for character literals. - (gfc_dummy_typename): New functionfor gfc_typespec *, if no character - length is present the character type is assumed and the appropriate - string is return otherwise it calls gfc_typename for gfc_typespec *. - (gfc_typespec): for character types construct the type name with length - and kind (if it is not default kind). - -2019-10-02 Steven G. Kargl - - PR fortran/91784 - * simplify.c (gfc_convert_constant): Simplify expression if the - expression type is EXPR_OP. - -2019-10-02 Steven G. Kargl - - PR fortran/91785 - * primary.c (gfc_match_varspec): Ensure an inquiry parameter has - it locus set. - -2019-10-02 Steven G. Kargl - - PR fortran/91942 - * io.c (match_vtag): Check for non-NULL result->symtree. - (match_out_tag): Check for invalid constant due to inquiry parameter. - (match_filepos): Instead of a syntax error, go to cleanup to get better - error messages. - -2019-10-02 Steven G. Kargl - - PR fortran/91943 - * match.c (gfc_match_call): BOZ cannot be an actual argument in - a subroutine reference. - * resolve.c (resolve_function): BOZ cannot be an actual argument in - a function reference. - -2019-10-01 Jan Hubicka - - * module.c (load_commons): Initialize flags to 0 to silence - -Wmaybe-uninitialized warning. - (read_module): Likewise for n and comp_name. - -2019-10-02 Tobias Burnus - - * dump-parse-tree.c (show_omp_clauses): Handle OMP_LIST_USE_DEVICE_ADDR. - * gfortran.h (enum): Add OMP_LIST_USE_DEVICE_ADDR. - * openmp.c (omp_mask1): Likewise. - (gfc_match_omp_clauses): Match 'use_device_addr'. - (OMP_TARGET_DATA_CLAUSES): Add OMP_LIST_USE_DEVICE_ADDR. - (resolve_omp_clauses): Add it; add is_device_ptr checks. - -2019-10-02 Tobias Burnus - - * openmp.c (gfc_match_omp_clauses): Show a clause-parsing - error if none was rised before. - * parse.c (matcha, matcho): If error occurred after - OpenMP/OpenACC directive matched, do not try other directives. - -2019-10-02 Tobias Burnus - - * trans-openmp.c (gfc_omp_is_optional_argument): Fix coding - style. - -2019-10-02 Kwok Cheung Yeung - - * f95-lang.c (LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT): Define to - gfc_omp_is_optional_argument. - * trans-decl.c (create_function_arglist): Set - GFC_DECL_OPTIONAL_ARGUMENT in the generated decl if the parameter is - optional. - * trans-openmp.c (gfc_omp_is_optional_argument): New. - (gfc_omp_privatize_by_reference): Return true if the decl is an - optional pass-by-reference argument. - * trans.h (gfc_omp_is_optional_argument): New declaration. - (lang_decl): Add new optional_arg field. - (GFC_DECL_OPTIONAL_ARGUMENT): New macro. - -2019-10-01 David Malcolm - - * error.c (gfc_diagnostic_starter): Clear the prefix before - calling diagnostic_show_locus. - -2019-09-29 Steven G. Kargl - - PR fortran/91641 - * check.c (gfc_check_is_contiguous): null() cannot be an actual - argument to is_contiguous(). - -2019-09-29 Steven G. Kargl - - PR fortran/91714 - * decl.c (gfc_match_decl_type_spec): Issue errors for a few - mangled types. - -2019-09-29 Paul Thomas - - PR fortran/91726 - * resolve.c (gfc_expr_to_initialize): Bail out with a copy of - the original expression if the array ref is a scalar and the - array_spec has corank. - * trans-array.c (gfc_conv_array_ref): Such expressions are OK - even if the array ref codimen is zero. - * trans-expr.c (gfc_get_class_from_expr): New function taken - from gfc_get_vptr_from_expr. - (gfc_get_vptr_from_expr): Call new function. - * trans-stmt.c (trans_associate_var): If one of these is a - target expression, extract the class expression from the target - and copy its fields to a new target variable. - * trans.h : Add prototype for gfc_get_class_from_expr. - -2019-09-28 Jerry DeLisle - - PR fortran/91802 - * decl.c (attr_decl1): Return MATCH_ERROR without free to avoid - bad expression type in free_expr0() ICE in rank+corank check. - -2019-09-28 Steven G. Kargl - - PR fortran/91802 - * decl.c (attr_decl1): Check if rank+corank > 15. - -2019-09-28 Steven G. Kargl - - PR fortran/91864 - * gcc/fortran/io.c (match_io_element): An inquiry parameter cannot be - read into. - * gcc/fortran/match.c (gfc_match_allocate): An inquiry parameter - can be neither an allocate-object nor stat variable. - (gfc_match_deallocate): An inquiry parameter cannot be deallocated. - -2019-09-26 Alessandro Fanfarillo - - * trans-array.c (structure_alloc_comps): - Add new enum item for BCAST_ALLOC_COMP. - New argument for structure_alloc_comp, and new case to handle - recursive components in derived types. - * trans-array.c (gfc_bcast_alloc_comp): New function - used to handleco_broadcast for allocatable components - of derived types. - * trans-array.h: Add gfc_bcast_alloc_comp - * trans-intrinsics.c (conv_co_collective): Add check for - derived type variable and invocation of co_bcast_alloc_comp. - * trans.h: New data structure gfc_co_subroutines_args. - -2019-09-25 David Malcolm - - PR fortran/91426 - * error.c (curr_diagnostic): New static variable. - (gfc_report_diagnostic): New static function. - (gfc_warning): Replace call to diagnostic_report_diagnostic with - call to gfc_report_diagnostic. - (gfc_format_decoder): Colorize the text of %L and %C to match the - colorization used by diagnostic_show_locus. - (gfc_warning_now_at): Replace call to diagnostic_report_diagnostic with - call to gfc_report_diagnostic. - (gfc_warning_now): Likewise. - (gfc_warning_internal): Likewise. - (gfc_error_now): Likewise. - (gfc_fatal_error): Likewise. - (gfc_error_opt): Likewise. - (gfc_internal_error): Likewise. - -2019-09-23 Paul Thomas - - PR fortran/91729 - * match.c (gfc_match_select_rank): Initialise 'as' to NULL. - Check for a symtree in the selector expression before trying to - assign a value to 'as'. Revert to gfc_error and go to cleanup - after setting a MATCH_ERROR. - -2019-09-20 Tobias Burnus - - PR fortran/78260 - * openmp.c (gfc_resolve_oacc_declare): Reject all - non variables but accept function result variables. - * trans-openmp.c (gfc_trans_omp_clauses): Handle - function-result variables for remaing cases. - -2019-09-17 Paul Thomas - - PR fortran/91588 - * expr.c (check_inquiry): Remove extended component refs by - using symbol pointers. If a function argument is an associate - variable with a constant target, copy the target expression in - place of the argument expression. Check that the charlen is not - NULL before using the string length. - (gfc_check_assign): Remove extraneous space. - -2019-09-15 Steven G. Kargl - - PR fortran/91727 - * resolve.c (conformable_arrays): If array-spec is NULL, then - allocate-object is a scalar. a conformability check only occurs - for an array source-expr. - -2019-09-15 Thomas Koenig - - PR fortran/91550 - * frontend-passes.c (do_subscript): If step equals - zero, a previuos error has been reported; do nothing - in this case. - * resolve.c (gfc_resolve_iterator): Move error checking - after type conversion. - -2019-09-14 Thomas Koenig - - PR fortran/91557 - PR fortran/91556 - * frontend-passes.c (check_externals_procedure): Reformat argument - list. Use gfc_compare_actual_formal instead of gfc_procedure_use. - * gfortran.h (gfc_symbol): Add flag error. - * interface.c (gfc_compare_interfaces): Reformat. - (argument_rank_mismatch): Add where_formal argument. If it is - present, note that the error is between different calls. - (compare_parameter): Change warnings that previously dependended - on -Wargument-mismatch to unconditional. Issue an error / warning - on type mismatch only once. Pass where_formal to - argument_rank_mismatch for artificial variables. - (compare_actual_formal): Change warnings that previously - dependeded on -Wargument-mismatch to unconditional. - (gfc_check_typebound_override): Likewise. - (gfc_get_formal_from_actual_arglist): Set declared_at for - artificial symbol. - * invoke.texi: Extend description of -fallow-argument-mismatch. - Delete -Wargument-mismatch. - * lang.opt: Change -Wargument-mismatch to do-nothing option. - * resolve.c (resolve_structure_cons): Change warnings that - previously depended on -Wargument-mismatch to unconditional. - * trans-decl.c (generate_local_decl): Do not warn if the symbol is - artificial. - -2019-09-13 Steven G. Kargl - - PR fortran/91566 - * simplify.c (gfc_simplify_merge): Need to simplify expression - after insertation of parenthesis. - -2019-09-13 Bernd Edlinger - - PR fortran/91716 - * trans-array.c (gfc_conv_array_initializer): Always assign the - array type of the field to the string constant. - -2019-09-13 Paul Thomas - - PR fortran/91717 - * dependency.c (gfc_dep_resolver): Flag identical components - and exit with return value 1 if set and no array refs. - -2019-09-11 Steven G. Kargl - - PR fortran/91553 - * simplify.c (gfc_convert_constant): During conversion check if the - constant is enclosed in parenthesis, and simplify expression. - -2019-09-11 Steven G. Kargl - - PR fortran/91642 - * io.c (gfc_match_inquire): null() cannot be in an iolength inquire - list. - -2019-09-05 Harald Anlauf - - PR fortran/91496 - * parse.c (parse_executable): Improve error messages for - improperly placed pragmas not preceeding a loop. - -2019-09-05 Steven G. Kargl - - PR fortran/91660 - * decl.c (gfc_match_decl_type_spec): Improve and restore error - message for malformed types-spec. - -2019-09-04 Steven G. Kargl - - PR fortran/91650 - * io.c (match_io_element): An output IO list item cannot be a BOZ. - -2019-09-03 Steven G. Kargl - - * gfortran.texi: Update documentation to catch up with BOZ changes. - * invoke.texi: Fix English from previous BOZ changes commit. - -2019-09-02 Paul Thomas - - PR fortran/91589 - * primary.c (gfc_match_varspec): Return MATCH_NO on an apparent - component ref, when the primary type is intrinsic. - -2019-09-02 Steven G. Kargl - - PR fortran/91552 - * array.c (walk_array_constructor): New function. - (gfc_match_array_constructor): Use it. - -2019-09-01 Paul Thomas - - * array.c (spec_dimen_size): Check for the presence of - expressions for the bounds. - * decl.c (gfc_match_end): Add case COMP_SELECT_RANK. - * dump-parse-tree.c(show_symbol): Show the arrayspec of class - entities. - (show_code_node): Show the code for SELECT_RANK. - * expr.c (gfc_check_vardef_context): Omit the context of - variable definition for select rank associate names since the - ASSUMED RANK throws. - * gfortran.h : Add ST_SELECT_RANK and ST_RANK to enum - gfc_statement. Add select_rank_temporary to symbol attribute - structure. Add EXEC_SELECT_RANK to enum gfc_exec_op. - * match.c (match_exit_cycle): Add COMP_SELECT_RANK. - (copy_ts_from_selector_to_associate): Add as special case for - assumed rank class variables. - (select_intrinsic_set_tmp): Clean up the code by using symbols - for references to the temporary and the selector. - (select_type_set_tmp): Ditto. - (select_rank_set_tmp): New function. - (gfc_match_select_rank): New function. - (gfc_match_rank_is): New function. - * match.h : Add prototypes for gfc_match_select_rank and - gfc_match_rank_is. - * parse.c (decode_statement): Attempt to match select_rank and - rank statements. - (next_statement, gfc_ascii_statement): Add ST_SELECT_RANK. - (parse_select_rank_block): New function. - (parse_executable): Parse select rank block for ST_SELECT_RANK. - * parse.h : Add COMP_SELECT_RANK to enum gfc_compile_state. - * resolve.c (resolve_variable): Exclude select_rank_temporaries - from the check on use of ASSUMED RANK. - (gfc_resolve_expr): Make sure that unlimited polymorphic select - rank temporaries expressions are not resolved again after being - successfully resolved. - (resolve_assoc_var): Do not do the rank check for select rank - temporaries. - (resolve_select_rank): New function. - (gfc_resolve_blocks): Deal with case EXEC_SELECT_RANK. - (resolve_symbol): Exclude select rank temporaries for check on - use of ASSUMED RANK. - * st.c (gfc_free_statement): Include EXEC_SELECT_RANK. - * trans-array.c (gfc_conv_array_ref): Select rank temporaries - may have dimen == 0. - (gfc_conv_expr_descriptor): Zero the offset of select rank - temporaries. - * trans-stmt.c (copy_descriptor): New function. - (trans_associate_var): Add code to associate select rank temps. - (gfc_trans_select_rank_cases): New function. - (gfc_trans_select_rank): New function. - * trans-stmt.h : Add prototype for gfc_trans_select_rank. - trans.c (trans_code): Add select rank case. - -2019-08-30 Steven G. Kargl - - PR fortran/91587 - * io.c (match_filepos): MATCH_ERROR should branch to a syntax error. - -2019-08-28 Steven G. Kargl - - PR fortran/91551 - * intrinsic.c (sort_actual): ALLOCATED has one argument. Check for - no argument case. - -2019-08-28 Steven G. Kargl - - PR fortran/91565 - * simplify.c (gfc_simplify_reshape): Add additional checks of the - ORDER dummy argument. - -2019-08-28 Steven G. Kargl - - PR fortran/91564 - * check.c (gfc_check_kill_sub): Additional checks on status dummy - argument. - -2019-08-28 Mark Eggleston - - * intrinsics.text: Corrected stated standard for intrinsics - and specific intrinsics where necessary. Also in C_SIZEOF the - printed value is T not .TRUE.. In IPARITY example wrap BOZ - constants in calls to INT. - -2019-08-27 Harald Anlauf - - PR fortran/91496 - * gfortran.h: Extend struct gfc_iterator for loop annotations. - * array.c (gfc_copy_iterator): Copy loop annotations by IVDEP, - VECTOR, and NOVECTOR pragmas. - * decl.c (gfc_match_gcc_ivdep, gfc_match_gcc_vector) - (gfc_match_gcc_novector): New matcher functions handling IVDEP, - VECTOR, and NOVECTOR pragmas. - * match.h: Declare prototypes of matcher functions handling IVDEP, - VECTOR, and NOVECTOR pragmas. - * parse.c (decode_gcc_attribute, parse_do_block) - (parse_executable): Decode IVDEP, VECTOR, and NOVECTOR pragmas; - emit warning for unrecognized pragmas instead of error. - * trans-stmt.c (gfc_trans_simple_do, gfc_trans_do): Add code to - emit annotations for IVDEP, VECTOR, and NOVECTOR pragmas. - * gfortran.texi: Document IVDEP, VECTOR, and NOVECTOR pragmas. - -2019-08-27 Mark Eggleston - - * invoke.texi: Ensure that the option lists fit within the - margins of a PDF page. Re-worded description of - '-ffrontend-loop-interchange' so that it fits with the margins - of a PDF page. Add '-fdec-include', '-fdec-blank-format-item' - and '-fdec-format-defaults' to list of options that are enabled - by '-fdec'. - -2019-08-26 Thomas Koenig - - PR fortran/91390 - PR fortran/91473 - * frontend-passes.c (gfc_check_externals): Make - gfc_errors_to_warnings conditional on -fallow-argument-mismatch. - * invoke.texi: Document -fallow-argument-mismatch. - * lang.opt: Add -fallow-argument-mismatch. - -2019-08-24 Thomas Koenig - - PR fortran/91390 - PR fortran/91519 - * frontend-passes.c (check_externals_procedure): New - function. If a procedure is not in the translation unit, create - an "interface" for it, including its formal arguments. - (check_externals_code): Use check_externals_procedure for common - code with check_externals_expr. - (check_externals_expr): Vice versa. - * gfortran.h (gfc_get_formal_from_actual-arglist): New prototype. - (gfc_compare_actual_formal): New prototype. - * interface.c (compare_actual_formal): Rename to - (gfc_compare_actual_formal): New function, make global. - (gfc_get_formal_from_actual_arglist): Make global, and move here from - * trans-types.c (get_formal_from_actual_arglist): Remove here. - (gfc_get_function_type): Use gfc_get_formal_from_actual_arglist. - -2019-08-23 Mark Eggleston - - * intrinsics.text: References in 'See also:' are now on - separate lines to ensure that they always fit in the margins of - a PDF page. The column widths of tables have been adjusted - where necessary to prevent overlapping text. All program - examples now fit within the margins of a PDF page. - -2019-08-23 Jakub Jelinek - - PR middle-end/91283 - * options.c (gfc_post_options): Set flag_excess_precision instead of - flag_excess_precision_cmdline. Remove comment. - -2019-08-23 Mark Eggleston - - * intrinsics.text: Removed empty sections. The order of - sections for each intrinsic is now consistent throughout. - Stray words removed. Text in the wrong section moved. - Missing standard statement inserted. - -2019-08-23 Mark Eggleston - - * intrinsics.text: Correct the return types for ZABS and CDABS. - -2019-08-22 Steven G. Kargl - - * intrinsic.c (add_subroutines): ERRMSG is INTENT(INOUT) in - co_broadcast, co_max, co_min, co_reduce, and co_sum. - -2019-08-20 Mark Eggleston - - PR fortran/89236 - * intrinsic.texi: Add GNU extension notes to DIM, MOD, MODULO. - -2019-08-19 Mark Eggleston - - * gfortran.texi: Delete paragraph about integer overload errors - when initialising integer variables with BOZ constants as these - no longer occur. - -2019-08-18 Steven G. Kargl - - PR fortran/91485 - module.c (gfc_match_use): User defined operator cannot conflict with - a rename symbol. - -2019-08-17 Steven G. Kargl - - PR fortran/82992 - * module.c (gfc_match_use): When renaming a module entity, search - current namespace for conflicting symbol. - -2019-08-17 Steven G. Kargl - - PR fortran/78739 - * match.c (gfc_match_st_function): When matching a statement function, - need to check if the statement function name shadows the function - name. - -2019-08-17 Steven G. Kargl - - PR fortran/78719 - * decl.c (get_proc_name): Check for a CLASS entity when trying to - add attributes to an entity that already has an explicit interface. - -2019-08-17 Steven G. Kargl - - PR fortran/91471 - * primary.c (gfc_variable_attr): Remove a gfc_internal_error(), - which cannot be reached by conforming Fortran code, but seems to - be reachable from nonconforming Fortran code. Treat the AR_UNKNOWN - case as a no-op. - -2019-08-17 Janne Blomqvist - - PR fortran/68401 - * trans-decl.c (gfc_build_builtin_function_decls): Replace - os_error with os_error_at decl. - * trans.c (trans_runtime_error_vararg): Modify so the error - function decl is passed directly. - (gfc_trans_runtime_error): Pass correct error function decl. - (gfc_trans_runtime_check): Likewise. - (trans_os_error_at): New function. - (gfc_call_malloc): Use trans_os_error_at. - (gfc_allocate_using_malloc): Likewise. - (gfc_call_realloc): Likewise. - * trans.h (gfor_fndecl_os_error): Replace with gfor_fndecl_os_error_at. - -2019-08-16 Jeff Law - Mark Eggleston - - * gfortran.h: Add gfc_check_conflict declaration. - * symbol.c (check_conflict): Rename cfg_check_conflict and remove - static. - * symbol.c (cfg_check_conflict): Remove automatic in equivalence - conflict check. - * symbol.c (save_symbol): Add check for in equivalence to stop the - the save attribute being added. - * trans-common.c (build_equiv_decl): Add is_auto parameter and - add !is_auto to condition where TREE_STATIC (decl) is set. - * trans-common.c (build_equiv_decl): Add local variable is_auto, - set it true if an atomatic attribute is encountered in the variable - list. Call build_equiv_decl with is_auto as an additional parameter. - flag_dec_format_defaults is enabled. - * trans-common.c (accumulate_equivalence_attributes) : New subroutine. - * trans-common.c (find_equivalence) : New local variable dummy_symbol, - accumulated equivalence attributes from each symbol then check for - conflicts. - -2019-08-16 Richard Biener - - * trans-intrinsic.c (gfc_conv_intrinsic_findloc): Initialize - forward_branch to avoid bogus uninitialized warning. - -2019-08-15 Thomas Koenig - - PR fortran/91443 - * frontend-passes.c (check_externals_expr): New function. - (check_externals_code): New function. - (gfc_check_externals): New function. - * gfortran.h (debug): Add prototypes for gfc_symbol * and - gfc_expr *. - (gfc_check_externals): Add prototype. - * interface.c (compare_actual_formal): Do not complain about - alternate returns if the formal argument is optional. - (gfc_procedure_use): Handle cases when an error has been issued - previously. Break long line. - * parse.c (gfc_parse_file): Call gfc_check_externals for all - external procedures. - * resolve.c (resolve_global_procedure): Remove checking of - argument list. - -2019-08-13 Steven G. Kargl - - PR fortran/87991 - * resolve.c (check_data_variable): data-stmt-object with pointer - attribute requires a data-stmt-value with the target attribute. - -2019-08-13 Steven G. Kargl - - PR fortran/88072 - * misc.c (gfc_typename): Do not point to something that ought not to - be pointed at. - -2013-08-13 Thomas Koenig - - PR fortran/90563 - * frontend-passes.c (insert_index): Suppress errors while - simplifying the resulting expression. - -2019-08-13 Steven G. Kargl - - PR fortran/89647 - resolve.c (resolve_typebound_procedure): Allow host associated - procedure to be a binding target. While here, wrap long line. - -2019-08-13 Steven G. Kargl - - PR fortran/87993 - * expr.c (gfc_simplify_expr): Simplifcation of an array with a kind - type inquiry suffix yields a constant expression. - -2019-08-13 Janne Blomqvist - - PR fortran/91414 - * check.c (gfc_check_random_seed): Reduce seed_size. - * intrinsic.texi (RANDOM_NUMBER): Update to match new PRNG. - -2019-08-12 Thomas Koenig - - PR fortran/91424 - * frontend-passes.c (do_subscript): Do not warn for an - expression a second time. Do not warn about a zero-trip loop. - (doloop_warn): Also look at contained namespaces. - -2019-08-11 Janne Blomqvist - - PR fortran/91413 - * invoke.texi (-fmax-stack-var-size): Document increased default. - * options.c (gfc_post_options): Increase default stack var size to - 65536 bytes. - * trans-decl.c (gfc_finish_var_decl): Generate warning when local - array moved to static storage. - -2019-08-10 Steven G. Kargl - - * decl.c (match_old_style_init): Use a clearer error message. - * expr.c (gfc_check_assign): Update BOZ checking to provide a stricter - adherence to the Fortran standard. Use gfc_invalid_boz () to - relax errors into warnings. - * gfortran.h (gfc_isym_id): Add new ids GFC_ISYM_DFLOAT, - GFC_ISYM_FLOAT, GFC_ISYM_REALPART, and GFC_ISYM_SNGL - * intrinsic.c (add_functions): Use new ids to split REAL generic into - REAL, FLOAT, DFLOAT, SNGL, and REALPART generics. - (gfc_intrinsic_func_interface): Allow new intrinsics in an - initialization expression - * resolve.c (resolve_operator): Deal with BOZ as operands. - Use gfc_invalid_boz to allow for errors or warnings via the - -fallow-invalid-boz option. A BOZ cannot be an operand to an - unary operator. Both operands of a binary operator cannot be BOZ. - For binary operators, convert a BOZ operand into the type and - kind of the other operand for REAL or INTEGER operand. - * trans-intrinsic.c: Use new ids to cause conversions to happen. - -2019-08-06 Steven G. Kargl - - PR fortran/91359 - * trans-decl.c (gfc_generate_return): Ensure something is returned - from a function. - -2019-08-06 Steven G. Kargl - - PR fortran/42546 - * check.c(gfc_check_allocated): Add comment pointing to ... - * intrinsic.c(sort_actual): ... the checking done here. - -2019-08-05 Steven g. Kargl - - PR fortran/91372 - * decl.c (gfc_match_data): Allow an implied do-loop to nestle against - DATA. - -2019-08-04 Steven G. Kargl - - PR fortran/88227 - * check.c (oct2bin): New function. Convert octal string to binary. - (hex2bin): New function. Convert hexidecimal string to binary. - (bin2real): New function. Convert binary string to REAL. Use - oct2bin and hex2bin. - (gfc_boz2real): Use fallback conversion bin2real. - -2019-08-02 Steven G. Kargl - - PR fortran/90985 - * decl.c (gfc_match_data): In free-form code, DATA be followed by - whitespace. - -2019-08-02 Steven G. Kargl - - PR fortran/90986 - * match.c (gfc_match_equivalence): Check that EQUIVALENCE is followed - by '('. - -2019-07-30 Steven G. Kargl - - PR fortran/91296 - * interface.c (compare_actual_expr): When checking for aliasing, add - a case to handle REF_INQUIRY (e.g., foo(x%re, x%im) do not alias). - -2019-07-29 Thomas Koenig - - PR fortran/90813 - * dump-parse-tree.c (show_global_symbol): New function. - (gfc_dump_global_symbols): New function. - * gfortran.h (gfc_traverse_gsymbol): Add prototype. - (gfc_dump_global_symbols): Likewise. - * invoke.texi: Document -fdump-fortran-global. - * lang.opt: Add -fdump-fortran-global. - * parse.c (gfc_parse_file): Handle flag_dump_fortran_global. - * symbol.c (gfc_traverse_gsymbol): New function. - * trans-decl.c (sym_identifier): New function. - (mangled_identifier): New function, doing most of the work - of gfc_sym_mangled_identifier. - (gfc_sym_mangled_identifier): Use mangled_identifier. Add mangled - identifier to global symbol table. - (get_proc_pointer_decl): Use backend decl from global identifier - if present. - -2019-07-25 Thomas Koenig - - PR fortran/65819 - * dependency.h (gfc_dep_resovler): Add optional argument identical. - * dependency.c (gfc_check_dependency): Do not alway return 1 if - the symbol is the same. Pass on identical to gfc_dep_resolver. - (gfc_check_element_vs_element): Whitespace fix. - (gfc_dep_resolver): Adjust comment for function. If identical is - true, return 1 if any overlap has been found. - -2019-07-23 Steven G. Kargl - - PR fortran/54072 - * check.c (gfc_invalid_boz): Fix comment. - (illegal_boz_arg): New function. - (gfc_check_transfer): Use to arguments. - (gfc_check_storage_size): Ditto. - (gfc_check_complex): Remove leftover comment from BOZ patch. - * primary.c (match_boz_constant): Remove leftover comment. - -2019-07-23 Steven G. Kargl - - * arith.c (gfc_convert_integer, gfc_convert_real, gfc_convert_complex): - Move to ... - * primary.c (convert_integer, convert_real, convert_complex): ... here. - Rename and make static functions. - (match_integer_constant): Use convert_integer - (match_real_constant): Use convert_real. - (match_complex_constant: Use convert_complex. - * arith.h (gfc_convert_integer, gfc_convert_real, gfc_convert_complex): - Remove prototypes. - * array.c (match_array_cons_element): A BOZ cannot be a data - statement value. Jump to a common exit point. - * check.c (gfc_invalid_boz): New function. Emit error or warning - for a BOZ in an invalid context. - (boz_args_check): Move to top of file to prevent need of forward - declaration. - (is_boz_constant): New function. Check that BOZ expr is constant. - (gfc_boz2real): New function. In-place conversion of BOZ literal - constant to REAL in accordance to F2018. - (gfc_boz2int): New function. In-place conversion of BOZ literal - constant to INTEGER in accordance to F2018. - (gfc_check_achar, gfc_check_char, gfc_check_float): Use gfc_invalid_boz. Convert BOZ - as needed. - (gfc_check_bge_bgt_ble_blt): Enforce F2018 requirements on BGE, - BGT, BLE, and BLT intrinsic functions. - (gfc_check_cmplx): Re-organize to check kind, if present, first. - Convert BOZ real and/or imaginary parts as needed in accordance to - F2018. - (gfc_check_complex): Use gfc_invalid_boz. Convert BOZ as needed. - (gfc_check_dcmplx, gfc_check_dble ): Convert BOZ as needed. - (gfc_check_dshift): Make dshift[lr] conform to F2018 standard. - gfc_check_float (gfc_expr *a) - (gfc_check_iand_ieor_ior): Make IAND, IEOR, and IOR conform to - F2018 standard. - (gfc_check_int): Conform to F2018 standard. - (gfc_check_intconv): Deprecate SHORT and LONG aliases for INT2 and - INT. Simply return for a BOZ argument. See gfc_simplify_intconv. - (gfc_check_merge_bits): Make MERGE_BITS conform to Fortran 2018 - standard. - (gfc_check_real): Remove incorrect comment. Check kind, if present, - first. Simply return for a BOZ argument. See gfc_simplify_real. - (gfc_check_and): Re-do error handling for BOZ arguments. Remove - special casing ts.type != BT_INTEGER or BT_LOGICAL. - * decl.c (match_old_style_init): Check for BOZ in old-style - initialization. Issue error or warning depending on - -fallow-invalid-boz option. Issue error if variable is not an - INTEGER or REAL and the value is BOZ. - * expr.c (gfc_copy_expr): Copy a BT_BOZ gfc_expr. - (gfc_check_assign): Re-do error handling for a BOZ in an assignment - statement. Do in-place conversion of RHS based on LHS type of - INTEGER or REAL. - * gfortran.h (gfc_expr): Add a boz component. Remove is_boz component. - (gfc_boz2int, gfc_boz2real, gfc_invalid_boz): New prototypes. - * interface.c (gfc_extend_assign): Guard against replacing an - intrinsic involving a BOZ literal constant on RHS. - * invoke.texi: Doument -fallow-invalid-boz. - * lang.opt: New option. -fallow-invalid-boz. - * libgfortran.h (bt): Elevate BOZ to a basic type. - * misc.c (gfc_basic_typename, gfc_typename): Translate BT_BOZ to BOZ. - * primary.c (convert_integer, convert_real, convert_complex): to here. - Rename and make static functions. - * primary.c(match_boz_constant): Rewrite parsing of a BOZ. Re-do - error handling. Deprecate 'X' for hexidecimal and postfix notation. - Use -fallow-invalid-boz and gfc_invalid_boz to accept deprecated code. - * resolve.c (resolve_ordinary_assign): Rework a RHS that is a - BOZ literal constant. Use gfc_invalid_boz to allow previous - nonstandard behavior. Remove range checking of BOZ conversion. - * simplify.c (convert_boz): Remove function. - (simplify_cmplx): Remove conversion of BOZ constants, because - conversion is done in gfc_check_cmplx. - (gfc_simplify_float): Remove conversion of BOZ constant, because - conversion is done in gfc_check_float. - (simplify_intconv): Use gfc_boz2int to convert BOZ to INTEGER. - Remove range checking for BOZ conversion. - (gfc_simplify_real): Use k, if present, to determine kind. Convert - BOZ to REAL. Remove range checking for BOZ conversion. - target-memory.c (gfc_convert_boz): Rewrite to deal with convert of - a BOZ to a REAL value. - -2019-07-21 Thomas König - - PR libfortran/91030 - * gfortran.texi (GFORTRAN_FORMATTED_BUFFER_SIZE): Document - (GFORTRAN_UNFORMATTED_BUFFER_SIZE): Likewise. - -2019-07-16 Harald Anlauf - - PR fortran/90903 - * libgfortran.h: Add mask for -fcheck=bits option. - * options.c (gfc_handle_runtime_check_option): Add option "bits" - to run-time checks selectable via -fcheck. - * trans-intrinsic.c (gfc_conv_intrinsic_btest) - (gfc_conv_intrinsic_singlebitop, gfc_conv_intrinsic_ibits) - (gfc_conv_intrinsic_shift, gfc_conv_intrinsic_ishft) - (gfc_conv_intrinsic_ishftc): Implement run-time checks for the - POS, LEN, SHIFT, and SIZE arguments. - * gfortran.texi: Document run-time checks for bit manipulation - intrinsics. - * invoke.texi: Document new -fcheck=bits option. - -2019-07-14 Jerry DeLisle - - PR fortran/87233 - * expr.c (check_restricted): Relax constraint C1279 which was - removed from F2008 and above. - -2019-07-07 Paul Thomas - - PR fortran/91077 - * trans-array.c (gfc_conv_scalarized_array_ref) Delete code - that gave symbol backend decl for subref arrays and deferred - length variables. - -2019-07-05 Andrew Stubbs - - * openmp.c (resolve_omp_clauses): Add custom error messages for - parameters in map clauses. - -2019-07-03 Martin Liska - - * check.c (gfc_check_c_funloc): Remove - dead assignemts. - * decl.c (variable_decl): Likewise. - * resolve.c (resolve_typebound_function): Likewise. - * simplify.c (gfc_simplify_matmul): Likewise. - (gfc_simplify_scan): Likewise. - * trans-array.c (gfc_could_be_alias): Likewise. - * trans-common.c (add_equivalences): Likewise. - * trans-expr.c (trans_class_vptr_len_assignment): Likewise. - (gfc_trans_array_constructor_copy): Likewise. - (gfc_trans_assignment_1): Likewise. - * trans-intrinsic.c (conv_intrinsic_atomic_op): Likewise. - * trans-openmp.c (gfc_omp_finish_clause): Likewise. - * trans-types.c (gfc_get_array_descriptor_base): Likewise. - * trans.c (gfc_build_final_call): Likewise. - -2019-06-27 Steven G. Kargl - - PR fortran/90987 - * gfortran.dg/common_1.f: new test. - * gfortran.dg/common_26.f90: Ditto. - -2019-06-26 Steven G. Kargl - - PR Fortran/90988 - ChangeLog forgotten with revision 272667 - * decl.c (access_attr_decl): Use temporary variable to reduce - unreadability of code. Normalize jumping to return. - (gfc_match_protected): Fix parsing error. Add comments to - explain code. Remove dead code. - (gfc_match_private): Use temporary variable to reduce unreadability - of code. Fix parsing error. Move code to test for blank PRIVATE. - Remove dead code. - (gfc_match_public): Move code to test for blank PUBLIC. Fix - parsing error. Remove dead code. - -2019-06-24 Jan Hubicka - - * trans-expr.c (gfc_conv_substring): Check that - type is array or integer prior checking string flag. - (gfc_conv_string_parameter): Likewise. - * trans-openmp.c (gfc_omp_scalar_p): Likewise. - * trans.c (gfc_build_array_ref): Likewise. - -2019-06-22 Jerry DeLisle - - PR fortran/89782 - * io.c (gfc_resolve_dt): Check that internal units are not - character PARAMETER. - -2019-06-21 Steven G. Kargl - - PR fortran/67884 - * resolve.c (deferred_requirements) : Check only the result variable. - (resolve_fl_procedure): Check deferred requirements on functions. - -2019-06-21 Steven G. Kargl - - PR fortran/51991 - * decl.c (gfc_match_save): If SAVE was not seen, return MATCH_NO - instead issuing an error message and returning MATCH_ERROR. - -2019-06-20 Steven G. Kargl - - PR fortran/77632 - * /decl.c (variable_decl): Mark a variable that is a target in pointer - initialization when in PROGRAM, MODULE, or SUBMODULE scope with an - implicit save. - -2019-06-20 Steven G. Kargl - - PR fortran/86587 - * symbol.c (verify_bind_c_derived_type): Remove erroneous error - checking for BIND(C) and PRIVATE attributes. - -2019-06-20 Thomas Koenig - - PR fortran/90937 - * trans-types.c (get_formal_from_actual_arglist): Get symbol from - current namespace so it will be freed later. If symbol is of type - character, get an empty character length. - -2019-06-19 Steven G. Kargl - - PR fortran/69499 - * match.c (gfc_match_select_type): SELECT TYPE is an executable - statement, and cannot appear in MODULE or SUBMODULE scope. - -2019-06-19 Steven G. Kargl - - PR fortran/69398 - * decl.c (attr_decl): Check for duplicate DIMENSION attribute for a - CLASS entity. - -2019-06-19 Steven G. Kargl - - PR fortran/87907 - * resolve.c (resolve_contained_fntype): Do not dereference a NULL - pointer. - -2019-06-19 Jim MacArthur - Mark Eggleston - - PR fortran/89103 - * gfortran.texi: Add -fdec-blank-format-item - * invoke.texi: Add option to list of options. - * invoke.texi: Add to section on Commas in FORMAT specifications. - * io.c (check_format): At FMT_RPAREN goto finished if - -fdec-blank-format-item otherwise set error string. - * lang.opt: Add new option. - * options.c (set_dec_flags): Add SET_BITFLAG for - flag_dec_format_defaults. - -2019-06-18 Julian Brown - - PR fortran/90921 - * trans-decl.c (finish_oacc_declare): Reset module_oacc_clauses - before scanning each namespace. - -2019-06-18 Thomas Schwinge - - PR fortran/85221 - * trans-decl.c (add_attributes_to_decl): Handle OpenACC 'declare' - directive. - -2019-06-16 Thomas Koenig - - * dump_parse_tree (debug): Add verison for formal arglist. - Do not crash when a gfc_expr is NULL. - -2019-06-15 Steven G. Kargl - - * decl.c (gfc_match_derived_decl): Dummy argument cannot be a derived - type. - -2019-06-14 Steven G. Kargl - - * arith.c (arith_power): Rework overflow of an integer to an integer - exponent. - -2019-06-14 Harald Anlauf - - PR fortran/90577 - PR fortran/90578 - * trans-intrinsic.c (gfc_conv_intrinsic_shift): Properly - distinguish logical/arithmetic shifts. - * intrinsic.texi: Update documentation for SHIFTR/SHIFTL/SHIFTA - (Fortran 2008) and LSHIFT/RSHIFT (GNU extensions). - -2019-06-14 Steven G. Kargl - - PR fortran/89646 - * dependency.c (gfc_check_argument_var_dependency): Suppress spurious - warnings by comparing variable names. - -2019-06-13 Steven G. Kargl - - PR fortran/68544 - * resolve.c (is_dt_name): New function to compare symbol name against - list of derived types. - (resolve_actual_arglist): Use it to find wrong code. - -2019-06-13 Steven G. Kargl - - PR fortran/89344 - * expr.c (gfc_check_vardef_context): Check for INTENT(IN) variable - in SELECT TYPE construct. - -2019-06-13 Steven G. Kargl - - PR fortran/88810 - * dependency.c (gfc_dep_resolver): Re-arrange code to make the logic - a bit more transparent. Fix 2 nearby formatting issues. - -2019-06-13 Jakub Jelinek - - * io.c (check_format): Use G_(...) instead of _(...) for error values, - append " in format string at %L" to all strings but unexpected_element, - use error as gfc_error formating string instead of - "%s in format string at %L". Formatting fixes. - -2019-06-12 Steven G. Kargl - - * gfortran.h (gfc_free_dt_list): Remove prototype. - -2019-06-12 Steven G. Kargl - - PR fortran/90002 - * array.c (gfc_free_array_spec): When freeing an array-spec, avoid - an ICE for assumed-shape coarrays. - -2019-06-08 Paul Thomas - - PR fortran/90786 - * trans-expr.c (pointer_assignment_is_proc_pointer) Remove as - it is very simple and only called from one place. - (gfc_trans_pointer_assignment): Rename non_proc_pointer_assign - as non_proc_ptr_assign. Assign to it directly, rather than call - to above, deleted function and use gfc_expr_attr instead of - only checking the reference chain. - -2019-06-08 Thomas Koenig - Tomáš Trnka - - PR fortran/90744 - * trans-types.c (get_formal_from_actual_arglist): Unset typespec - flags which make no sense for procedures without explicit - interface. - -2019-06-02 Thomas Koenig - - PR fortran/90539 - * trans-expr.c (gfc_conv_subref_array_arg): If the size of the - expression can be determined to be one, treat it as contiguous. - Set likelyhood of presence of an actual argument according to - PRED_FORTRAN_ABSENT_DUMMY and likelyhood of being contiguous - according to PRED_FORTRAN_CONTIGUOUS. - -2019-05-30 Thomas Koenig - - * gfc-internals.texi (Translating to GENERIC): New chapter. - -2019-05-30 Marek Polacek - - * lang.opt (ftail-call-workaround): Fix a typo. - -2019-05-30 Jakub Jelinek - - * lang.opt (ftail-call-workaround=): Fix a typo - lenghts to lengths. - -2019-05-29 Thomas Koenig - - PR fortran/90539 - * gfortran.h (gfc_has_dimen_vector_ref): Add prototype. - * trans.h (gfc_conv_subref_array_arg): Add argument check_contiguous. - (gfc_conv_is_contiguous_expr): Add prototype. - * frontend-passes.c (has_dimen_vector_ref): Remove prototype, - rename to - (gfc_has_dimen_vector_ref): New function name. - (matmul_temp_args): Use gfc_has_dimen_vector_ref. - (inline_matmul_assign): Likewise. - * trans-array.c (gfc_conv_array_parameter): Also check for absence - of a vector subscript before calling gfc_conv_subref_array_arg. - Pass additional argument to gfc_conv_subref_array_arg. - * trans-expr.c (gfc_conv_subref_array_arg): Add argument - check_contiguous. If that is true, check if the argument - is contiguous and do not repack in that case. - * trans-intrinsic.c (gfc_conv_intrinsic_is_contiguous): Split - away most of the work into, and call - (gfc_conv_intrinsic_is_coniguous_expr): New function. - -2019-05-29 Jakub Jelinek - - PR fortran/90329 - * lang.opt (fbroken-callers): Remove. - (ftail-call-workaround, ftail-call-workaround=): New options. - * gfortran.h (struct gfc_namespace): Add implicit_interface_calls. - * interface.c (gfc_procedure_use): Set implicit_interface_calls - for calls to implicit interface procedures. - * trans-decl.c (create_function_arglist): Use flag_tail_call_workaround - instead of flag_broken_callers. If it is not 2, also require - sym->ns->implicit_interface_calls. - * invoke.texi (fbroken-callers): Remove documentation. - (ftail-call-workaround, ftail-call-workaround=): Document. - -2019-05-26 Thomas Koenig - - PR fortran/90539 - * trans-types.c (get_formal_from_actual_arglist): Set rank - and lower bound for assumed size arguments. - -2019-05-22 Andrew Stubbs - - * trans-stmt.c (gfc_trans_critical): Use size_type_node for - gfor_fndecl_caf_lock and gfor_fndecl_caf_unlock calls. - (gfc_trans_allocate): Use size_type_node for gfor_fndecl_caf_sync_all - call. - -2019-05-22 Jeff Law - Mark Eggleston - - PR fortran/89100 - * gfortran.texi: Add Default widths for F, G and I format - descriptors to Extensions section. - * invoke.texi: Add -fdec-format-defaults - * io.c (check_format): Use default widths for i, f and g when - flag_dec_format_defaults is enabled. - * lang.opt: Add new option. - * options.c (set_dec_flags): Add SET_BITFLAG for - flag_dec_format_defaults. - -2019-05-21 Janne Blomqvist - - PR libfortran/90038 - * intrinsic.texi (EXECUTE_COMMAND_LINE): Explain new - wait=.false. implementation. - -2019-05-20 Mark Eggleston - - * gfortran.texi: Remove reference to the ASSIGN statement, capitalise - complex, state that padding is with spaces and modify the Hollerith - constant examples. - -2019-05-19 Paul Thomas - - PR fortran/90498 - * trans-stmt.c (trans_associate_var) Do not use the saved - descriptor if the expression is a COMPONENT_REF. - -2019-05-19 Thomas Koenig - - PR fortran/90329 - * invoke.texi: Document -fbroken-callers. - * lang.opt: Add -fbroken-callers. - * trans-decl.c (create_function_arglist): Only set - DECL_HIDDEN_STRING_LENGTH if flag_broken_callers is set. - -2019-05-17 Thomas Schwinge - - PR fortran/89433 - * f95-lang.c (gfc_attribute_table): Set min_len to -1 for "omp - declare target". - * trans-decl.c (add_attributes_to_decl): Refer to OpenACC - 'routine' clauses from "omp declare target" attribute. - -2019-05-16 Martin Sebor - - * gfortranspec.c (append_arg): Spell out the word "argument." - -2019-05-16 Jakub Jelinek - - PR fortran/90329 - * trans-decl.c (create_function_arglist): Set - DECL_HIDDEN_STRING_LENGTH on hidden string length PARM_DECLs if - len is constant. - -2019-05-15 Janne Blomqvist - - * parse.c (gfc_parse_file): Remove translation string markers. - -2019-05-12 Janne Blomqvist - - * dump-parse-tree.c (get_c_type_name): Use macros for complex type - names. - * parse.c (gfc_parse_file): Define complex macros, add CPP support - when printing C prototypes. - -2019-05-10 Thomas Koenig - - PR fortran/61968 - * interface.c (compare_actual_formal): Do not create a vtab if - the actual argument is assumed type. - -2019-05-10 Paul Thomas - - PR fortran/90093 - * trans-decl.c (convert_CFI_desc): Test that the dummy is - present before doing any of the conversions. - - PR fortran/90352 - * decl.c (gfc_verify_c_interop_param): Restore the error for - charlen > 1 actual arguments passed to bind(C) procs. - Clean up trailing white space. - - PR fortran/90355 - * trans-array.c (gfc_trans_create_temp_array): Set the 'span' - field to the element length for all types. - (gfc_conv_expr_descriptor): The force_no_tmp flag is used to - prevent temporary creation, especially for substrings. - * trans-decl.c (gfc_trans_deferred_vars): Rather than assert - that the backend decl for the string length is non-null, use it - as a condition before calling gfc_trans_vla_type_sizes. - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): 'force_no_tmp' - is set before calling gfc_conv_expr_descriptor. - * trans.c (get_array_span): Move the code for extracting 'span' - from gfc_build_array_ref to this function. This is specific to - descriptors that are component and indirect references. - * trans.h : Add the force_no_tmp flag bitfield to gfc_se. - -2019-05-08 Thomas Koenig - - PR fortran/90351 - PR fortran/90329 - * dump-parse-tree.c: Include version.h. - (gfc_dump_external_c_prototypes): New function. - (get_c_type_name): Select "char" as a name for a simple char. - Adjust to handling external functions. Also handle complex. - (write_decl): Add argument bind_c. Adjust for dumping of external - procedures. - (write_proc): Likewise. - (write_interop_decl): Add bind_c argument to call of write_proc. - * gfortran.h: Add prototype for gfc_dump_external_c_prototypes. - * lang.opt: Add -fc-prototypes-external flag. - * parse.c (gfc_parse_file): Move dumping of BIND(C) prototypes. - Call gfc_dump_external_c_prototypes if option is set. - * invoke.texi: Document -fc-prototypes-external. - -2019-05-06 Steven G. Kargl - - PR fortran/90290 - * match.c (gfc_match_stopcode): Check F2008 condition on stop code. - -2019-05-01 Andrew Benson - - * module.c (write_module): Initialize module_column before writing - module to ensure line break occurs at correct column. - -2019-05-01 Dominique d'Humieres - - PR fortran/60144 - * match.c (gfc_match_parens): Change the location for missing ')'. - (gfc_match_if): Detect a missing '('. Remove the spurious named - constant error. Change the wording of some errors. - (gfc_match_else): Change the wording of an error. - (gfc_match_elseif): Detect a missing '('. Improve the matching - process to get a better syntax analysis. - -2019-04-19 Steven G. Kargl - - PR fortran/90166 - * decl.c (in_module_or_interface): New function to check that the - current state is in a module, submodule, or interface. - (gfc_match_prefix): Use it. - -2019-04-22 Paul Thomas - - PR fortran/57284 - * resolve.c (find_array_spec): If this is a class expression - and the symbol and component array specs are the same, this is - not an error. - *trans-intrinsic.c (gfc_conv_intrinsic_size): If a class symbol - argument, has no namespace, it has come from the interface - mapping and the _data component must be accessed directly. - -2019-04-17 Thomas Schwinge - - PR fortran/90048 - * openmp.c (gfc_resolve_do_iterator): Handle sharing_clauses for - OpenACC, too. - (gfc_resolve_oacc_blocks): Populate sharing_clauses with private - clauses. - -2019-04-14 Paul Thomas - - PR fortran/89843 - * trans-decl.c (gfc_get_symbol_decl): Assumed shape and assumed - rank dummies of bind C procs require deferred initialization. - (convert_CFI_desc): New procedure to convert incoming CFI - descriptors to gfc types and back again. - (gfc_trans_deferred_vars): Call it. - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Null the CFI - descriptor pointer. Free the descriptor in all cases. - - PR fortran/89846 - * expr.c (is_CFI_desc): New function. - (is_subref_array): Tidy up by referencing the symbol directly. - * gfortran.h : Prototype for is_CFI_desc. - * trans_array.c (get_CFI_desc): New function. - (gfc_get_array_span, gfc_conv_scalarized_array_ref, - gfc_conv_array_ref): Use it. - * trans.c (get_array_span): Extract the span from descriptors - that are indirect references. - - PR fortran/90022 - * trans-decl.c (gfc_get_symbol_decl): Make sure that the se - expression is a pointer type before converting it to the symbol - backend_decl type. - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Eliminate - temporary creation for intent(in). - -2019-04-13 Dominique d'Humieres - - PR fortran/79842 - * module.c (gfc_use_module): use complete sentences. - -2019-04-11 Thomas Koenig - - PR translation/89939 - * frontend-passes.c (B_ERROR): Delete macro. - (C_ERROR): Delete macro. - (B_ERROR_1): New macro. - (C_ERROR_1): New macro. - (C_ERROR_2): New macro. - (inline_matmul_assign): Use new macros. - (call_external_blas): Likewise. - -2019-04-06 Thomas Koenig - - PR fortran/87352 - * gfortran.h (gfc_component): Add finalized field. - * class.c (finalize_component): If the component is already - finalized, return early. Set component->finalized on exit. - -2019-04-06 Thomas Koenig - - PR fortran/89981 - * resolve.c (resolve_global_procedure): If the global symbol is an - ENTRY, also look up its name among the entries. - -2019-04-04 Harald Anlauf - - PR fortran/89904 - * check.c (gfc_check_transfer): Reject procedures as actual - arguments for SOURCE and MOLD of TRANSFER intrinsic. - -2019-04-03 Steven G. Kargl - - PR fortran/68567 - * expr.c (gfc_reduce_init_expr): Add extra check to avoid - dereferencing a null pointer. - -2019-04-03 Dominique d'Humieres - - PR fortran/89375 - * expr.c (comp_pointer): Remove redundant condition. - -2019-03-31 Harald Anlauf - - PR fortran/83515 - PR fortran/85797 - * trans-types.c (gfc_typenode_for_spec): Handle conversion for - procedure pointers. - * target-memory.c (gfc_element_size): Handle size determination - for procedure pointers. - -2019-03-31 Thomas Koenig - - * dump-parse-tree.c (debug): Add for symbol_attribute *, - symbol_attribute and gfc_ref * arguments. - -2019-03-30 Paul Thomas - - PR fortran/89841 - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Use the formal - argument attributes rather than those of the actual argument. - - PR fortran/89842 - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Call - 'set_dtype_for_unallocated' for any type of arrayspec. - -2019-03-27 Janus Weil - - PR fortran/85537 - * expr.c (gfc_check_assign_symbol): Reject internal and dummy procedures - in procedure pointer initialization. - -2019-03-27 Paul Thomas - - PR fortran/88247 - * expr.c (is_subref_array): Permit substrings to be detected - as subref arrays. - * trans-array.c (get_array_ctor_var_strlen): Obtain the length - of deferred length strings. Handle substrings with a NULL end - expression. - (trans_array_constructor): Remove an unnecessary blank line. - (gfc_conv_scalarized_array_ref): Skip to label 'done' if 'decl' - is a pointer array. - (get_array_charlen): If the expression is an array, convert the - first element of the constructor and use its string length. Get - a new charlen if necessary. - (gfc_conv_expr_descriptor): Call 'get_array_charlen' for array - constructor expressions. If the ss_info string length is - available, use that to set the span of character arrays. - * trans-expr.c (gfc_get_expr_charlen): Handle substrings - * trans-stmt.c (trans_associate_var): Set the pointer array - flag for variable targets and constant array constructors. Take - care not to reset the string length or the span in the case of - expressions that are not converted as direct by reference. - -2019-03-25 Kyrylo Tkachov - - * intrinsic.texi (MINLOC): Fix typo in BACK argument documentation. - (MAXLOC): Likewise. - -2019-03-24 Thomas Koenig - - PR fortran/78865 - * interface.c (compare_actual_formal): Change errors about - missing or extra to gfc_error_now to make sure they are issued. - Change "spec" to "specifier" in message. - * resolve.c (resolve_global_procedure): Also check for mismatching - interface with global symbols if the namespace has already been - resolved. - -2019-03-21 Thomas Schwinge - - PR fortran/72741 - * openmp.c (gfc_match_oacc_routine): Set the level of parallelism - for all variants. - (gfc_resolve_oacc_routines): Call gfc_add_omp_declare_target. - - PR fortran/89773 - * gfortran.h (gfc_oacc_routine_name): Add loc member. - (gfc_resolve_oacc_routines): Declare. - * openmp.c (gfc_match_oacc_routine): Move some error checking - into... - (gfc_resolve_oacc_routines): ... this new function. - * resolve.c (resolve_codes): Call it. - - PR fortran/72741 - * openmp.c (gfc_match_oacc_routine): Clarify. - - PR fortran/72741 - * module.c (verify_OACC_ROUTINE_LOP_NONE): New function. - (enum ab_attribute): Add AB_OACC_ROUTINE_LOP_GANG, - AB_OACC_ROUTINE_LOP_WORKER, AB_OACC_ROUTINE_LOP_VECTOR, - AB_OACC_ROUTINE_LOP_SEQ. - (attr_bits): Add these. - (mio_symbol_attribute): Handle these. - -2019-03-20 Janus Weil - - PR fortran/71861 - * symbol.c (check_conflict): ABSTRACT attribute conflicts with - INTRINSIC attribute. - -2019-03-18 Thomas Koenig - - PR fortran/68009 - * iresolve.c: Include trans.h. - (gfc_resolve_fe_runtine_error): Set backend_decl on - resolved_sym. - -2019-03-17 Thomas Koenig - - PR fortran/88008 - * gfortran.h (expr_t): Add EXPR_UNKNOWN. - * expr.c (gfc_copy_expr): Add EXPR_UNKNOWN to switch statement. - (gfc_simplify_expr): Likewise. - * module.c (mio_expr): Likewise. - * resovle.c (extract_compcall_passed_object): Issue error on - unknown type. - (check_typebound_baseobject): Issue error on wrong type. - * trans-expr.c (gfc_apply_interface_mapping_to_expr): Add - EXPR_UNKNOWN to switch statement. - -2019-03-16 Jakub Jelinek - - PR fortran/89724 - * scanner.c (load_line): Remove linenum and current_line static - variables, add warned_tabs automatic variable. Use current_file->line - instead of current_line and warned_tabs boolean to avoid diagnosing - tabs multiple times on the same line. - -2019-03-16 Thomas Koenig - - PR fortran/84394 - * symbol.c (gfc_add_subroutine): If we are encountering a - subrtoutine within a BLOCK DATA and the name starts with an - underscore, do not check. - -2019-03-15 Harald Anlauf - - PR fortran/60091 - * expr.c (gfc_check_pointer_assign): Correct and improve error - messages for invalid pointer assignments. - -2019-03-14 Thomas Koenig - - * gfortran.texi: Document Q edit descriptor under - "Extensions not implemented in GNU Fortran". - -2019-03-13 Harald Anlauf - - PR fortran/87045 - * trans-expr.c (gfc_trans_pointer_assignment): Move check for same - string length so that we do not get false errors for deferred - length. - -2019-03-13 Janus Weil - - PR fortran/89601 - * decl.c (gfc_match_formal_arglist): Reject empty type parameter lists. - (gfc_match_derived_decl): Mark as PDT only if type parameter list was - matched successfully. - -2019-03-13 Thomas Koenig - - PR fortran/66695 - PR fortran/77746 - PR fortran/79485 - * gfortran.h (gfc_symbol): Add bind_c component. - (gfc_get_gsymbol): Add argument bind_c. - * decl.c (add_global_entry): Add bind_c argument to - gfc_get_symbol. - * parse.c (parse_block_data): Likewise. - (parse_module): Likewise. - (add_global_procedure): Likewise. - (add_global_program): Likewise. - * resolve.c (resolve_common_blocks): Likewise. - (resolve_global_procedure): Likewise. - (gfc_verify_binding_labels): Likewise. - * symbol.c (gfc_get_gsymbol): Add argument bind_c. Set bind_c - in gsym. - * trans-decl.c (gfc_get_module_backend_decl): Add bind_c argument - to gfc_get_symbol. - (gfc_get_extern_function_decl): If the sym has a binding label - and it cannot be found in the global symbol tabel, it is the wrong - one and vice versa. - -2019-03-12 Thomas Koenig - - PR fortran/87673 - * match.c (gfc_match_type_spec): Remove call to - gfc_resolve_expr for character length. - -2019-03-12 Martin Liska - - * decl.c (add_init_expr_to_sym): Replace usage of 'can't' - with 'cannot'. - (variable_decl): Likewise. - (cray_pointer_decl): Likewise. - (match_binding_attributes): Likewise. - * f95-lang.c (gfc_init): Likewise. - * interface.c (gfc_check_typebound_override): Likewise. - * intrinsic.c (make_generic): Likewise. - * module.c (dump_module): Likewise. - (gfc_use_module): Likewise. - * primary.c (gfc_convert_to_structure_constructor): Likewise. - * resolve.c (resolve_entries): Likewise. - (check_generic_tbp_ambiguity): Likewise. - (get_checked_tb_operator_target): Likewise. - * scanner.c (load_file): Likewise. - * trans-expr.c (gfc_conv_intrinsic_to_class): Likewise. - -2019-03-12 Paul Thomas - - PR fortran/89363 - PR fortran/89364 - * trans-expr.c (set_dtype_for_unallocated): New function. - (gfc_conv_gfc_desc_to_cfi_desc): Call it for allocatable and - pointer arguments. - (gfc_conv_procedure_call): Likewise. Also, set the ubound of - the final dimension to -1 for assumed rank formal args that are - associated with assumed size arrays. - * trans-intrinsic.c (gfc_conv_intrinsic_bound): Return -1 for - the final dimension of assumed rank entities that are argument - associated with assumed size arrays. - (gfc_conv_intrinsic_shape): Likewise return -1 for the final - dimension of the shape intrinsic. - -2019-03-11 Jakub Jelinek - - PR fortran/89651 - * trans-openmp.c (gfc_omp_clause_default_ctor): Set TREE_NO_WARNING - on decl if adding COND_EXPR for allocatable. - (gfc_omp_clause_copy_ctor): Set TREE_NO_WARNING on dest. - -2019-03-11 Martin Liska - - * decl.c (match_record_decl): Wrap an option name - in a string format message and fix GNU coding style. - (gfc_match_pointer): Likewise. - * expr.c (find_array_section): Likewise. - * intrinsic.c (gfc_is_intrinsic): Likewise. - * options.c (gfc_post_options): Likewise. - * primary.c (match_integer_constant): Likewise. - * trans-common.c (translate_common): Likewise. - -2019-03-10 Thomas Koenig - - PR fortran/66089 - * trans-array.c (gfc_scalar_elemental_arg_saved_as_reference): - Return false if a scalar tempoary is needed. - (gfc_walk_variable_expr): Fix up class refs. - -2019-03-10 Thomas Koenig - - PR fortran/87734 - * symbol.c (gfc_add_procedure): Only throw an error if the - procedure has not been declared either PUBLIC or PRIVATE. - -2019-03-09 Thomas Koenig - - PR fortran/71544 - * trans-types.c (gfc_typenode_for_spec) Set ts->is_c_interop of - C_PTR and C_FUNPTR. - (create_fn_spec): Mark argument as escaping if ts->is_c_interop is set. - -2019-03-09 Janus Weil - - PR fortran/84504 - * expr.c (gfc_check_assign_symbol): Deal with procedure pointers to - pointer-valued functions. - -2019-03-09 Thomas König - - PR fortran/71203 - * decl.c (add_init_expr_to_sym): Add shape if init has none. Add - asserts that it has to be an EXPR_ARRAY in this case. - -2019-03-08 Jakub Jelinek - - PR other/80058 - * arith.c (gfc_complex2complex): Avoid two spaces in the middle of - diagnostics. - * resolve.c (resolve_allocate_expr): Likewise. - -2019-03-06 Harald Anlauf - - PR fortran/71203 - * expr.c (simplify_const_ref): Avoid null pointer dereference. - -2019-03-03 Harald Anlauf - Steven G. Kargl - - PR fortran/77583 - * symbol.c (check_conflict): Check for valid procedure name - passed to error reporting routine. - -2019-03-03 Thomas Koenig - - PR fortran/72714 - * resolve.c (resolve_allocate_expr): Add some tests for coarrays. - -2019-03-02 Harald Anlauf - - PR fortran/89516 - * check.c (gfc_calculate_transfer_sizes): Correct checks for cases - where storage size of elements of MOLD is 0. - -2019-02-28 Thomas Schwinge - Cesar Philippidis - - PR fortran/72741 - PR fortran/89433 - * openmp.c (gfc_match_oacc_routine): Handle repeated use of the - Fortran OpenACC 'routine' directive. - - PR fortran/72741 - * gfortran.h (enum oacc_routine_lop): Add OACC_ROUTINE_LOP_ERROR. - * openmp.c (gfc_oacc_routine_lop, gfc_match_oacc_routine): Use it. - * trans-decl.c (add_attributes_to_decl): Likewise. - - PR fortran/72741 - PR fortran/89433 - * openmp.c (gfc_match_oacc_routine): Accept intrinsic symbols. - -2019-02-26 Harald Anlauf - - PR fortran/89492 - * check.c (gfc_calculate_transfer_sizes): Handle cases where - storage size of elements of MOLD is 0. - -2019-02-26 Thomas Koenig - - PR fortran/89496 - * trans-types.c (get_formal_from_actual_arglist): If - the actual arglist has no expression, the corresponding - formal arglist is an alternate return. - -2019-02-26 Uroš Bizjak - - * invoke.texi (-ffpe-trap): Use @var for every item in the list. - -2019-02-26 Jakub Jelinek - - PR fortran/43210 - * trans-array.c (gfc_conv_array_initializer): Use RANGE_EXPR instead - of duplicating the initializer possibly many times. - -2019-02-24 Thomas Koenig - - PR fortran/89174 - * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Add is_mold - to arguments. If we are dealing with a MOLD, call - gfc_expr_to_initialize(). - * trans-stmt.c (gfc_trans_allocate): For MOLD, pass is_mold=true - to gfc_find_and_cut_at_last_class_ref. - * trans.h (gfc_find_and_cut_at_last_class_ref): Add optional - argument is_mold with default false. - -2019-02-24 Harald Anlauf - - PR fortran/89266 - PR fortran/88326 - * target-memory.c (gfc_element_size): Return false if element size - cannot be determined; element size is returned separately. - (gfc_target_expr_size): Return false if expression size cannot be - determined; expression size is returned separately. - * target-memory.h: Adjust prototypes. - * check.c (gfc_calculate_transfer_sizes): Adjust references to - gfc_target_expr_size, gfc_element_size. - * arith.c (hollerith2representation): Likewise. - * class.c (find_intrinsic_vtab): Likewise. - * simplify.c (gfc_simplify_sizeof): Likewise. - -2019-02-23 Jerry DeLisle - - PR fortran/84387 - * trans-io.c (transfer_expr): Do not return if there are no - components to the derived type or class. - -2019-02-23 Paul Thomas - - PR fortran/88117 - * resolve.c (deferred_op_assign): Return if the lhs expression - has the pointer attribute. - * trans-expr.c (gfc_trans_assignment_1): Do not fix the string - length if the lhs expression has the pointer attribute. - -2019-02-23 Paul Thomas - - PR fortran/89385 - PR fortran/89366 - * decl.c (gfc_verify_c_interop_param): Restriction on string - length being one is lifted for F2018. - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): For scalar - characters with intent in, make a temporary and copy the result - of the expression evaluation into it. - (gfc_conv_procedure_call): Set a flag for character formal args - having a character length that is not unity. If the procedure - is bind C, call gfc_conv_gfc_desc_to_cfi_desc in this case. - Also, extend bind C calls to unconditionally convert both - pointers and allocatable expressions. - -2019-02-23 David Malcolm - Jakub Jelinek - - PR middle-end/88074 - * simplify.c (norm2_do_sqrt, gfc_simplify_norm2): Use - mpfr_number_p && !mpfr_zero_p instead of mpfr_regular_p. - (norm2_add_squared): Likewise. Use mp_exp_t rather than mpfr_exp_t. - -2019-02-22 Harald Anlauf - - PR fortran/83057 - * io.c (gfc_match_open): Fix logic in checks of OPEN statement - when NEWUNIT= is specified. - -2019-02-22 Steven G. Kargl - - PR fortran/89431 - * gfortran.texi: Fix documentation to match the implementation. - -2019-02-22 Thomas Schwinge - Cesar Philippidis - - PR fortran/72741 - * gfortran.h (oacc_routine_lop): New enum. - (symbol_attribute): Use it. - * openmp.c (gfc_oacc_routine_dims): Replace with... - (gfc_oacc_routine_lop): ... this new function. - (gfc_match_oacc_routine): Adjust. - * trans-decl.c (add_attributes_to_decl): Likewise. - -2019-02-22 Thomas Schwinge - - * openmp.c (gfc_match_oacc_declare): Revert earlier changes. - -2019-02-21 Thomas Koenig - - * dump-parse-tree.c (debug): Implement for gfc_expr *, - gfc_typespec *, gfc_typespec and gfc_symbol *. - -2019-02-21 Thomas Koenig - - PR fortran/86119 - * class.c (gfc_get_len_component): Add argument k for kind. - If the kind of the resulting expression is not equal to k, - convert it. - * gfortran.h (gfc_len_component): Adjust prototype. - * simplify.c (gfc_simplify_len): Pass kind to - gfc_get_len_component. - -2019-02-20 Martin Liska - - * gfortran.texi: Change singular to plural. - -2019-02-20 Martin Liska - - * gfortran.texi: Document Fortran header directive. - -2019-02-19 Thomas Koenig - - PR fortran/89384 - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): If the dummy - argument is contiguous and the actual argument may not be, - use gfc_conv_subref_array_arg. - -2019-02-19 Thomas Schwinge - - PR c/87924 - * openmp.c (gfc_match_omp_clauses): Add representation of wait clause - without argument as 'wait (GOMP_ASYNC_NOVAL)'. - -2019-02-18 Thomas Koenig - - PR fortran/87689 - * trans-decl.c (gfc_get_extern_function_decl): Add argument - actual_args and pass it through to gfc_get_function_type. - * trans-expr.c (conv_function_val): Add argument actual_args - and pass it on to gfc_get_extern_function_decl. - (conv_procedure_call): Pass actual arguments to conv_function_val. - * trans-types.c (get_formal_from_actual_arglist): New function. - (gfc_get_function_type): Add argument actual_args. Generate - formal args from actual args if necessary. - * trans-types.h (gfc_get_function_type): Add optional argument. - * trans.h (gfc_get_extern_function_decl): Add optional argument. - -2019-02-18 Martin Liska - - * decl.c (gfc_match_gcc_builtin): Add support for filtering - of builtin directive based on multilib ABI name. - -2019-02-17 Harald Anlauf - - PR fortran/88299 - * resolve.c (resolve_common_blocks,resolve_common_vars): Move - check for obsolent COMMON feature in F2018 to better place. - -2019-02-17 Harald Anlauf - - PR fortran/89077 - * decl.c (gfc_set_constant_character_len): Clear original string - representation after padding has been performed to target length. - -2019-02-16 Jakub Jelinek - - PR middle-end/88074 - * simplify.c (simplify_transformation_to_array): Run post_op - immediately after processing corresponding row, rather than at the - end. - (norm2_scale): New variable. - (add_squared): Rename to ... - (norm2_add_squared): ... this. Scale down operand and/or result - if needed. - (do_sqrt): Rename to ... - (norm2_do_sqrt): ... this. Handle the result == e case. Scale up - result and clear norm2_scale. - (gfc_simplify_norm2): Clear norm2_scale. Change add_squared to - norm2_add_squared and &do_sqrt to norm2_do_sqrt. Scale up result - and clear norm2_scale again. - -2019-02-17 Thomas Koenig - - PR fortran/71066 - * trans-decl.c (generate_coarray_sym_init): For an array - constructor in a DATA statement of a coarray variable, set the - rank to 1 to avoid confusion later on. If the constructor - contains only one value, use that for initiailizig. - -2019-02-14 Janne Blomqvist - - PR fortran/81552 - * gfortran.h (gfc_option_t): Make flag_init_integer_value a long. - * options.c (gfc_handle_option): Use strtol instead of atoi. - * invoke.texi: Document -finit-integer behavior in more detail. - -2019-02-14 Harald Anlauf - - PR fortran/88248 - * symbol.c: Move check for labeled DO statement from - gfc_define_st_label to gfc_reference_st_label. - -2019-02-14 Cesar Philippidis - - PR fortran/72715 - * openmp.c (resolve_oacc_nested_loops): Error on do concurrent - loops. - -2019-02-13 Martin Liska - - PR fortran/88649 - * resolve.c (resolve_operator): Initialize 't' right - after function entry. Skip switch (e->value.op.op) - for -fdec operands that become function calls. - -2019-02-10 Thomas Koenig - - PR fortran/71723 - * expr.c (gfc_check_assign): Add argument is_init_expr. If we are - looking at an init expression, issue error if the target is not a - TARGET and we are not looking at a procedure pointer. - * gfortran.h (gfc_check_assign): Add optional argument - is_init_expr. - -2019-02-09 Harald Anlauf - - PR fortran/89077 - * resolve.c (gfc_resolve_substring_charlen): Check substring - length for constantness prior to general calculation of length. - -2019-02-09 Paul Thomas - - PR fortran/89200 - * trans-array.c (gfc_trans_create_temp_array): Set the 'span' - field for derived types. - -2019-02-04 Harald Anlauf - - PR fortran/89077 - * decl.c (add_init_expr_to_sym): Copy length of string initializer - to declared symbol. - -2019-02-04 Martin Liska - - PR fortran/89185 - * resolve.c (resolve_ref): Remove breakout variable as - we need to prevent prev = &(*prev)->next to happen - with *prev == NULL. - -2019-02-04 Martin Liska - - PR fortran/88912 - * scanner.c (load_file): Report error for -fpre-include - file and do not ICE. - -2019-02-02 Dominique d'Humieres - - PR fortran/81344 - * invoke.texi: Document the behavior of repeated -ffpe-trap - and -ffpe-summary. - -2019-02-02 Thomas Koenig - - PR fortran/88298 - * arith.c (gfc_int2int): Do not warn if src->do_not_warn is set. - * gfortran.h (gfc_expr): Add flag do_not_warn. - * intrinsic.c (gfc_convert_type_warn): Set expr->do_not_warn if - no warning is desired. - -2019-02-02 Paul Thomas - - PR fortran/88393 - * trans-expr.c (gfc_conv_procedure_call): For derived entities, - passed in parentheses to class formals, invert the order of - copying allocatable components to taking the _data of the - class expression. - -2019-02-02 Paul Thomas - - PR fortran/88980 - * trans-array.c (gfc_array_init_size): Add element_size to the - arguments. - (gfc_array_allocate): Remove the recalculation of the size of - the element and use element_size from the call to the above. - Unconditionally set the span field of the descriptor. - -2019-02-02 Paul Thomas - - PR fortran/88685 - * expr.c (is_subref_array): Move the check for class pointer - dummy arrays to after the reference check. If we haven't seen - an array reference other than an element and a component is not - class or derived, return false. - -2019-02-01 Jakub Jelinek - - PR fortran/83246 - PR fortran/89084 - * trans-decl.c (generate_local_decl): Add referenced FL_PARAMETERs - if sym->ns->construct_entities rather than if - sym->ns->parent->code->op == EXEC_BLOCK. - -2019-01-31 Thomas Koenig - - PR fortran/88669 - * resolve.c (resolve_component): If the reference is a BT_CLASS, - copy the contiguous attribute from the reference and use the - correct attributes. - -2019-01-30 Jerry DeLisle - - PR fortran/52564 - * io.c (match_io): Add check for comma after '*' without subsequent - IO list. - -2019-01-30 Dominique d'Humieres - - PR fortran/52884 - * invoke.texi: Document the promotion of double precision - constants. - -2019-01-29 Thomas Koenig - - PR fortran/57048 - * interface.c (gfc_compare_types): If a derived type and an - integer both have a derived type, and they are identical, - this is a C binding type and compares equal. - -2019-01-26 Harald Anlauf - - PR fortran/57553 - * expr.c (check_inquiry): Add list of inquiry functions allowed in - constant expressions for F2008+. - -2019-01-25 Steven G. Kargl - - PR fortran/85780 - * decl.c (gfc_match_subroutine): Check for conflict between BIND(C) - and alternative return. - -2019-01-24 Paul Thomas - - PR fortran/88929 - * trans-array.c (gfc_conv_descriptor_elem_len): New function. - * trans-array.h : Add prototype for above. - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Take account of - assumed rank arrays being flagged by rank = -1 in expressions. - Intent in arrays need a pointer to a copy of the data to be - assigned to the descriptor passed for conversion. This should - then be freed, together with the CFI descriptor on return from - the C call. - -2019-01-22 Harald Anlauf - - PR fortran/88579 - * trans-expr.c (gfc_conv_power_op): Handle cases of (2**e) ** integer - and (- 2**e) ** integer. - -2019-01-19 Dominique d'Humieres - - PR fortran/37835 - * resolve.c (resolve_types): Add !flag_automatic. - * symbol.c (gfc_add_save): Silence warnings. - -2019-01-19 Steven G. Kargl - - PR fortran/77960 - * io.c (match_io_element): input-item cannot be an external function. - -2018-01-19 Thomas Koenig - Paul Thomas - - PR fortran/56789 - * trans-expr.c (gfc_conv_procedure_call): Call - gfc_conv_subref_array_arg if the formal arg is contiguous - and the actual arg may not be. - -2019-01-17 Thomas Koenig - - PR fortran/88871 - * resolve.c (resolve_ref): Fix logic for removal of - reference. - -2019-01-19 Jakub Jelinek - - PR fortran/88902 - * trans-decl.c (gfc_get_symbol_decl): Don't add length to function - or parent function if it has been added there already. - -2019-01-15 Thomas Koenig - - PR fortran/43136 - * resolve.c (resolve_array_ref): Add equal_length argument; set it - if the length of the substring equals that of the orignal - variable. - (resolve_ref): Remove the substring if it is equal in length to - the original variable, unless it is an EXPR_SUBSTRING). - -2019-01-15 Steven G. Kargl - - PR fortran/81849 - * resolve.c (resolve_symbol): Host associated varaibles can appear - in the specification statement of a RESULT array. - -2019-01-15 Paul Thomas - - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Deal with exprs - that are indirect references; ie. dummy arguments. - -2019-01-13 Dominique d'Humieres - - PR fortran/88803 - * gfortran.texi: Replace @xref with @ref and adjust the sentence. - -2019-01-13 Thomas Koenig - - PR fortran/57992 - * trans-array.c (gfc_conv_array_parameter): Do not pack/unpack - functions with contiguous results. - -2019-01-13 Thomas Koenig - - PR fortran/59345 - * trans-array.c (gfc_conv_array_parameter): Remove TODO. Do not - pack/unpack results of functions which return an explicit-shaped - or allocatable array. - -2019-01-12 Steven G. Kargl - - PR fortran/61765 - * resolve.c (gfc_verify_binding_labels): Break if-elseif-elseif - structure into independent if's with a return to simplify logic. - Avoid a check for ENTRY name with bind(c). - -2019-01-12 Paul Thomas - - * gfortran.texi: Add description in sections on TS 29113 and - further interoperability with C. - * trans-array.c (gfc_conv_descriptor_attribute): New function. - (gfc_get_dataptr_offset): Remove static function attribute. - * trans-array.h: Add prototypes for above functions. - * trans-decl.c: Add declarations for the library functions - cfi_desc_to_gfc_desc and gfc_desc_to_cfi_desc. - * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): New function. - (gfc_conv_procedure_call): Call it for scalar and array actual - arguments, when the formal arguments are bind_c with assumed - shape or assumed rank. - * trans.h: External declarations for gfor_fndecl_cfi_to_gfc - and gfor_fndecl_gfc_to_cfi. - -2019-01-11 Steven G. Kargl - - PR fortran/35031 - * decl.c (gfc_match_entry): Check for F2018:C1546. Fix nearby - mis-indentation. - -2019-01-11 Jakub Jelinek - - PR middle-end/85956 - PR lto/88733 - * trans-openmp.c: Include attribs.h. - (gfc_walk_alloc_comps, gfc_omp_clause_linear_ctor): Handle - VAR_DECL max bound with "omp dummy var" attribute like NULL or - error_mark_node - recompute number of elts independently. - -2019-01-11 Thomas Koenig - - PR fortran/59345 - * trans-array.c (gfc_conv_parameter_array): Temporary - arrays generated for expressions do not need to be repacked. - -2019-01-10 Steven G. Kargl - - PR fortran/86322 - * decl.c (top_var_list): Set locus of expr. - (gfc_match_data): Detect pointer on non-rightmost part-refs. - -2019-01-09 Steven G. Kargl - - PR fortran/88376 - * resolve.c (is_illegal_recursion): Remove an assert(). - -2019-01-09 Sandra Loosemore - - PR other/16615 - * expr.c: Change "can not" to "cannot". - -2019-01-09 Sandra Loosemore - - PR other/16615 - * class.c: Mechanically replace "can not" with "cannot". - * decl.c: Likewise. - * expr.c: Likewise. - * gfc-internals.texi: Likewise. - * intrinsic.texi: Likewise. - * invoke.texi: Likewise. - * io.c: Likewise. - * match.c: Likewise. - * parse.c: Likewise. - * primary.c: Likewise. - * resolve.c: Likewise. - * symbol.c: Likewise. - * trans-array.c: Likewise. - * trans-decl.c: Likewise. - * trans-intrinsic.c: Likewise. - * trans-stmt.c: Likewise. - -2019-01-09 Thomas Koenig - - PR fortran/68426 - * simplify.c (gfc_simplify_spread): Also simplify if the - type of source is an EXPR_STRUCTURE. - -2019-01-08 Janus Weil - - PR fortran/88047 - * class.c (gfc_find_vtab): For polymorphic typespecs, the components of - the class container may not be available (in case of invalid code). - -2019-01-08 Richard Biener - - PR fortran/88611 - * trans-expr.c (gfc_conv_initializer): For ISOCBINDING_NULL_* - directly build the expected GENERIC tree. - -2019-01-07 Thomas Koenig - Harald Anlauf - Tobias Burnus - - PR fortran/45424 - * check.c (gfc_check_is_contiguous): New function. - * expr.c (gfc_is_not_contiguous): New function. - * gfortran.h (gfc_isym_id): Add GFC_ISYM_IS_CONTIGUOUS. - Add prototype for gfc_is_not_contiguous. - * intrinsic.c (do_ts29113_check): Add GFC_ISYM_IS_CONTIGUOUS. - (add_function): Add is_contiguous. - * intrinsic.h: Add prototypes for gfc_check_is_contiguous, - gfc_simplify_is_contiguous and gfc_resolve_is_contiguous. - * intrinsic.texi: Add IS_CONTIGUOUS. - * iresolve.c (gfc_resolve_is_contiguous): New function. - * simplify.c (gfc_simplify_is_contiguous): New function. - * trans-decl.c (gfor_fncecl_is_contiguous0): New variable. - (gfc_build_intrinsic_function_decl): Add it. - * trans-intrinsic.c (gfc_conv_intrinsic_is_contiguous): New - function. - (gfc_conv_intrinsic_function): Handle GFC_ISYM_IS_CONTIGUOUS. - -2019-01-06 Thomas Koenig - - PR fortran/88658 - * gfortran.h: Add macro gfc_real_4_kind - * simplify.c (simplify_min_max): Special case for the types of - AMAX0, AMIN0, MAX1 and MIN1, which actually change the types of - their arguments. - -2019-01-05 Janus Weil - - PR fortran/88009 - * class.c (gfc_find_derived_vtab): Mark the _final component as - artificial. - (find_intrinsic_vtab): Ditto. Also add an extra check to avoid - dereferencing a null pointer and adjust indentation. - * resolve.c (resolve_fl_variable): Add extra check to avoid - dereferencing a null pointer. Move variable declarations to local scope. - (resolve_fl_procedure): Add extra check to avoid dereferencing a null - pointer. - * symbol.c (check_conflict): Suppress errors for artificial symbols. - -2019-01-01 Steven G. Kargl - - * parse.c (decode_statement): Suppress "Unclassifiable statement" - error if previous error messages were emittes. - -2019-01-01 Thomas Koenig - - PR fortran/82743 - * primary.c (gfc_convert_to_structure_constructor): If a character - in a constructor is too long, add a warning with - -Wcharacter-truncation. - -2019-01-01 Jakub Jelinek - - Update copyright years. +2020-01-01 Jakub Jelinek * gfortranspec.c (lang_specific_driver): Update copyright notice dates. @@ -3125,7 +7,7 @@ * intrinsic.texi: Ditto. * invoke.texi: Ditto. -Copyright (C) 2019 Free Software Foundation, Inc. +Copyright (C) 2020 Free Software Foundation, Inc. Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright diff --git a/gcc/fortran/ChangeLog-2019 b/gcc/fortran/ChangeLog-2019 new file mode 100644 index 00000000000..1fcfd920c53 --- /dev/null +++ b/gcc/fortran/ChangeLog-2019 @@ -0,0 +1,3132 @@ +2019-12-30 Thomas Koenig + + PR fortran/91651 + * intrinsic.c (add_sym_4ind): New function. + (add_functions): Use it for INDEX. + (resolve_intrinsic): Also call f1m for INDEX. + * intrinsic.h (gfc_resolve_index_func): Adjust prototype to + take a gfc_arglist instead of individual arguments. + * iresolve.c (gfc_resolve_index_func): Adjust arguments. + Remove KIND argument if present, and make sure this is + not done twice. + * trans-decl.c: Include "intrinsic.h". + (gfc_get_extern_function_decl): Special case for resolving INDEX. + +2019-12-30 Thomas Koenig + + PR fortran/92961 + * gfortran.h (gfc_seen_div0): Add declaration. + * arith.h (gfc_seen_div0): Add definition. + (eval_intrinsic): For integer division by zero, set gfc_seen_div0. + * decl.c (variable_decl): If resolution resp. simplification + fails for array spec and a division of zero error has been + seen, return MATCH_ERROR. + +2019-12-21 Harald Anlauf + + PR fortran/92990 + * match.c (gfc_match_nullify): Check for valid pointer object. + Reject bounds remapping. + +2019-12-21  Paul Thomas   + + PR fortran/92753 + * expr.c (find_inquiry_ref): Catch INQUIRY_LEN case, where the + temporary expression has been converted to a constant and make + the new expression accordingly. Correct the error in INQUIRY_RE + and INQUIRY_IM cases. The original rather than the resolved + expression was being used as the source in mpfr_set. + +2019-12-20 Jakub Jelinek + + PR middle-end/91512 + PR fortran/92738 + * lang.opt (-finline-arg-packing): Add trailing dot to help text. + +2019-12-20 Thomas Koenig + + PR middle-end/91512 + PR fortran/92738 + * invoke.texi: Document -finline-arg-packing. + * lang.opt: Add -finline-arg-packing. + * options.c (gfc_post_options): Handle -finline-arg-packing. + * trans-array.c (gfc_conv_array_parameter): Use + flag_inline_arg_packing instead of checking for optimize and + optimize_size. + +2019-12-20 Tobias Burnus + + PR fortran/92996 + * expr.c (simplify_parameter_variable): Call gfc_resolve_ref and + gfc_expression_rank; fix location info. + * gfortran.h (gfc_resolve_ref, gfc_expression_rank): Declare. + * match.c (gfc_match_stopcode): Remove redundant setting of + gfc_init_expr_flag; early return if gfc_simplify_expr has an error. + * resolve.c (gfc_expression_rank): Renamed from expression_rank; + minor cleanup. + (gfc_resolve_ref): Removed static and renamed from resolve_ref. + (resolve_variable, resolve_typebound_function, + resolve_typebound_subroutine, resolve_ppc_call, resolve_expr_ppc, + gfc_resolve_expr, resolve_procedure): Update calls. + +2019-12-20 Tobias Burnus + + * openmp.c (resolve_omp_clauses): Move is-coindexed check from here ... + (gfc_match_omp_variable_list): ... to here. + +2019-12-19 Julian Brown + + * openmp.c (resolve_oacc_data_clauses): Don't disallow allocatable + polymorphic types for OpenACC. + * trans-openmp.c (gfc_trans_omp_clauses): Support polymorphic class + types. + +2019-12-19 Julian Brown + + * gfortran.h (gfc_omp_map_op): Add OMP_MAP_ATTACH, OMP_MAP_DETACH. + * openmp.c (gfc_match_omp_variable_list): Add allow_derived parameter. + Parse derived-type member accesses if true. + (omp_mask2): Add OMP_CLAUSE_ATTACH and OMP_CLAUSE_DETACH. + (gfc_match_omp_map_clause): Add allow_derived parameter. Pass to + gfc_match_omp_variable_list. + (gfc_match_omp_clauses): Support attach and detach. Support derived + types for appropriate OpenACC directives. + (OACC_PARALLEL_CLAUSES, OACC_SERIAL_CLAUSES, OACC_KERNELS_CLAUSES, + OACC_DATA_CLAUSES, OACC_ENTER_DATA_CLAUSES): Add OMP_CLAUSE_ATTACH. + (OACC_EXIT_DATA_CLAUSES): Add OMP_CLAUSE_DETACH. + (check_symbol_not_pointer): Don't disallow pointer objects of derived + type. + (resolve_oacc_data_clauses): Don't disallow allocatable derived types. + (resolve_omp_clauses): Perform duplicate checking only for non-derived + type component accesses (plain variables and arrays or array sections). + Support component refs. + * trans-expr.c (gfc_conv_component_ref, + conv_parent_component_references): Make global. + (gfc_maybe_dereference_var): New function, broken out of... + (gfc_conv_variable): ...here. Call above function. + * trans-openmp.c (gfc_omp_privatize_by_reference): Support component + refs. + (gfc_trans_omp_array_section): New function, broken out of... + (gfc_trans_omp_clauses): ...here. Support component refs/derived + types, attach and detach clauses. + * trans.h (gfc_conv_component_ref, conv_parent_component_references, + gfc_maybe_dereference_var): Add prototypes. + +2019-12-19 Mark Eggleston + + PR fortran/92896 + * array.c (walk_array_constructor): Replace call to gfc_convert_type + with call to gfc_convert_type_warn with new argument set to true. + (check_element_type): Replace call to cfg_convert_type with call to + gfc_convert_type_warn with new argument set to true. + * gfortran.h: Add argument "array" to gfc_convert_type_warn default + value set to false. + *intrinsic.c (gfc_convert_type_warn): Update description of arguments. + Add new argument to argument list. Add check for conversion to numeric + or logical from character and array set to true, i.e. if conversion + from character is in an array constructor reject it, goto bad. + +2019-12-19 Jakub Jelinek + + PR fortran/92977 + * frontend-passes.c (call_external_blas): Use || instead of |. + +2019-12-19 Jakub Jelinek + + PR fortran/92977 + * frontend-passes.c (in_omp_atomic): New variable. + (cfe_expr_0, matmul_to_var_expr, matmul_temp_args, + inline_matmul_assign, call_external_blas): Don't optimize in + EXEC_OMP_ATOMIC. + (optimize_namespace): Clear in_omp_atomic. + (gfc_code_walker): Set in_omp_atomic for EXEC_OMP_ATOMIC, save/restore + it around. + +2019-12-19 Julian Brown + Maciej W. Rozycki + Tobias Burnus + Thomas Schwinge + + * gfortran.h (gfc_omp_map_op): Add OMP_MAP_NO_ALLOC. + * openmp.c (omp_mask2): Add OMP_CLAUSE_NO_CREATE. + (gfc_match_omp_clauses): Support no_create. + (OACC_PARALLEL_CLAUSES, OACC_KERNELS_CLAUSES) + (OACC_DATA_CLAUSES): Add OMP_CLAUSE_NO_CREATE. + * trans-openmp.c (gfc_trans_omp_clauses_1): Support + OMP_MAP_NO_ALLOC. + +2019-12-18 Harald Anlauf + + PR fortran/70853 + * trans-expr.c (gfc_trans_pointer_assignment): Reject bounds + remapping if pointer target is NULL(). + +2019-12-12 Harald Anlauf + + PR fortran/92898 + * check.c (gfc_check_is_contiguous): Simplify check to handle + arbitrary NULL() argument. + +2019-12-11 Jakub Jelinek + + PR fortran/92899 + * trans-openmp.c (gfc_trans_omp_atomic): For GFC_OMP_ATOMIC_SWAP, + do look through conversion on expr2 if any. + +2019-12-11 Steven G. Kargl + + PR fortran/92897 + * array.c (gfc_set_array_spec): Remove invalid assert() triggered + by invalid Fortran code. + +2019-12-10 Thomas Koenig + + PR fortran/91643 + * trans-array.c (gfc_conv_array_parameter): Do not repack + an assumed rank dummy argument. + +2019-12-10 Martin Liska + + PR fortran/92874 + * dependency.c (gfc_dep_compare_expr): Bail out + when one of the arguments is null. + +2019-12-10 Thomas Koenig + + PR fortran/92863 + * misc.c (gfc_typename): If derived component is NULL for + derived or class, return "invalid type" or "invalid class", + respectively. + +2019-12-10 Tobias Burnus + + PR fortran/92872 + * trans-array.c (get_CFI_desc): Fix cond whether saved desc exists. + +2019-12-09 David Malcolm + + * error.c (gfc_diagnostic_starter): Add pp_newline call before + call to diagnostic_show_locus. + +2019-12-09 Frederik Harwath + + * trans-openmp.c (gfc_trans_omp_reduction_list): Pass correct location for each + clause to build_omp_clause. + +2018-12-08 Thomas Koenig + + PR fortran/92780 + * resolve.c (resolve_assoc_var): Issue error if the associating + entity is a program. + +2018-12-08 Thomas Koenig + + PR fortran/92764 + * interface.c (gfc_procedure_use): Check for existence of derived + component before using (twice). + +2019-12-08 Thomas Koenig + + PR fortran/92755 + * dependency.c (gfc_dep_resolver): Move skipping of _data ref + into the loop. + +2019-12-07 Tobias Burnus + + PR fortran/92793 + * trans.c (gfc_get_location): Declare. + * trans.c (gfc_get_location): Define; returns column-corrected location. + (trans_runtime_error_vararg, gfc_trans_runtime_check, + gfc_generate_module_code): Use new function. + * trans-array.c (gfc_trans_auto_array_allocation): Likewise. + * trans-common.c (build_field, get_init_field, create_common): Likewise. + * trans-decl.c (gfc_build_label_decl, gfc_get_symbol_decl): Likewise. + * trans-openmp.c (gfc_trans_omp_reduction_list, gfc_trans_omp_clauses): + Likewise. + * trans-stmt.c (gfc_trans_if_1): Likewise. + +2019-12-06 Jakub Jelinek + + PR fortran/92775 + * trans.h (struct lang_type, struct lang_decl): Remove span member. + (GFC_DECL_SPAN, GFC_TYPE_ARRAY_SPAN): Remove macros. + * trans-array.h (gfc_get_descriptor_offsets_for_info): Add another + argument. + * trans-array.c (gfc_get_descriptor_offsets_for_info): Add SPAN_OFF + argument and initialize *SPAN_OFF to the offset of span field. + * trans-types.c (gfc_get_array_descr_info): Adjust + gfc_get_descriptor_offsets_for_info caller. Compute elem_size + as base->span instead of TYPE_SIZE_UNIT (etype) constant. + +2019-12-06 Tobias Burnus + Kwok Cheung Yeung + + * trans-openmp.c (gfc_build_conditional_assign, + gfc_build_conditional_assign_expr): New static functions. + (gfc_omp_finish_clause, gfc_trans_omp_clauses): Handle mapping of + absent optional arguments and fix mapping of present optional args. + +2019-12-05 Tobias Burnus + + * trans-openmp.c (gfc_omp_is_optional_argument, + gfc_omp_check_optional_argument): Handle type(c_ptr),value which uses a + +2019-12-05 Jakub Jelinek + + PR fortran/92781 + * trans-decl.c (gfc_get_symbol_decl): If sym->backend_decl is + current_function_decl, add length to current rather than parent + function and expect DECL_CONTEXT (length) to be current_function_decl. + +2019-12-04 Tobias Burnus + + PR fortran/92754 + * intrinsic.c (gfc_intrinsic_func_interface): Set + sym's flavor, intrinsic and function attribute if + unset. + +2019-12-04 Jakub Jelinek + + PR fortran/92756 + * trans-openmp.c (gfc_trans_omp_teams): Wrap OMP_TEAMS body into a + BIND_EXPR with a forced BLOCK. + +2019-11-30 Thomas Koenig + + PR fortran/91783 + * dependency.c (gfc_dep_resolver): Do not look at _data + component if present. + +2019-11-28 Jerry DeLisle + + PR fortran/90374 + * io.c (check_format): Allow zero width expoenent with e0. + +2019-11-27 Jakub Jelinek + + PR fortran/91944 + * simplify.c (gfc_simplify_spread): Check gfc_init_expr_flag instead + of gfc_current_ns->sym_root->n.sym->attr.flavor == FL_PARAMETER. + +2019-11-27 Tobias Burnus + + PR middle-end/92463 + * arith.c (gfc_check_real_range): Replace mp_exp_t by mpfr_exp_t. + +2019-11-25 Harald Anlauf + + PR fortran/92629 + * simplify.c (convert_mpz_to_unsigned): Skip assert for argument + range when -fno-range-check is specified. + +2019-11-25 Mark Eggleston + Jim MacArthur + + * gfortran.texi: Update Hollerith constants support for character types + and use in comparisons. + * invoke.texi: Tidy up list of options. Update description of + -fdec-char-conversions. + * resolve.c (is_character_based): New. + (Convert_hollerith_to_character): New. (convert_to_numeric): New. + (resolve_operator): If both sides are character based and -fdec is + enabled convert Hollerith to character. If an operand is Hollerith, the + other is numeric and -fdec is enabled convert to numeric. + (resolve_ordinary_assign): Add check for -fdec-char-conversions for + assignment of character literals.2019-11-20 Janne Blomqvist + + PR fortran/92463 + Revert r269139 + * simplify.c (norm2_do_sqrt, gfc_simplify_norm2): Use + mpfr_regular_p instead of mpfr_number_p && !mpfr_zero_p. + (norm2_add_squared): Likewise. Use mpfr_exp_t rather than + mp_exp_t. + +2019-11-20 Janne Blomqvist + + PR fortran/92463 + * arith.c (gfc_mpfr_to_mpz): Change mp_exp_t to mpfr_exp_t. + (gfc_check_real_range): Likewise. + * gfortran.h (GFC_RND_MODE): Change GMP_RNDN to MPFR_RNDN. + * module.c (mio_gmp_real): Change mp_exp_t to mpfr_exp_t. + * simplify.c (degrees_f): Change mp_rnd_t to mpfr_rnd_t. + (radians_f): Likewise. + (fullprec_erfc_scaled): Change mp_prec_t to mpfr_prec_t. + (asympt_erfc_scaled): Likewise. + (gfc_simplify_nearest): Change mp_exp_t to mpfr_exp_t, and + GMP_RND* to MPFR_RND*. + +2019-11-15 Paul Thomas + + PR fortran/69654 + * trans-expr.c (gfc_trans_structure_assign): Move assignment to + 'cm' after treatment of C pointer types and test that the type + has been completely built before it. Add an assert that the + backend_decl for each component exists. + +2019-11-13 Tobias Burnus + + * trans-expr.c (gfc_conv_procedure_call): Fold hidden + is-present argument to the right type. + +2019-11-12 Harald Anlauf + + PR fortran/81651 + * module.c (gzopen_included_file, gzopen_included_file_1) + (gzopen_intrinsic_module, bad_module, gfc_use_module): Use fully + qualified module path for error reporting. + +2019-11-12 Martin Liska + + * options.c (gfc_init_options): + Use SET_OPTION_IF_UNSET. + +2019-11-12 Maciej W. Rozycki + Frederik Harwath + + gcc/fortran/ + * gfortran.h (gfc_statement): Add ST_OACC_SERIAL_LOOP, + ST_OACC_END_SERIAL_LOOP, ST_OACC_SERIAL and ST_OACC_END_SERIAL + enumeration constants. + (gfc_exec_op): Add EXEC_OACC_SERIAL_LOOP and EXEC_OACC_SERIAL + enumeration constants. + * match.h (gfc_match_oacc_serial): New prototype. + (gfc_match_oacc_serial_loop): Likewise. + * dump-parse-tree.c (show_omp_node, show_code_node): Handle + EXEC_OACC_SERIAL_LOOP and EXEC_OACC_SERIAL. + * match.c (match_exit_cycle): Handle EXEC_OACC_SERIAL_LOOP. + * openmp.c (OACC_SERIAL_CLAUSES): New macro. + (gfc_match_oacc_serial_loop): New function. + (gfc_match_oacc_serial): Likewise. + (oacc_is_loop): Handle EXEC_OACC_SERIAL_LOOP. + (resolve_omp_clauses): Handle EXEC_OACC_SERIAL. + (oacc_code_to_statement): Handle EXEC_OACC_SERIAL and + EXEC_OACC_SERIAL_LOOP. + (gfc_resolve_oacc_directive): Likewise. + * parse.c (decode_oacc_directive) <'s'>: Add case for "serial" + and "serial loop". + (next_statement): Handle ST_OACC_SERIAL_LOOP and ST_OACC_SERIAL. + (gfc_ascii_statement): Likewise. Handle ST_OACC_END_SERIAL_LOOP + and ST_OACC_END_SERIAL. + (parse_oacc_structured_block): Handle ST_OACC_SERIAL. + (parse_oacc_loop): Handle ST_OACC_SERIAL_LOOP and + ST_OACC_END_SERIAL_LOOP. + (parse_executable): Handle ST_OACC_SERIAL_LOOP and + ST_OACC_SERIAL. + (is_oacc): Handle EXEC_OACC_SERIAL_LOOP and EXEC_OACC_SERIAL. + * resolve.c (gfc_resolve_blocks, gfc_resolve_code): Likewise. + * st.c (gfc_free_statement): Likewise. + * trans-openmp.c (gfc_trans_oacc_construct): Handle + EXEC_OACC_SERIAL. + (gfc_trans_oacc_combined_directive): Handle + EXEC_OACC_SERIAL_LOOP. + (gfc_trans_oacc_directive): Handle EXEC_OACC_SERIAL_LOOP and + EXEC_OACC_SERIAL. + * trans.c (trans_code): Likewise. + +2019-11-11 Janne Blomqvist + + PR fortran/91828 + * simplify.c (gfc_simplify_fraction): Remove fallback path for + MPFR < 3.1.0. + +2019-11-11 Tobias Burnus + Kwok Cheung Yeung + + * trans-expr.c (gfc_conv_expr_present): Check for DECL_ARTIFICIAL + for the VALUE hidden argument avoiding -fallow-underscore issues. + * trans-decl.c (create_function_arglist): Also set + GFC_DECL_OPTIONAL_ARGUMENT for per-value arguments. + * f95-lang.c (LANG_HOOKS_OMP_CHECK_OPTIONAL_ARGUMENT): + Renamed from LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT; point + to gfc_omp_check_optional_argument. + * trans.h (gfc_omp_check_optional_argument): Subsitutes + gfc_omp_is_optional_argument declaration. + * trans-openmp.c (gfc_omp_is_optional_argument): Make static. + (gfc_omp_check_optional_argument): New function. + +2019-11-10 Janne Blomqvist + + PR fortran/91413 + * trans-decl.c (gfc_finish_var_decl): Don't print warning when + -fno-automatic is enabled. + +2019-11-10 Paul Thomas + + PR fortran/92123 + *decl.c (gfc_verify_c_interop_param): Remove error asserting + that pointer or allocatable variables in a bind C procedure are + not supported. Delete some trailing spaces. + * trans-stmt.c (trans_associate_var): Correct the attempt to + treat scalar pointer or allocatable temporaries as if they are + array descriptors. + +2019-11-09 Thomas Koenig + + PR fortran/92321 + * frontend-passes.c (call_external_blas): Commit symbol for + external BLAS routine. + +2019-11-08 Jakub Jelinek + + * arith.c (character2representation): Change i type to size_t. + +2019-11-08 Mark Eggleston + Jim MacArthur + + * arith.c (hollerith2representation): Use OPT_Wcharacter_truncation in + call to gfc_warning. + (character2representation, gfc_character2int, gfc_character2real, + gfc_character2complex and gfc_character2logical): New. + * arith.h (gfc_character2int, gfc_character2real, gfc_character2complex, + gfc_character2logical): Declare. + * expr.c (gfc_check_assign): Return true if left hand side is numeric + or logical and the right hand side is character and of kind=1. + * gfortran.texi: Add -fdec-char-conversions. + * intrinsic.c (add_conversions): Add conversions from character to + integer, real, complex and logical types for their supported kinds. + (gfc_convert_type_warn): Reorder if..else if.. sequence so that warnings + are produced for conversion to logical. + * invoke.texi: Add option to list of options. + * invoke.texi: Add Character conversion subsection to Extensions + section. + * lang.opt: Add new option. + * options.c (set_dec_flags): Add SET_BITFLAG for + flag_dec_char_conversions. + * resolve.c (resolve_ordindary_assign): Issue error if the left hand + side is numeric or logical and the right hand side is a character + variable. + * simplify.c (gfc_convert_constant): Assign the conversion function + depending on destination type. + * trans-const.c (gfc_constant_to_tree): Use OPT_Wsurprising in + gfc_warning allowing the warning to be switched off only if + flag_dec_char_conversions is enabled. + +2019-11-08 Tobias Burnus + + PR fortran/90374 + * io.c (check_format): Allow zero width for D, E, EN, and ES + specifiers as default and when -std=F2018 is given. Retain + existing errors when using the -fdec family of flags. + +2019-11-03 Thomas Koenig + + PR fortran/92113 + * trans-decl.c (gfc_get_symbol_decl): If __def_init actually + contains a value, put it into the read-only section. + +2019-11-01 Steven G. Kargl + + * decl.c (match_byte_typespec): New function. Match BYTE type-spec. + (gfc_match_decl_type_spec): Use it. + +2019-11-01 Steven G. Kargl + + PR fortran/90988 + * decl.c (gfc_match_private, gfc_match_public): Fixed-form source code + does not require whitespace between PRIVATE (or PUBLIC) and an entity. + +2019-11-01 Tobias Burnus + + * f95-lang.c (LANG_HOOKS_OMP_ARRAY_DATA): Set to gfc_omp_array_data. + * trans-array.c (gfc_conv_descriptor_data_get): Handle also + REFERENCE_TYPE. + * trans-openmp.c (gfc_omp_array_data): New. + * trans.h (gfc_omp_array_data): New prototype. + +2019-10-31 Tobias Burnus + + PR fortran/92284. + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Free CFI descriptor + at the end; partial revised revert of Rev. 277502. + +2019-10-31 Tobias Burnus + + PR fortran/92277 + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Fix DECL_ARTIFICIAL + checking. + +2019-10-30 Tobias Burnus + + PR fortran/92208 + * trans-array.c (gfc_conv_array_parameter): Only copy + string-length backend_decl if expression is not a function. + +2019-10-30 Mark Eggleston + + * invoke.texi: Add -Wno-overwrite-recursive to list of options. Add + description of -Wno-overwrite-recursive. Fix typo in description + of -Winteger-division. + * lang.opt: Add option -Woverwrite-recursive initialised as on. + * option.c (gfc_post_options): Output warning only if it is enabled. + +2019-10-28 Tobias Burnus + + PR fortran/91863 + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Don't free data + memory as that's done on the Fortran side. + (gfc_conv_procedure_call): Handle void* pointers from + gfc_conv_gfc_desc_to_cfi_desc. + +2019-10-27 Paul Thomas + + PR fortran/86248 + * resolve.c (flag_fn_result_spec): Correct a typo before the + function declaration. + * trans-decl.c (gfc_sym_identifier): Boost the length of 'name' + to allow for all variants. Simplify the code by using a pointer + to the symbol's proc_name and taking the return out of each of + the conditional branches. Allow symbols with fn_result_spec set + that do not come from a procedure namespace and have a module + name to go through the non-fn_result_spec branch. + +2019-10-25 Cesar Philippidis + Tobias Burnus + + * openmp.c (gfc_match_omp_map_clause): Add and pass allow_commons + argument. + (gfc_match_omp_clauses): Update calls to permit common blocks for + OpenACC's copy/copyin/copyout, create/delete, host, + pcopy/pcopy_in/pcopy_out, present_or_copy, present_or_copy_in, + present_or_copy_out, present_or_create and self. + +2019-10-24 Martin Liska + + PR fortran/92174 + * array.c (gfc_resolve_array_spec): Break the loop + for out of bounds index. + * resolve.c (is_non_constant_shape_array): Likewise. + +2019-10-23 Steven G. Kargl + + dump-parse-tree.c (show_expr): Add dumping of BT_BOZ constants. + +2019-10-22 Steven G. Kargl + + PR fortran/92174 + * decl.c (attr_decl1): Move check for F2018:C822 from here ... + * array.c (gfc_set_array_spec): ... to here. + +2019-10-18 Steven G. Kargl + + PR fortran/69455 + * trans-decl.c (generate_local_decl): Avoid misconstructed + intrinsic modules in a BLOCK construct. + +2019-10-18 Tobias Burnus + + PR fortran/91586 + * class.c (gfc_find_derived_vtab): Return NULL + instead of deref'ing NULL pointer. + +2019-10-15 James Norris + Tobias Burnus + + PR fortran/65438 + * openmp.c (check_array_not_assumed): Remove pointer check. + +2019-10-14 Steven G. Kargl + + PR fortran/89943 + decl.c (gfc_match_function_decl): Ignore duplicate BIND(C) for function + declaration in submodule. Implement at check for F2018 C1550. + (gfc_match_entry): Use temporary for locus, which allows removal of + one gfc_error_now(). + (gfc_match_subroutine): Ignore duplicate BIND(C) for subroutine + declaration in submodule. Implement at check for F2018 C1550. + +2019-10-14 Thomas Koenig + + PR fortran/92004 + * array.c (expand_constructor): Set from_constructor on + expression. + * gfortran.h (gfc_symbol): Add maybe_array. + (gfc_expr): Add from_constructor. + * interface.c (maybe_dummy_array_arg): New function. + (compare_parameter): If the formal argument is generated from a + call, check the conditions where an array element could be + passed to an array. Adjust error message for assumed-shape + or pointer array. Use correct language for assumed shaped arrays. + (gfc_get_formal_from_actual_arglist): Set maybe_array on the + symbol if the actual argument is an array element fulfilling + the conditions of 15.5.2.4. + +2019-10-14 Tobias Burnus + + * error.c: Remove debug pragma added in previous commit. + +2019-10-14 Tobias Burnus + + PR fortran/92072 + * error.c (error_print, gfc_format_decoder): Fix %C column- + offset handling. + +2019-10-13 Damian Rouson + + PR fortran/91513 + * resolve.c (resolve_ordinary_assign): Improved error message. + +2019-10-13 Steven G. Kargl + + PR fortran/90297 + * resolve.c (resolve_typebound_function): Remove code with no + functional effect. + +2019-10-13 Thomas Koenig + + PR fortran/92017 + * expr.c (simplify_parameter_variable): Set the character length + of the result expression from the original expression if + necessary. + +2019-10-11 Steven G. Kargl + + PR fortran/91649 + check.c (gfc_check_findloc): Additional checking for valid arguments + +2019-10-11 Steven G. Kargl + + PR fortran/91715 + * decl.c (gfc_match_prefix): If matching a type-spec returns an error, + it's an error so re-act correctly. + +2019-10-11 Steven G. Kargl + + PR fortran/92018 + * check.c (reset_boz): New function. + (illegal_boz_arg, boz_args_check, gfc_check_complex, gfc_check_float, + gfc_check_transfer): Use it. + (gfc_check_dshift): Use reset_boz, and re-arrange the checking to + help suppress possible run-on errors. + (gfc_check_and): Restore checks for valid argument types. Use + reset_boz, and re-arrange the checking to help suppress possible + run-on errors. + * resolve.c (resolve_function): Actual arguments cannot be BOZ in + a function reference. + +2019-10-11 Steven G. Kargl + + PR fortran/92019 + * array.c (match_subscript): BOZ cannot be an array subscript. + +2019-10-11 Tobias Burnus + + PR fortran/92050 + * trans-expr.c (gfc_conv_procedure_call): Handle code generated + by -fcheck=all. + +2019-10-11 Tobias Burnus + + * f95-lang.c (LANG_HOOKS_OMP_IS_ALLOCATABLE_OR_PTR): Re-define to + gfc_omp_is_allocatable_or_ptr. + * trans-decl.c (create_function_arglist): Set GFC_DECL_OPTIONAL_ARGUMENT + only if not passed by value. + * trans-openmp.c (gfc_omp_is_allocatable_or_ptr): New. + (gfc_trans_omp_clauses): For MAP, handle (present) optional arguments; + for target update, handle allocatable/pointer scalars. + * trans.h (gfc_omp_is_allocatable_or_ptr): Declare. + +2019-10-10 Tobias Burnus + + * trans-openmp.c (gfc_trans_omp_clauses): Actually pass use_device_addr + on to the middle end. + +2019-10-08 Steven G. Kargl + + PR fortran/91801 + * simplify.c (gfc_simplify_reshape): Convert a gcc_assert into a + gfc_error as a user can easily hit the condition. + +2019-10-08 Tobias Burnus + + * parse.c (parse_executable): Add missing ST_OMP_TARGET_SIMD. + +2019-10-08 Tobias Burnus + + * match.h (gfc_match_omp_eos_error): Renamed from gfc_match_omp_eos. + * openmp.c (gfc_match_omp_eos): Make static. + (gfc_match_omp_eos_error): New. + * parse.c (matchs, matchdo, matchds): Do as done for 'matcho' - + if error occurred after OpenMP/OpenACC directive matched, do not + try other directives. + (decode_oacc_directive, decode_omp_directive): Call new function + instead. + +2019-10-05 Steven G. Kargl + + PR fortran/47045 + * decl.c (variable_decl): Do not search parent namespace for symbol. + +2019-10-05 Paul Thomas + + PR fortran/91926 + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Correct the + assignment of the attribute field to account correctly for an + assumed shape dummy. Assign separately to the gfc and cfi + descriptors since the atribute can be different. Add btanch to + correctly handle missing optional dummies. + +2019-10-04 Steven G. Kargl + + PR fortran.91959 + * fortran/decl.c (variable_decl): Re-arrange code for matching %FILL. + +2019-10-04 Tobias Burnus + + * error.c (error_print, gfc_format_decoder): Fix off-by one issue + with %C. + +2019-10-03 Steven G. Kargl + + PR fortran/91497 + * simplify.c (gfc_simplify_dble, simplify_intconv, gfc_simplify_real, + gfc_simplify_sngl): Disable -Wconversion and -Wconversion-extra + warnings for explicit conversion of literal constants. + +2019-10-03 Bernd Edlinger + + * primary.c (match_real_constant): Remove shadowing local vars. + Rename local vars. Fix undefined behavior in loop termination. + (gfc_convert_to_structure_constructor): Rename local var. + +2019-10-03 Thomas Koenig + + PR fortran/84487 + * trans-decl.c (gfc_get_symbol_decl): For __def_init, set + DECL_ARTIFICAL and do not set TREE_READONLY. + +2019-10-03 Mark Eggleston + + * array.c (check_element_type): Call gfc_typename with the gfc_expr + "expr" instead of its gfc_typespec "ts". + * check.c (gfc_check_co_reduce): Call gfc_typename with the gfc_expr + "a" instead of its gfc_typespec "ts". + (gfc_check_co_reduce): Call gfc_typename with the gfc_expr "a" instead + of its gfc_typespec "ts". + (gfc_check_eoshift): Call gfc_typename with the gfc_expr "array" + instead of its gfc_typespec ts. + (gfc_check_same_type_as): In two calls to gfc_typename use "a" and "b" + of type gfc_expr instead of the "ts" fields of "a" and "b" + * decl.c (variable_decl): Call gfc_typename with the gfc_expr + "initializer" instead of its gfc_typespec "ts". + * expr.c (gfc_check_assign): Use "rvalue" and "lvalue" of type gfc_expr + in calls to gfc_typename instead of their "ts" fields of type + gfc_typespec. + (gfc_check_pointer_assign): Use "rvalue" and "lvalue" of type gfc_expr + in calls to gfc_typename instead of their "ts" fields of type + gfc_typespec. + * gfortran.h: Add prototypes for gfc_dummy_typename and a new function + gfc_typename for gfc_expr *. + *interface.c (gfc_check_dummy_characteristics): Use gfc_dummy_typename + for the dummy variable. + (compare_parameter): Use gfc_dummy_typename for the formal argument. + Use "actual" of type gfc_expr in call to gfc_typename for the actual + argument. + * intrinsic.c (check_arglist): Use gfc_dummy_typename for the formal + argument. Use expressions of type gfc_expr from the argument list to + call gfc_typename. + (gfc_convert_type_warn): New local variable "is_char_constant" set if + the expression type is a character constant. At the "bad" label + determine source type name by calling gfc_typename with either "expr" + for character constants or "from_ts" and use that in the warning + messages instead of the original call to gfc_typename. + * misc.c (gfc_typename): New function for gfc_expr *, use for where + character types are possible it can get the character length from + gfc_expr for character literals. + (gfc_dummy_typename): New functionfor gfc_typespec *, if no character + length is present the character type is assumed and the appropriate + string is return otherwise it calls gfc_typename for gfc_typespec *. + (gfc_typespec): for character types construct the type name with length + and kind (if it is not default kind). + +2019-10-02 Steven G. Kargl + + PR fortran/91784 + * simplify.c (gfc_convert_constant): Simplify expression if the + expression type is EXPR_OP. + +2019-10-02 Steven G. Kargl + + PR fortran/91785 + * primary.c (gfc_match_varspec): Ensure an inquiry parameter has + it locus set. + +2019-10-02 Steven G. Kargl + + PR fortran/91942 + * io.c (match_vtag): Check for non-NULL result->symtree. + (match_out_tag): Check for invalid constant due to inquiry parameter. + (match_filepos): Instead of a syntax error, go to cleanup to get better + error messages. + +2019-10-02 Steven G. Kargl + + PR fortran/91943 + * match.c (gfc_match_call): BOZ cannot be an actual argument in + a subroutine reference. + * resolve.c (resolve_function): BOZ cannot be an actual argument in + a function reference. + +2019-10-01 Jan Hubicka + + * module.c (load_commons): Initialize flags to 0 to silence + -Wmaybe-uninitialized warning. + (read_module): Likewise for n and comp_name. + +2019-10-02 Tobias Burnus + + * dump-parse-tree.c (show_omp_clauses): Handle OMP_LIST_USE_DEVICE_ADDR. + * gfortran.h (enum): Add OMP_LIST_USE_DEVICE_ADDR. + * openmp.c (omp_mask1): Likewise. + (gfc_match_omp_clauses): Match 'use_device_addr'. + (OMP_TARGET_DATA_CLAUSES): Add OMP_LIST_USE_DEVICE_ADDR. + (resolve_omp_clauses): Add it; add is_device_ptr checks. + +2019-10-02 Tobias Burnus + + * openmp.c (gfc_match_omp_clauses): Show a clause-parsing + error if none was rised before. + * parse.c (matcha, matcho): If error occurred after + OpenMP/OpenACC directive matched, do not try other directives. + +2019-10-02 Tobias Burnus + + * trans-openmp.c (gfc_omp_is_optional_argument): Fix coding + style. + +2019-10-02 Kwok Cheung Yeung + + * f95-lang.c (LANG_HOOKS_OMP_IS_OPTIONAL_ARGUMENT): Define to + gfc_omp_is_optional_argument. + * trans-decl.c (create_function_arglist): Set + GFC_DECL_OPTIONAL_ARGUMENT in the generated decl if the parameter is + optional. + * trans-openmp.c (gfc_omp_is_optional_argument): New. + (gfc_omp_privatize_by_reference): Return true if the decl is an + optional pass-by-reference argument. + * trans.h (gfc_omp_is_optional_argument): New declaration. + (lang_decl): Add new optional_arg field. + (GFC_DECL_OPTIONAL_ARGUMENT): New macro. + +2019-10-01 David Malcolm + + * error.c (gfc_diagnostic_starter): Clear the prefix before + calling diagnostic_show_locus. + +2019-09-29 Steven G. Kargl + + PR fortran/91641 + * check.c (gfc_check_is_contiguous): null() cannot be an actual + argument to is_contiguous(). + +2019-09-29 Steven G. Kargl + + PR fortran/91714 + * decl.c (gfc_match_decl_type_spec): Issue errors for a few + mangled types. + +2019-09-29 Paul Thomas + + PR fortran/91726 + * resolve.c (gfc_expr_to_initialize): Bail out with a copy of + the original expression if the array ref is a scalar and the + array_spec has corank. + * trans-array.c (gfc_conv_array_ref): Such expressions are OK + even if the array ref codimen is zero. + * trans-expr.c (gfc_get_class_from_expr): New function taken + from gfc_get_vptr_from_expr. + (gfc_get_vptr_from_expr): Call new function. + * trans-stmt.c (trans_associate_var): If one of these is a + target expression, extract the class expression from the target + and copy its fields to a new target variable. + * trans.h : Add prototype for gfc_get_class_from_expr. + +2019-09-28 Jerry DeLisle + + PR fortran/91802 + * decl.c (attr_decl1): Return MATCH_ERROR without free to avoid + bad expression type in free_expr0() ICE in rank+corank check. + +2019-09-28 Steven G. Kargl + + PR fortran/91802 + * decl.c (attr_decl1): Check if rank+corank > 15. + +2019-09-28 Steven G. Kargl + + PR fortran/91864 + * gcc/fortran/io.c (match_io_element): An inquiry parameter cannot be + read into. + * gcc/fortran/match.c (gfc_match_allocate): An inquiry parameter + can be neither an allocate-object nor stat variable. + (gfc_match_deallocate): An inquiry parameter cannot be deallocated. + +2019-09-26 Alessandro Fanfarillo + + * trans-array.c (structure_alloc_comps): + Add new enum item for BCAST_ALLOC_COMP. + New argument for structure_alloc_comp, and new case to handle + recursive components in derived types. + * trans-array.c (gfc_bcast_alloc_comp): New function + used to handleco_broadcast for allocatable components + of derived types. + * trans-array.h: Add gfc_bcast_alloc_comp + * trans-intrinsics.c (conv_co_collective): Add check for + derived type variable and invocation of co_bcast_alloc_comp. + * trans.h: New data structure gfc_co_subroutines_args. + +2019-09-25 David Malcolm + + PR fortran/91426 + * error.c (curr_diagnostic): New static variable. + (gfc_report_diagnostic): New static function. + (gfc_warning): Replace call to diagnostic_report_diagnostic with + call to gfc_report_diagnostic. + (gfc_format_decoder): Colorize the text of %L and %C to match the + colorization used by diagnostic_show_locus. + (gfc_warning_now_at): Replace call to diagnostic_report_diagnostic with + call to gfc_report_diagnostic. + (gfc_warning_now): Likewise. + (gfc_warning_internal): Likewise. + (gfc_error_now): Likewise. + (gfc_fatal_error): Likewise. + (gfc_error_opt): Likewise. + (gfc_internal_error): Likewise. + +2019-09-23 Paul Thomas + + PR fortran/91729 + * match.c (gfc_match_select_rank): Initialise 'as' to NULL. + Check for a symtree in the selector expression before trying to + assign a value to 'as'. Revert to gfc_error and go to cleanup + after setting a MATCH_ERROR. + +2019-09-20 Tobias Burnus + + PR fortran/78260 + * openmp.c (gfc_resolve_oacc_declare): Reject all + non variables but accept function result variables. + * trans-openmp.c (gfc_trans_omp_clauses): Handle + function-result variables for remaing cases. + +2019-09-17 Paul Thomas + + PR fortran/91588 + * expr.c (check_inquiry): Remove extended component refs by + using symbol pointers. If a function argument is an associate + variable with a constant target, copy the target expression in + place of the argument expression. Check that the charlen is not + NULL before using the string length. + (gfc_check_assign): Remove extraneous space. + +2019-09-15 Steven G. Kargl + + PR fortran/91727 + * resolve.c (conformable_arrays): If array-spec is NULL, then + allocate-object is a scalar. a conformability check only occurs + for an array source-expr. + +2019-09-15 Thomas Koenig + + PR fortran/91550 + * frontend-passes.c (do_subscript): If step equals + zero, a previuos error has been reported; do nothing + in this case. + * resolve.c (gfc_resolve_iterator): Move error checking + after type conversion. + +2019-09-14 Thomas Koenig + + PR fortran/91557 + PR fortran/91556 + * frontend-passes.c (check_externals_procedure): Reformat argument + list. Use gfc_compare_actual_formal instead of gfc_procedure_use. + * gfortran.h (gfc_symbol): Add flag error. + * interface.c (gfc_compare_interfaces): Reformat. + (argument_rank_mismatch): Add where_formal argument. If it is + present, note that the error is between different calls. + (compare_parameter): Change warnings that previously dependended + on -Wargument-mismatch to unconditional. Issue an error / warning + on type mismatch only once. Pass where_formal to + argument_rank_mismatch for artificial variables. + (compare_actual_formal): Change warnings that previously + dependeded on -Wargument-mismatch to unconditional. + (gfc_check_typebound_override): Likewise. + (gfc_get_formal_from_actual_arglist): Set declared_at for + artificial symbol. + * invoke.texi: Extend description of -fallow-argument-mismatch. + Delete -Wargument-mismatch. + * lang.opt: Change -Wargument-mismatch to do-nothing option. + * resolve.c (resolve_structure_cons): Change warnings that + previously depended on -Wargument-mismatch to unconditional. + * trans-decl.c (generate_local_decl): Do not warn if the symbol is + artificial. + +2019-09-13 Steven G. Kargl + + PR fortran/91566 + * simplify.c (gfc_simplify_merge): Need to simplify expression + after insertation of parenthesis. + +2019-09-13 Bernd Edlinger + + PR fortran/91716 + * trans-array.c (gfc_conv_array_initializer): Always assign the + array type of the field to the string constant. + +2019-09-13 Paul Thomas + + PR fortran/91717 + * dependency.c (gfc_dep_resolver): Flag identical components + and exit with return value 1 if set and no array refs. + +2019-09-11 Steven G. Kargl + + PR fortran/91553 + * simplify.c (gfc_convert_constant): During conversion check if the + constant is enclosed in parenthesis, and simplify expression. + +2019-09-11 Steven G. Kargl + + PR fortran/91642 + * io.c (gfc_match_inquire): null() cannot be in an iolength inquire + list. + +2019-09-05 Harald Anlauf + + PR fortran/91496 + * parse.c (parse_executable): Improve error messages for + improperly placed pragmas not preceeding a loop. + +2019-09-05 Steven G. Kargl + + PR fortran/91660 + * decl.c (gfc_match_decl_type_spec): Improve and restore error + message for malformed types-spec. + +2019-09-04 Steven G. Kargl + + PR fortran/91650 + * io.c (match_io_element): An output IO list item cannot be a BOZ. + +2019-09-03 Steven G. Kargl + + * gfortran.texi: Update documentation to catch up with BOZ changes. + * invoke.texi: Fix English from previous BOZ changes commit. + +2019-09-02 Paul Thomas + + PR fortran/91589 + * primary.c (gfc_match_varspec): Return MATCH_NO on an apparent + component ref, when the primary type is intrinsic. + +2019-09-02 Steven G. Kargl + + PR fortran/91552 + * array.c (walk_array_constructor): New function. + (gfc_match_array_constructor): Use it. + +2019-09-01 Paul Thomas + + * array.c (spec_dimen_size): Check for the presence of + expressions for the bounds. + * decl.c (gfc_match_end): Add case COMP_SELECT_RANK. + * dump-parse-tree.c(show_symbol): Show the arrayspec of class + entities. + (show_code_node): Show the code for SELECT_RANK. + * expr.c (gfc_check_vardef_context): Omit the context of + variable definition for select rank associate names since the + ASSUMED RANK throws. + * gfortran.h : Add ST_SELECT_RANK and ST_RANK to enum + gfc_statement. Add select_rank_temporary to symbol attribute + structure. Add EXEC_SELECT_RANK to enum gfc_exec_op. + * match.c (match_exit_cycle): Add COMP_SELECT_RANK. + (copy_ts_from_selector_to_associate): Add as special case for + assumed rank class variables. + (select_intrinsic_set_tmp): Clean up the code by using symbols + for references to the temporary and the selector. + (select_type_set_tmp): Ditto. + (select_rank_set_tmp): New function. + (gfc_match_select_rank): New function. + (gfc_match_rank_is): New function. + * match.h : Add prototypes for gfc_match_select_rank and + gfc_match_rank_is. + * parse.c (decode_statement): Attempt to match select_rank and + rank statements. + (next_statement, gfc_ascii_statement): Add ST_SELECT_RANK. + (parse_select_rank_block): New function. + (parse_executable): Parse select rank block for ST_SELECT_RANK. + * parse.h : Add COMP_SELECT_RANK to enum gfc_compile_state. + * resolve.c (resolve_variable): Exclude select_rank_temporaries + from the check on use of ASSUMED RANK. + (gfc_resolve_expr): Make sure that unlimited polymorphic select + rank temporaries expressions are not resolved again after being + successfully resolved. + (resolve_assoc_var): Do not do the rank check for select rank + temporaries. + (resolve_select_rank): New function. + (gfc_resolve_blocks): Deal with case EXEC_SELECT_RANK. + (resolve_symbol): Exclude select rank temporaries for check on + use of ASSUMED RANK. + * st.c (gfc_free_statement): Include EXEC_SELECT_RANK. + * trans-array.c (gfc_conv_array_ref): Select rank temporaries + may have dimen == 0. + (gfc_conv_expr_descriptor): Zero the offset of select rank + temporaries. + * trans-stmt.c (copy_descriptor): New function. + (trans_associate_var): Add code to associate select rank temps. + (gfc_trans_select_rank_cases): New function. + (gfc_trans_select_rank): New function. + * trans-stmt.h : Add prototype for gfc_trans_select_rank. + trans.c (trans_code): Add select rank case. + +2019-08-30 Steven G. Kargl + + PR fortran/91587 + * io.c (match_filepos): MATCH_ERROR should branch to a syntax error. + +2019-08-28 Steven G. Kargl + + PR fortran/91551 + * intrinsic.c (sort_actual): ALLOCATED has one argument. Check for + no argument case. + +2019-08-28 Steven G. Kargl + + PR fortran/91565 + * simplify.c (gfc_simplify_reshape): Add additional checks of the + ORDER dummy argument. + +2019-08-28 Steven G. Kargl + + PR fortran/91564 + * check.c (gfc_check_kill_sub): Additional checks on status dummy + argument. + +2019-08-28 Mark Eggleston + + * intrinsics.text: Corrected stated standard for intrinsics + and specific intrinsics where necessary. Also in C_SIZEOF the + printed value is T not .TRUE.. In IPARITY example wrap BOZ + constants in calls to INT. + +2019-08-27 Harald Anlauf + + PR fortran/91496 + * gfortran.h: Extend struct gfc_iterator for loop annotations. + * array.c (gfc_copy_iterator): Copy loop annotations by IVDEP, + VECTOR, and NOVECTOR pragmas. + * decl.c (gfc_match_gcc_ivdep, gfc_match_gcc_vector) + (gfc_match_gcc_novector): New matcher functions handling IVDEP, + VECTOR, and NOVECTOR pragmas. + * match.h: Declare prototypes of matcher functions handling IVDEP, + VECTOR, and NOVECTOR pragmas. + * parse.c (decode_gcc_attribute, parse_do_block) + (parse_executable): Decode IVDEP, VECTOR, and NOVECTOR pragmas; + emit warning for unrecognized pragmas instead of error. + * trans-stmt.c (gfc_trans_simple_do, gfc_trans_do): Add code to + emit annotations for IVDEP, VECTOR, and NOVECTOR pragmas. + * gfortran.texi: Document IVDEP, VECTOR, and NOVECTOR pragmas. + +2019-08-27 Mark Eggleston + + * invoke.texi: Ensure that the option lists fit within the + margins of a PDF page. Re-worded description of + '-ffrontend-loop-interchange' so that it fits with the margins + of a PDF page. Add '-fdec-include', '-fdec-blank-format-item' + and '-fdec-format-defaults' to list of options that are enabled + by '-fdec'. + +2019-08-26 Thomas Koenig + + PR fortran/91390 + PR fortran/91473 + * frontend-passes.c (gfc_check_externals): Make + gfc_errors_to_warnings conditional on -fallow-argument-mismatch. + * invoke.texi: Document -fallow-argument-mismatch. + * lang.opt: Add -fallow-argument-mismatch. + +2019-08-24 Thomas Koenig + + PR fortran/91390 + PR fortran/91519 + * frontend-passes.c (check_externals_procedure): New + function. If a procedure is not in the translation unit, create + an "interface" for it, including its formal arguments. + (check_externals_code): Use check_externals_procedure for common + code with check_externals_expr. + (check_externals_expr): Vice versa. + * gfortran.h (gfc_get_formal_from_actual-arglist): New prototype. + (gfc_compare_actual_formal): New prototype. + * interface.c (compare_actual_formal): Rename to + (gfc_compare_actual_formal): New function, make global. + (gfc_get_formal_from_actual_arglist): Make global, and move here from + * trans-types.c (get_formal_from_actual_arglist): Remove here. + (gfc_get_function_type): Use gfc_get_formal_from_actual_arglist. + +2019-08-23 Mark Eggleston + + * intrinsics.text: References in 'See also:' are now on + separate lines to ensure that they always fit in the margins of + a PDF page. The column widths of tables have been adjusted + where necessary to prevent overlapping text. All program + examples now fit within the margins of a PDF page. + +2019-08-23 Jakub Jelinek + + PR middle-end/91283 + * options.c (gfc_post_options): Set flag_excess_precision instead of + flag_excess_precision_cmdline. Remove comment. + +2019-08-23 Mark Eggleston + + * intrinsics.text: Removed empty sections. The order of + sections for each intrinsic is now consistent throughout. + Stray words removed. Text in the wrong section moved. + Missing standard statement inserted. + +2019-08-23 Mark Eggleston + + * intrinsics.text: Correct the return types for ZABS and CDABS. + +2019-08-22 Steven G. Kargl + + * intrinsic.c (add_subroutines): ERRMSG is INTENT(INOUT) in + co_broadcast, co_max, co_min, co_reduce, and co_sum. + +2019-08-20 Mark Eggleston + + PR fortran/89236 + * intrinsic.texi: Add GNU extension notes to DIM, MOD, MODULO. + +2019-08-19 Mark Eggleston + + * gfortran.texi: Delete paragraph about integer overload errors + when initialising integer variables with BOZ constants as these + no longer occur. + +2019-08-18 Steven G. Kargl + + PR fortran/91485 + module.c (gfc_match_use): User defined operator cannot conflict with + a rename symbol. + +2019-08-17 Steven G. Kargl + + PR fortran/82992 + * module.c (gfc_match_use): When renaming a module entity, search + current namespace for conflicting symbol. + +2019-08-17 Steven G. Kargl + + PR fortran/78739 + * match.c (gfc_match_st_function): When matching a statement function, + need to check if the statement function name shadows the function + name. + +2019-08-17 Steven G. Kargl + + PR fortran/78719 + * decl.c (get_proc_name): Check for a CLASS entity when trying to + add attributes to an entity that already has an explicit interface. + +2019-08-17 Steven G. Kargl + + PR fortran/91471 + * primary.c (gfc_variable_attr): Remove a gfc_internal_error(), + which cannot be reached by conforming Fortran code, but seems to + be reachable from nonconforming Fortran code. Treat the AR_UNKNOWN + case as a no-op. + +2019-08-17 Janne Blomqvist + + PR fortran/68401 + * trans-decl.c (gfc_build_builtin_function_decls): Replace + os_error with os_error_at decl. + * trans.c (trans_runtime_error_vararg): Modify so the error + function decl is passed directly. + (gfc_trans_runtime_error): Pass correct error function decl. + (gfc_trans_runtime_check): Likewise. + (trans_os_error_at): New function. + (gfc_call_malloc): Use trans_os_error_at. + (gfc_allocate_using_malloc): Likewise. + (gfc_call_realloc): Likewise. + * trans.h (gfor_fndecl_os_error): Replace with gfor_fndecl_os_error_at. + +2019-08-16 Jeff Law + Mark Eggleston + + * gfortran.h: Add gfc_check_conflict declaration. + * symbol.c (check_conflict): Rename cfg_check_conflict and remove + static. + * symbol.c (cfg_check_conflict): Remove automatic in equivalence + conflict check. + * symbol.c (save_symbol): Add check for in equivalence to stop the + the save attribute being added. + * trans-common.c (build_equiv_decl): Add is_auto parameter and + add !is_auto to condition where TREE_STATIC (decl) is set. + * trans-common.c (build_equiv_decl): Add local variable is_auto, + set it true if an atomatic attribute is encountered in the variable + list. Call build_equiv_decl with is_auto as an additional parameter. + flag_dec_format_defaults is enabled. + * trans-common.c (accumulate_equivalence_attributes) : New subroutine. + * trans-common.c (find_equivalence) : New local variable dummy_symbol, + accumulated equivalence attributes from each symbol then check for + conflicts. + +2019-08-16 Richard Biener + + * trans-intrinsic.c (gfc_conv_intrinsic_findloc): Initialize + forward_branch to avoid bogus uninitialized warning. + +2019-08-15 Thomas Koenig + + PR fortran/91443 + * frontend-passes.c (check_externals_expr): New function. + (check_externals_code): New function. + (gfc_check_externals): New function. + * gfortran.h (debug): Add prototypes for gfc_symbol * and + gfc_expr *. + (gfc_check_externals): Add prototype. + * interface.c (compare_actual_formal): Do not complain about + alternate returns if the formal argument is optional. + (gfc_procedure_use): Handle cases when an error has been issued + previously. Break long line. + * parse.c (gfc_parse_file): Call gfc_check_externals for all + external procedures. + * resolve.c (resolve_global_procedure): Remove checking of + argument list. + +2019-08-13 Steven G. Kargl + + PR fortran/87991 + * resolve.c (check_data_variable): data-stmt-object with pointer + attribute requires a data-stmt-value with the target attribute. + +2019-08-13 Steven G. Kargl + + PR fortran/88072 + * misc.c (gfc_typename): Do not point to something that ought not to + be pointed at. + +2013-08-13 Thomas Koenig + + PR fortran/90563 + * frontend-passes.c (insert_index): Suppress errors while + simplifying the resulting expression. + +2019-08-13 Steven G. Kargl + + PR fortran/89647 + resolve.c (resolve_typebound_procedure): Allow host associated + procedure to be a binding target. While here, wrap long line. + +2019-08-13 Steven G. Kargl + + PR fortran/87993 + * expr.c (gfc_simplify_expr): Simplifcation of an array with a kind + type inquiry suffix yields a constant expression. + +2019-08-13 Janne Blomqvist + + PR fortran/91414 + * check.c (gfc_check_random_seed): Reduce seed_size. + * intrinsic.texi (RANDOM_NUMBER): Update to match new PRNG. + +2019-08-12 Thomas Koenig + + PR fortran/91424 + * frontend-passes.c (do_subscript): Do not warn for an + expression a second time. Do not warn about a zero-trip loop. + (doloop_warn): Also look at contained namespaces. + +2019-08-11 Janne Blomqvist + + PR fortran/91413 + * invoke.texi (-fmax-stack-var-size): Document increased default. + * options.c (gfc_post_options): Increase default stack var size to + 65536 bytes. + * trans-decl.c (gfc_finish_var_decl): Generate warning when local + array moved to static storage. + +2019-08-10 Steven G. Kargl + + * decl.c (match_old_style_init): Use a clearer error message. + * expr.c (gfc_check_assign): Update BOZ checking to provide a stricter + adherence to the Fortran standard. Use gfc_invalid_boz () to + relax errors into warnings. + * gfortran.h (gfc_isym_id): Add new ids GFC_ISYM_DFLOAT, + GFC_ISYM_FLOAT, GFC_ISYM_REALPART, and GFC_ISYM_SNGL + * intrinsic.c (add_functions): Use new ids to split REAL generic into + REAL, FLOAT, DFLOAT, SNGL, and REALPART generics. + (gfc_intrinsic_func_interface): Allow new intrinsics in an + initialization expression + * resolve.c (resolve_operator): Deal with BOZ as operands. + Use gfc_invalid_boz to allow for errors or warnings via the + -fallow-invalid-boz option. A BOZ cannot be an operand to an + unary operator. Both operands of a binary operator cannot be BOZ. + For binary operators, convert a BOZ operand into the type and + kind of the other operand for REAL or INTEGER operand. + * trans-intrinsic.c: Use new ids to cause conversions to happen. + +2019-08-06 Steven G. Kargl + + PR fortran/91359 + * trans-decl.c (gfc_generate_return): Ensure something is returned + from a function. + +2019-08-06 Steven G. Kargl + + PR fortran/42546 + * check.c(gfc_check_allocated): Add comment pointing to ... + * intrinsic.c(sort_actual): ... the checking done here. + +2019-08-05 Steven g. Kargl + + PR fortran/91372 + * decl.c (gfc_match_data): Allow an implied do-loop to nestle against + DATA. + +2019-08-04 Steven G. Kargl + + PR fortran/88227 + * check.c (oct2bin): New function. Convert octal string to binary. + (hex2bin): New function. Convert hexidecimal string to binary. + (bin2real): New function. Convert binary string to REAL. Use + oct2bin and hex2bin. + (gfc_boz2real): Use fallback conversion bin2real. + +2019-08-02 Steven G. Kargl + + PR fortran/90985 + * decl.c (gfc_match_data): In free-form code, DATA be followed by + whitespace. + +2019-08-02 Steven G. Kargl + + PR fortran/90986 + * match.c (gfc_match_equivalence): Check that EQUIVALENCE is followed + by '('. + +2019-07-30 Steven G. Kargl + + PR fortran/91296 + * interface.c (compare_actual_expr): When checking for aliasing, add + a case to handle REF_INQUIRY (e.g., foo(x%re, x%im) do not alias). + +2019-07-29 Thomas Koenig + + PR fortran/90813 + * dump-parse-tree.c (show_global_symbol): New function. + (gfc_dump_global_symbols): New function. + * gfortran.h (gfc_traverse_gsymbol): Add prototype. + (gfc_dump_global_symbols): Likewise. + * invoke.texi: Document -fdump-fortran-global. + * lang.opt: Add -fdump-fortran-global. + * parse.c (gfc_parse_file): Handle flag_dump_fortran_global. + * symbol.c (gfc_traverse_gsymbol): New function. + * trans-decl.c (sym_identifier): New function. + (mangled_identifier): New function, doing most of the work + of gfc_sym_mangled_identifier. + (gfc_sym_mangled_identifier): Use mangled_identifier. Add mangled + identifier to global symbol table. + (get_proc_pointer_decl): Use backend decl from global identifier + if present. + +2019-07-25 Thomas Koenig + + PR fortran/65819 + * dependency.h (gfc_dep_resovler): Add optional argument identical. + * dependency.c (gfc_check_dependency): Do not alway return 1 if + the symbol is the same. Pass on identical to gfc_dep_resolver. + (gfc_check_element_vs_element): Whitespace fix. + (gfc_dep_resolver): Adjust comment for function. If identical is + true, return 1 if any overlap has been found. + +2019-07-23 Steven G. Kargl + + PR fortran/54072 + * check.c (gfc_invalid_boz): Fix comment. + (illegal_boz_arg): New function. + (gfc_check_transfer): Use to arguments. + (gfc_check_storage_size): Ditto. + (gfc_check_complex): Remove leftover comment from BOZ patch. + * primary.c (match_boz_constant): Remove leftover comment. + +2019-07-23 Steven G. Kargl + + * arith.c (gfc_convert_integer, gfc_convert_real, gfc_convert_complex): + Move to ... + * primary.c (convert_integer, convert_real, convert_complex): ... here. + Rename and make static functions. + (match_integer_constant): Use convert_integer + (match_real_constant): Use convert_real. + (match_complex_constant: Use convert_complex. + * arith.h (gfc_convert_integer, gfc_convert_real, gfc_convert_complex): + Remove prototypes. + * array.c (match_array_cons_element): A BOZ cannot be a data + statement value. Jump to a common exit point. + * check.c (gfc_invalid_boz): New function. Emit error or warning + for a BOZ in an invalid context. + (boz_args_check): Move to top of file to prevent need of forward + declaration. + (is_boz_constant): New function. Check that BOZ expr is constant. + (gfc_boz2real): New function. In-place conversion of BOZ literal + constant to REAL in accordance to F2018. + (gfc_boz2int): New function. In-place conversion of BOZ literal + constant to INTEGER in accordance to F2018. + (gfc_check_achar, gfc_check_char, gfc_check_float): Use gfc_invalid_boz. Convert BOZ + as needed. + (gfc_check_bge_bgt_ble_blt): Enforce F2018 requirements on BGE, + BGT, BLE, and BLT intrinsic functions. + (gfc_check_cmplx): Re-organize to check kind, if present, first. + Convert BOZ real and/or imaginary parts as needed in accordance to + F2018. + (gfc_check_complex): Use gfc_invalid_boz. Convert BOZ as needed. + (gfc_check_dcmplx, gfc_check_dble ): Convert BOZ as needed. + (gfc_check_dshift): Make dshift[lr] conform to F2018 standard. + gfc_check_float (gfc_expr *a) + (gfc_check_iand_ieor_ior): Make IAND, IEOR, and IOR conform to + F2018 standard. + (gfc_check_int): Conform to F2018 standard. + (gfc_check_intconv): Deprecate SHORT and LONG aliases for INT2 and + INT. Simply return for a BOZ argument. See gfc_simplify_intconv. + (gfc_check_merge_bits): Make MERGE_BITS conform to Fortran 2018 + standard. + (gfc_check_real): Remove incorrect comment. Check kind, if present, + first. Simply return for a BOZ argument. See gfc_simplify_real. + (gfc_check_and): Re-do error handling for BOZ arguments. Remove + special casing ts.type != BT_INTEGER or BT_LOGICAL. + * decl.c (match_old_style_init): Check for BOZ in old-style + initialization. Issue error or warning depending on + -fallow-invalid-boz option. Issue error if variable is not an + INTEGER or REAL and the value is BOZ. + * expr.c (gfc_copy_expr): Copy a BT_BOZ gfc_expr. + (gfc_check_assign): Re-do error handling for a BOZ in an assignment + statement. Do in-place conversion of RHS based on LHS type of + INTEGER or REAL. + * gfortran.h (gfc_expr): Add a boz component. Remove is_boz component. + (gfc_boz2int, gfc_boz2real, gfc_invalid_boz): New prototypes. + * interface.c (gfc_extend_assign): Guard against replacing an + intrinsic involving a BOZ literal constant on RHS. + * invoke.texi: Doument -fallow-invalid-boz. + * lang.opt: New option. -fallow-invalid-boz. + * libgfortran.h (bt): Elevate BOZ to a basic type. + * misc.c (gfc_basic_typename, gfc_typename): Translate BT_BOZ to BOZ. + * primary.c (convert_integer, convert_real, convert_complex): to here. + Rename and make static functions. + * primary.c(match_boz_constant): Rewrite parsing of a BOZ. Re-do + error handling. Deprecate 'X' for hexidecimal and postfix notation. + Use -fallow-invalid-boz and gfc_invalid_boz to accept deprecated code. + * resolve.c (resolve_ordinary_assign): Rework a RHS that is a + BOZ literal constant. Use gfc_invalid_boz to allow previous + nonstandard behavior. Remove range checking of BOZ conversion. + * simplify.c (convert_boz): Remove function. + (simplify_cmplx): Remove conversion of BOZ constants, because + conversion is done in gfc_check_cmplx. + (gfc_simplify_float): Remove conversion of BOZ constant, because + conversion is done in gfc_check_float. + (simplify_intconv): Use gfc_boz2int to convert BOZ to INTEGER. + Remove range checking for BOZ conversion. + (gfc_simplify_real): Use k, if present, to determine kind. Convert + BOZ to REAL. Remove range checking for BOZ conversion. + target-memory.c (gfc_convert_boz): Rewrite to deal with convert of + a BOZ to a REAL value. + +2019-07-21 Thomas König + + PR libfortran/91030 + * gfortran.texi (GFORTRAN_FORMATTED_BUFFER_SIZE): Document + (GFORTRAN_UNFORMATTED_BUFFER_SIZE): Likewise. + +2019-07-16 Harald Anlauf + + PR fortran/90903 + * libgfortran.h: Add mask for -fcheck=bits option. + * options.c (gfc_handle_runtime_check_option): Add option "bits" + to run-time checks selectable via -fcheck. + * trans-intrinsic.c (gfc_conv_intrinsic_btest) + (gfc_conv_intrinsic_singlebitop, gfc_conv_intrinsic_ibits) + (gfc_conv_intrinsic_shift, gfc_conv_intrinsic_ishft) + (gfc_conv_intrinsic_ishftc): Implement run-time checks for the + POS, LEN, SHIFT, and SIZE arguments. + * gfortran.texi: Document run-time checks for bit manipulation + intrinsics. + * invoke.texi: Document new -fcheck=bits option. + +2019-07-14 Jerry DeLisle + + PR fortran/87233 + * expr.c (check_restricted): Relax constraint C1279 which was + removed from F2008 and above. + +2019-07-07 Paul Thomas + + PR fortran/91077 + * trans-array.c (gfc_conv_scalarized_array_ref) Delete code + that gave symbol backend decl for subref arrays and deferred + length variables. + +2019-07-05 Andrew Stubbs + + * openmp.c (resolve_omp_clauses): Add custom error messages for + parameters in map clauses. + +2019-07-03 Martin Liska + + * check.c (gfc_check_c_funloc): Remove + dead assignemts. + * decl.c (variable_decl): Likewise. + * resolve.c (resolve_typebound_function): Likewise. + * simplify.c (gfc_simplify_matmul): Likewise. + (gfc_simplify_scan): Likewise. + * trans-array.c (gfc_could_be_alias): Likewise. + * trans-common.c (add_equivalences): Likewise. + * trans-expr.c (trans_class_vptr_len_assignment): Likewise. + (gfc_trans_array_constructor_copy): Likewise. + (gfc_trans_assignment_1): Likewise. + * trans-intrinsic.c (conv_intrinsic_atomic_op): Likewise. + * trans-openmp.c (gfc_omp_finish_clause): Likewise. + * trans-types.c (gfc_get_array_descriptor_base): Likewise. + * trans.c (gfc_build_final_call): Likewise. + +2019-06-27 Steven G. Kargl + + PR fortran/90987 + * gfortran.dg/common_1.f: new test. + * gfortran.dg/common_26.f90: Ditto. + +2019-06-26 Steven G. Kargl + + PR Fortran/90988 + ChangeLog forgotten with revision 272667 + * decl.c (access_attr_decl): Use temporary variable to reduce + unreadability of code. Normalize jumping to return. + (gfc_match_protected): Fix parsing error. Add comments to + explain code. Remove dead code. + (gfc_match_private): Use temporary variable to reduce unreadability + of code. Fix parsing error. Move code to test for blank PRIVATE. + Remove dead code. + (gfc_match_public): Move code to test for blank PUBLIC. Fix + parsing error. Remove dead code. + +2019-06-24 Jan Hubicka + + * trans-expr.c (gfc_conv_substring): Check that + type is array or integer prior checking string flag. + (gfc_conv_string_parameter): Likewise. + * trans-openmp.c (gfc_omp_scalar_p): Likewise. + * trans.c (gfc_build_array_ref): Likewise. + +2019-06-22 Jerry DeLisle + + PR fortran/89782 + * io.c (gfc_resolve_dt): Check that internal units are not + character PARAMETER. + +2019-06-21 Steven G. Kargl + + PR fortran/67884 + * resolve.c (deferred_requirements) : Check only the result variable. + (resolve_fl_procedure): Check deferred requirements on functions. + +2019-06-21 Steven G. Kargl + + PR fortran/51991 + * decl.c (gfc_match_save): If SAVE was not seen, return MATCH_NO + instead issuing an error message and returning MATCH_ERROR. + +2019-06-20 Steven G. Kargl + + PR fortran/77632 + * /decl.c (variable_decl): Mark a variable that is a target in pointer + initialization when in PROGRAM, MODULE, or SUBMODULE scope with an + implicit save. + +2019-06-20 Steven G. Kargl + + PR fortran/86587 + * symbol.c (verify_bind_c_derived_type): Remove erroneous error + checking for BIND(C) and PRIVATE attributes. + +2019-06-20 Thomas Koenig + + PR fortran/90937 + * trans-types.c (get_formal_from_actual_arglist): Get symbol from + current namespace so it will be freed later. If symbol is of type + character, get an empty character length. + +2019-06-19 Steven G. Kargl + + PR fortran/69499 + * match.c (gfc_match_select_type): SELECT TYPE is an executable + statement, and cannot appear in MODULE or SUBMODULE scope. + +2019-06-19 Steven G. Kargl + + PR fortran/69398 + * decl.c (attr_decl): Check for duplicate DIMENSION attribute for a + CLASS entity. + +2019-06-19 Steven G. Kargl + + PR fortran/87907 + * resolve.c (resolve_contained_fntype): Do not dereference a NULL + pointer. + +2019-06-19 Jim MacArthur + Mark Eggleston + + PR fortran/89103 + * gfortran.texi: Add -fdec-blank-format-item + * invoke.texi: Add option to list of options. + * invoke.texi: Add to section on Commas in FORMAT specifications. + * io.c (check_format): At FMT_RPAREN goto finished if + -fdec-blank-format-item otherwise set error string. + * lang.opt: Add new option. + * options.c (set_dec_flags): Add SET_BITFLAG for + flag_dec_format_defaults. + +2019-06-18 Julian Brown + + PR fortran/90921 + * trans-decl.c (finish_oacc_declare): Reset module_oacc_clauses + before scanning each namespace. + +2019-06-18 Thomas Schwinge + + PR fortran/85221 + * trans-decl.c (add_attributes_to_decl): Handle OpenACC 'declare' + directive. + +2019-06-16 Thomas Koenig + + * dump_parse_tree (debug): Add verison for formal arglist. + Do not crash when a gfc_expr is NULL. + +2019-06-15 Steven G. Kargl + + * decl.c (gfc_match_derived_decl): Dummy argument cannot be a derived + type. + +2019-06-14 Steven G. Kargl + + * arith.c (arith_power): Rework overflow of an integer to an integer + exponent. + +2019-06-14 Harald Anlauf + + PR fortran/90577 + PR fortran/90578 + * trans-intrinsic.c (gfc_conv_intrinsic_shift): Properly + distinguish logical/arithmetic shifts. + * intrinsic.texi: Update documentation for SHIFTR/SHIFTL/SHIFTA + (Fortran 2008) and LSHIFT/RSHIFT (GNU extensions). + +2019-06-14 Steven G. Kargl + + PR fortran/89646 + * dependency.c (gfc_check_argument_var_dependency): Suppress spurious + warnings by comparing variable names. + +2019-06-13 Steven G. Kargl + + PR fortran/68544 + * resolve.c (is_dt_name): New function to compare symbol name against + list of derived types. + (resolve_actual_arglist): Use it to find wrong code. + +2019-06-13 Steven G. Kargl + + PR fortran/89344 + * expr.c (gfc_check_vardef_context): Check for INTENT(IN) variable + in SELECT TYPE construct. + +2019-06-13 Steven G. Kargl + + PR fortran/88810 + * dependency.c (gfc_dep_resolver): Re-arrange code to make the logic + a bit more transparent. Fix 2 nearby formatting issues. + +2019-06-13 Jakub Jelinek + + * io.c (check_format): Use G_(...) instead of _(...) for error values, + append " in format string at %L" to all strings but unexpected_element, + use error as gfc_error formating string instead of + "%s in format string at %L". Formatting fixes. + +2019-06-12 Steven G. Kargl + + * gfortran.h (gfc_free_dt_list): Remove prototype. + +2019-06-12 Steven G. Kargl + + PR fortran/90002 + * array.c (gfc_free_array_spec): When freeing an array-spec, avoid + an ICE for assumed-shape coarrays. + +2019-06-08 Paul Thomas + + PR fortran/90786 + * trans-expr.c (pointer_assignment_is_proc_pointer) Remove as + it is very simple and only called from one place. + (gfc_trans_pointer_assignment): Rename non_proc_pointer_assign + as non_proc_ptr_assign. Assign to it directly, rather than call + to above, deleted function and use gfc_expr_attr instead of + only checking the reference chain. + +2019-06-08 Thomas Koenig + Tomáš Trnka + + PR fortran/90744 + * trans-types.c (get_formal_from_actual_arglist): Unset typespec + flags which make no sense for procedures without explicit + interface. + +2019-06-02 Thomas Koenig + + PR fortran/90539 + * trans-expr.c (gfc_conv_subref_array_arg): If the size of the + expression can be determined to be one, treat it as contiguous. + Set likelyhood of presence of an actual argument according to + PRED_FORTRAN_ABSENT_DUMMY and likelyhood of being contiguous + according to PRED_FORTRAN_CONTIGUOUS. + +2019-05-30 Thomas Koenig + + * gfc-internals.texi (Translating to GENERIC): New chapter. + +2019-05-30 Marek Polacek + + * lang.opt (ftail-call-workaround): Fix a typo. + +2019-05-30 Jakub Jelinek + + * lang.opt (ftail-call-workaround=): Fix a typo - lenghts to lengths. + +2019-05-29 Thomas Koenig + + PR fortran/90539 + * gfortran.h (gfc_has_dimen_vector_ref): Add prototype. + * trans.h (gfc_conv_subref_array_arg): Add argument check_contiguous. + (gfc_conv_is_contiguous_expr): Add prototype. + * frontend-passes.c (has_dimen_vector_ref): Remove prototype, + rename to + (gfc_has_dimen_vector_ref): New function name. + (matmul_temp_args): Use gfc_has_dimen_vector_ref. + (inline_matmul_assign): Likewise. + * trans-array.c (gfc_conv_array_parameter): Also check for absence + of a vector subscript before calling gfc_conv_subref_array_arg. + Pass additional argument to gfc_conv_subref_array_arg. + * trans-expr.c (gfc_conv_subref_array_arg): Add argument + check_contiguous. If that is true, check if the argument + is contiguous and do not repack in that case. + * trans-intrinsic.c (gfc_conv_intrinsic_is_contiguous): Split + away most of the work into, and call + (gfc_conv_intrinsic_is_coniguous_expr): New function. + +2019-05-29 Jakub Jelinek + + PR fortran/90329 + * lang.opt (fbroken-callers): Remove. + (ftail-call-workaround, ftail-call-workaround=): New options. + * gfortran.h (struct gfc_namespace): Add implicit_interface_calls. + * interface.c (gfc_procedure_use): Set implicit_interface_calls + for calls to implicit interface procedures. + * trans-decl.c (create_function_arglist): Use flag_tail_call_workaround + instead of flag_broken_callers. If it is not 2, also require + sym->ns->implicit_interface_calls. + * invoke.texi (fbroken-callers): Remove documentation. + (ftail-call-workaround, ftail-call-workaround=): Document. + +2019-05-26 Thomas Koenig + + PR fortran/90539 + * trans-types.c (get_formal_from_actual_arglist): Set rank + and lower bound for assumed size arguments. + +2019-05-22 Andrew Stubbs + + * trans-stmt.c (gfc_trans_critical): Use size_type_node for + gfor_fndecl_caf_lock and gfor_fndecl_caf_unlock calls. + (gfc_trans_allocate): Use size_type_node for gfor_fndecl_caf_sync_all + call. + +2019-05-22 Jeff Law + Mark Eggleston + + PR fortran/89100 + * gfortran.texi: Add Default widths for F, G and I format + descriptors to Extensions section. + * invoke.texi: Add -fdec-format-defaults + * io.c (check_format): Use default widths for i, f and g when + flag_dec_format_defaults is enabled. + * lang.opt: Add new option. + * options.c (set_dec_flags): Add SET_BITFLAG for + flag_dec_format_defaults. + +2019-05-21 Janne Blomqvist + + PR libfortran/90038 + * intrinsic.texi (EXECUTE_COMMAND_LINE): Explain new + wait=.false. implementation. + +2019-05-20 Mark Eggleston + + * gfortran.texi: Remove reference to the ASSIGN statement, capitalise + complex, state that padding is with spaces and modify the Hollerith + constant examples. + +2019-05-19 Paul Thomas + + PR fortran/90498 + * trans-stmt.c (trans_associate_var) Do not use the saved + descriptor if the expression is a COMPONENT_REF. + +2019-05-19 Thomas Koenig + + PR fortran/90329 + * invoke.texi: Document -fbroken-callers. + * lang.opt: Add -fbroken-callers. + * trans-decl.c (create_function_arglist): Only set + DECL_HIDDEN_STRING_LENGTH if flag_broken_callers is set. + +2019-05-17 Thomas Schwinge + + PR fortran/89433 + * f95-lang.c (gfc_attribute_table): Set min_len to -1 for "omp + declare target". + * trans-decl.c (add_attributes_to_decl): Refer to OpenACC + 'routine' clauses from "omp declare target" attribute. + +2019-05-16 Martin Sebor + + * gfortranspec.c (append_arg): Spell out the word "argument." + +2019-05-16 Jakub Jelinek + + PR fortran/90329 + * trans-decl.c (create_function_arglist): Set + DECL_HIDDEN_STRING_LENGTH on hidden string length PARM_DECLs if + len is constant. + +2019-05-15 Janne Blomqvist + + * parse.c (gfc_parse_file): Remove translation string markers. + +2019-05-12 Janne Blomqvist + + * dump-parse-tree.c (get_c_type_name): Use macros for complex type + names. + * parse.c (gfc_parse_file): Define complex macros, add CPP support + when printing C prototypes. + +2019-05-10 Thomas Koenig + + PR fortran/61968 + * interface.c (compare_actual_formal): Do not create a vtab if + the actual argument is assumed type. + +2019-05-10 Paul Thomas + + PR fortran/90093 + * trans-decl.c (convert_CFI_desc): Test that the dummy is + present before doing any of the conversions. + + PR fortran/90352 + * decl.c (gfc_verify_c_interop_param): Restore the error for + charlen > 1 actual arguments passed to bind(C) procs. + Clean up trailing white space. + + PR fortran/90355 + * trans-array.c (gfc_trans_create_temp_array): Set the 'span' + field to the element length for all types. + (gfc_conv_expr_descriptor): The force_no_tmp flag is used to + prevent temporary creation, especially for substrings. + * trans-decl.c (gfc_trans_deferred_vars): Rather than assert + that the backend decl for the string length is non-null, use it + as a condition before calling gfc_trans_vla_type_sizes. + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): 'force_no_tmp' + is set before calling gfc_conv_expr_descriptor. + * trans.c (get_array_span): Move the code for extracting 'span' + from gfc_build_array_ref to this function. This is specific to + descriptors that are component and indirect references. + * trans.h : Add the force_no_tmp flag bitfield to gfc_se. + +2019-05-08 Thomas Koenig + + PR fortran/90351 + PR fortran/90329 + * dump-parse-tree.c: Include version.h. + (gfc_dump_external_c_prototypes): New function. + (get_c_type_name): Select "char" as a name for a simple char. + Adjust to handling external functions. Also handle complex. + (write_decl): Add argument bind_c. Adjust for dumping of external + procedures. + (write_proc): Likewise. + (write_interop_decl): Add bind_c argument to call of write_proc. + * gfortran.h: Add prototype for gfc_dump_external_c_prototypes. + * lang.opt: Add -fc-prototypes-external flag. + * parse.c (gfc_parse_file): Move dumping of BIND(C) prototypes. + Call gfc_dump_external_c_prototypes if option is set. + * invoke.texi: Document -fc-prototypes-external. + +2019-05-06 Steven G. Kargl + + PR fortran/90290 + * match.c (gfc_match_stopcode): Check F2008 condition on stop code. + +2019-05-01 Andrew Benson + + * module.c (write_module): Initialize module_column before writing + module to ensure line break occurs at correct column. + +2019-05-01 Dominique d'Humieres + + PR fortran/60144 + * match.c (gfc_match_parens): Change the location for missing ')'. + (gfc_match_if): Detect a missing '('. Remove the spurious named + constant error. Change the wording of some errors. + (gfc_match_else): Change the wording of an error. + (gfc_match_elseif): Detect a missing '('. Improve the matching + process to get a better syntax analysis. + +2019-04-19 Steven G. Kargl + + PR fortran/90166 + * decl.c (in_module_or_interface): New function to check that the + current state is in a module, submodule, or interface. + (gfc_match_prefix): Use it. + +2019-04-22 Paul Thomas + + PR fortran/57284 + * resolve.c (find_array_spec): If this is a class expression + and the symbol and component array specs are the same, this is + not an error. + *trans-intrinsic.c (gfc_conv_intrinsic_size): If a class symbol + argument, has no namespace, it has come from the interface + mapping and the _data component must be accessed directly. + +2019-04-17 Thomas Schwinge + + PR fortran/90048 + * openmp.c (gfc_resolve_do_iterator): Handle sharing_clauses for + OpenACC, too. + (gfc_resolve_oacc_blocks): Populate sharing_clauses with private + clauses. + +2019-04-14 Paul Thomas + + PR fortran/89843 + * trans-decl.c (gfc_get_symbol_decl): Assumed shape and assumed + rank dummies of bind C procs require deferred initialization. + (convert_CFI_desc): New procedure to convert incoming CFI + descriptors to gfc types and back again. + (gfc_trans_deferred_vars): Call it. + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Null the CFI + descriptor pointer. Free the descriptor in all cases. + + PR fortran/89846 + * expr.c (is_CFI_desc): New function. + (is_subref_array): Tidy up by referencing the symbol directly. + * gfortran.h : Prototype for is_CFI_desc. + * trans_array.c (get_CFI_desc): New function. + (gfc_get_array_span, gfc_conv_scalarized_array_ref, + gfc_conv_array_ref): Use it. + * trans.c (get_array_span): Extract the span from descriptors + that are indirect references. + + PR fortran/90022 + * trans-decl.c (gfc_get_symbol_decl): Make sure that the se + expression is a pointer type before converting it to the symbol + backend_decl type. + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Eliminate + temporary creation for intent(in). + +2019-04-13 Dominique d'Humieres + + PR fortran/79842 + * module.c (gfc_use_module): use complete sentences. + +2019-04-11 Thomas Koenig + + PR translation/89939 + * frontend-passes.c (B_ERROR): Delete macro. + (C_ERROR): Delete macro. + (B_ERROR_1): New macro. + (C_ERROR_1): New macro. + (C_ERROR_2): New macro. + (inline_matmul_assign): Use new macros. + (call_external_blas): Likewise. + +2019-04-06 Thomas Koenig + + PR fortran/87352 + * gfortran.h (gfc_component): Add finalized field. + * class.c (finalize_component): If the component is already + finalized, return early. Set component->finalized on exit. + +2019-04-06 Thomas Koenig + + PR fortran/89981 + * resolve.c (resolve_global_procedure): If the global symbol is an + ENTRY, also look up its name among the entries. + +2019-04-04 Harald Anlauf + + PR fortran/89904 + * check.c (gfc_check_transfer): Reject procedures as actual + arguments for SOURCE and MOLD of TRANSFER intrinsic. + +2019-04-03 Steven G. Kargl + + PR fortran/68567 + * expr.c (gfc_reduce_init_expr): Add extra check to avoid + dereferencing a null pointer. + +2019-04-03 Dominique d'Humieres + + PR fortran/89375 + * expr.c (comp_pointer): Remove redundant condition. + +2019-03-31 Harald Anlauf + + PR fortran/83515 + PR fortran/85797 + * trans-types.c (gfc_typenode_for_spec): Handle conversion for + procedure pointers. + * target-memory.c (gfc_element_size): Handle size determination + for procedure pointers. + +2019-03-31 Thomas Koenig + + * dump-parse-tree.c (debug): Add for symbol_attribute *, + symbol_attribute and gfc_ref * arguments. + +2019-03-30 Paul Thomas + + PR fortran/89841 + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Use the formal + argument attributes rather than those of the actual argument. + + PR fortran/89842 + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Call + 'set_dtype_for_unallocated' for any type of arrayspec. + +2019-03-27 Janus Weil + + PR fortran/85537 + * expr.c (gfc_check_assign_symbol): Reject internal and dummy procedures + in procedure pointer initialization. + +2019-03-27 Paul Thomas + + PR fortran/88247 + * expr.c (is_subref_array): Permit substrings to be detected + as subref arrays. + * trans-array.c (get_array_ctor_var_strlen): Obtain the length + of deferred length strings. Handle substrings with a NULL end + expression. + (trans_array_constructor): Remove an unnecessary blank line. + (gfc_conv_scalarized_array_ref): Skip to label 'done' if 'decl' + is a pointer array. + (get_array_charlen): If the expression is an array, convert the + first element of the constructor and use its string length. Get + a new charlen if necessary. + (gfc_conv_expr_descriptor): Call 'get_array_charlen' for array + constructor expressions. If the ss_info string length is + available, use that to set the span of character arrays. + * trans-expr.c (gfc_get_expr_charlen): Handle substrings + * trans-stmt.c (trans_associate_var): Set the pointer array + flag for variable targets and constant array constructors. Take + care not to reset the string length or the span in the case of + expressions that are not converted as direct by reference. + +2019-03-25 Kyrylo Tkachov + + * intrinsic.texi (MINLOC): Fix typo in BACK argument documentation. + (MAXLOC): Likewise. + +2019-03-24 Thomas Koenig + + PR fortran/78865 + * interface.c (compare_actual_formal): Change errors about + missing or extra to gfc_error_now to make sure they are issued. + Change "spec" to "specifier" in message. + * resolve.c (resolve_global_procedure): Also check for mismatching + interface with global symbols if the namespace has already been + resolved. + +2019-03-21 Thomas Schwinge + + PR fortran/72741 + * openmp.c (gfc_match_oacc_routine): Set the level of parallelism + for all variants. + (gfc_resolve_oacc_routines): Call gfc_add_omp_declare_target. + + PR fortran/89773 + * gfortran.h (gfc_oacc_routine_name): Add loc member. + (gfc_resolve_oacc_routines): Declare. + * openmp.c (gfc_match_oacc_routine): Move some error checking + into... + (gfc_resolve_oacc_routines): ... this new function. + * resolve.c (resolve_codes): Call it. + + PR fortran/72741 + * openmp.c (gfc_match_oacc_routine): Clarify. + + PR fortran/72741 + * module.c (verify_OACC_ROUTINE_LOP_NONE): New function. + (enum ab_attribute): Add AB_OACC_ROUTINE_LOP_GANG, + AB_OACC_ROUTINE_LOP_WORKER, AB_OACC_ROUTINE_LOP_VECTOR, + AB_OACC_ROUTINE_LOP_SEQ. + (attr_bits): Add these. + (mio_symbol_attribute): Handle these. + +2019-03-20 Janus Weil + + PR fortran/71861 + * symbol.c (check_conflict): ABSTRACT attribute conflicts with + INTRINSIC attribute. + +2019-03-18 Thomas Koenig + + PR fortran/68009 + * iresolve.c: Include trans.h. + (gfc_resolve_fe_runtine_error): Set backend_decl on + resolved_sym. + +2019-03-17 Thomas Koenig + + PR fortran/88008 + * gfortran.h (expr_t): Add EXPR_UNKNOWN. + * expr.c (gfc_copy_expr): Add EXPR_UNKNOWN to switch statement. + (gfc_simplify_expr): Likewise. + * module.c (mio_expr): Likewise. + * resovle.c (extract_compcall_passed_object): Issue error on + unknown type. + (check_typebound_baseobject): Issue error on wrong type. + * trans-expr.c (gfc_apply_interface_mapping_to_expr): Add + EXPR_UNKNOWN to switch statement. + +2019-03-16 Jakub Jelinek + + PR fortran/89724 + * scanner.c (load_line): Remove linenum and current_line static + variables, add warned_tabs automatic variable. Use current_file->line + instead of current_line and warned_tabs boolean to avoid diagnosing + tabs multiple times on the same line. + +2019-03-16 Thomas Koenig + + PR fortran/84394 + * symbol.c (gfc_add_subroutine): If we are encountering a + subrtoutine within a BLOCK DATA and the name starts with an + underscore, do not check. + +2019-03-15 Harald Anlauf + + PR fortran/60091 + * expr.c (gfc_check_pointer_assign): Correct and improve error + messages for invalid pointer assignments. + +2019-03-14 Thomas Koenig + + * gfortran.texi: Document Q edit descriptor under + "Extensions not implemented in GNU Fortran". + +2019-03-13 Harald Anlauf + + PR fortran/87045 + * trans-expr.c (gfc_trans_pointer_assignment): Move check for same + string length so that we do not get false errors for deferred + length. + +2019-03-13 Janus Weil + + PR fortran/89601 + * decl.c (gfc_match_formal_arglist): Reject empty type parameter lists. + (gfc_match_derived_decl): Mark as PDT only if type parameter list was + matched successfully. + +2019-03-13 Thomas Koenig + + PR fortran/66695 + PR fortran/77746 + PR fortran/79485 + * gfortran.h (gfc_symbol): Add bind_c component. + (gfc_get_gsymbol): Add argument bind_c. + * decl.c (add_global_entry): Add bind_c argument to + gfc_get_symbol. + * parse.c (parse_block_data): Likewise. + (parse_module): Likewise. + (add_global_procedure): Likewise. + (add_global_program): Likewise. + * resolve.c (resolve_common_blocks): Likewise. + (resolve_global_procedure): Likewise. + (gfc_verify_binding_labels): Likewise. + * symbol.c (gfc_get_gsymbol): Add argument bind_c. Set bind_c + in gsym. + * trans-decl.c (gfc_get_module_backend_decl): Add bind_c argument + to gfc_get_symbol. + (gfc_get_extern_function_decl): If the sym has a binding label + and it cannot be found in the global symbol tabel, it is the wrong + one and vice versa. + +2019-03-12 Thomas Koenig + + PR fortran/87673 + * match.c (gfc_match_type_spec): Remove call to + gfc_resolve_expr for character length. + +2019-03-12 Martin Liska + + * decl.c (add_init_expr_to_sym): Replace usage of 'can't' + with 'cannot'. + (variable_decl): Likewise. + (cray_pointer_decl): Likewise. + (match_binding_attributes): Likewise. + * f95-lang.c (gfc_init): Likewise. + * interface.c (gfc_check_typebound_override): Likewise. + * intrinsic.c (make_generic): Likewise. + * module.c (dump_module): Likewise. + (gfc_use_module): Likewise. + * primary.c (gfc_convert_to_structure_constructor): Likewise. + * resolve.c (resolve_entries): Likewise. + (check_generic_tbp_ambiguity): Likewise. + (get_checked_tb_operator_target): Likewise. + * scanner.c (load_file): Likewise. + * trans-expr.c (gfc_conv_intrinsic_to_class): Likewise. + +2019-03-12 Paul Thomas + + PR fortran/89363 + PR fortran/89364 + * trans-expr.c (set_dtype_for_unallocated): New function. + (gfc_conv_gfc_desc_to_cfi_desc): Call it for allocatable and + pointer arguments. + (gfc_conv_procedure_call): Likewise. Also, set the ubound of + the final dimension to -1 for assumed rank formal args that are + associated with assumed size arrays. + * trans-intrinsic.c (gfc_conv_intrinsic_bound): Return -1 for + the final dimension of assumed rank entities that are argument + associated with assumed size arrays. + (gfc_conv_intrinsic_shape): Likewise return -1 for the final + dimension of the shape intrinsic. + +2019-03-11 Jakub Jelinek + + PR fortran/89651 + * trans-openmp.c (gfc_omp_clause_default_ctor): Set TREE_NO_WARNING + on decl if adding COND_EXPR for allocatable. + (gfc_omp_clause_copy_ctor): Set TREE_NO_WARNING on dest. + +2019-03-11 Martin Liska + + * decl.c (match_record_decl): Wrap an option name + in a string format message and fix GNU coding style. + (gfc_match_pointer): Likewise. + * expr.c (find_array_section): Likewise. + * intrinsic.c (gfc_is_intrinsic): Likewise. + * options.c (gfc_post_options): Likewise. + * primary.c (match_integer_constant): Likewise. + * trans-common.c (translate_common): Likewise. + +2019-03-10 Thomas Koenig + + PR fortran/66089 + * trans-array.c (gfc_scalar_elemental_arg_saved_as_reference): + Return false if a scalar tempoary is needed. + (gfc_walk_variable_expr): Fix up class refs. + +2019-03-10 Thomas Koenig + + PR fortran/87734 + * symbol.c (gfc_add_procedure): Only throw an error if the + procedure has not been declared either PUBLIC or PRIVATE. + +2019-03-09 Thomas Koenig + + PR fortran/71544 + * trans-types.c (gfc_typenode_for_spec) Set ts->is_c_interop of + C_PTR and C_FUNPTR. + (create_fn_spec): Mark argument as escaping if ts->is_c_interop is set. + +2019-03-09 Janus Weil + + PR fortran/84504 + * expr.c (gfc_check_assign_symbol): Deal with procedure pointers to + pointer-valued functions. + +2019-03-09 Thomas König + + PR fortran/71203 + * decl.c (add_init_expr_to_sym): Add shape if init has none. Add + asserts that it has to be an EXPR_ARRAY in this case. + +2019-03-08 Jakub Jelinek + + PR other/80058 + * arith.c (gfc_complex2complex): Avoid two spaces in the middle of + diagnostics. + * resolve.c (resolve_allocate_expr): Likewise. + +2019-03-06 Harald Anlauf + + PR fortran/71203 + * expr.c (simplify_const_ref): Avoid null pointer dereference. + +2019-03-03 Harald Anlauf + Steven G. Kargl + + PR fortran/77583 + * symbol.c (check_conflict): Check for valid procedure name + passed to error reporting routine. + +2019-03-03 Thomas Koenig + + PR fortran/72714 + * resolve.c (resolve_allocate_expr): Add some tests for coarrays. + +2019-03-02 Harald Anlauf + + PR fortran/89516 + * check.c (gfc_calculate_transfer_sizes): Correct checks for cases + where storage size of elements of MOLD is 0. + +2019-02-28 Thomas Schwinge + Cesar Philippidis + + PR fortran/72741 + PR fortran/89433 + * openmp.c (gfc_match_oacc_routine): Handle repeated use of the + Fortran OpenACC 'routine' directive. + + PR fortran/72741 + * gfortran.h (enum oacc_routine_lop): Add OACC_ROUTINE_LOP_ERROR. + * openmp.c (gfc_oacc_routine_lop, gfc_match_oacc_routine): Use it. + * trans-decl.c (add_attributes_to_decl): Likewise. + + PR fortran/72741 + PR fortran/89433 + * openmp.c (gfc_match_oacc_routine): Accept intrinsic symbols. + +2019-02-26 Harald Anlauf + + PR fortran/89492 + * check.c (gfc_calculate_transfer_sizes): Handle cases where + storage size of elements of MOLD is 0. + +2019-02-26 Thomas Koenig + + PR fortran/89496 + * trans-types.c (get_formal_from_actual_arglist): If + the actual arglist has no expression, the corresponding + formal arglist is an alternate return. + +2019-02-26 Uroš Bizjak + + * invoke.texi (-ffpe-trap): Use @var for every item in the list. + +2019-02-26 Jakub Jelinek + + PR fortran/43210 + * trans-array.c (gfc_conv_array_initializer): Use RANGE_EXPR instead + of duplicating the initializer possibly many times. + +2019-02-24 Thomas Koenig + + PR fortran/89174 + * trans-expr.c (gfc_find_and_cut_at_last_class_ref): Add is_mold + to arguments. If we are dealing with a MOLD, call + gfc_expr_to_initialize(). + * trans-stmt.c (gfc_trans_allocate): For MOLD, pass is_mold=true + to gfc_find_and_cut_at_last_class_ref. + * trans.h (gfc_find_and_cut_at_last_class_ref): Add optional + argument is_mold with default false. + +2019-02-24 Harald Anlauf + + PR fortran/89266 + PR fortran/88326 + * target-memory.c (gfc_element_size): Return false if element size + cannot be determined; element size is returned separately. + (gfc_target_expr_size): Return false if expression size cannot be + determined; expression size is returned separately. + * target-memory.h: Adjust prototypes. + * check.c (gfc_calculate_transfer_sizes): Adjust references to + gfc_target_expr_size, gfc_element_size. + * arith.c (hollerith2representation): Likewise. + * class.c (find_intrinsic_vtab): Likewise. + * simplify.c (gfc_simplify_sizeof): Likewise. + +2019-02-23 Jerry DeLisle + + PR fortran/84387 + * trans-io.c (transfer_expr): Do not return if there are no + components to the derived type or class. + +2019-02-23 Paul Thomas + + PR fortran/88117 + * resolve.c (deferred_op_assign): Return if the lhs expression + has the pointer attribute. + * trans-expr.c (gfc_trans_assignment_1): Do not fix the string + length if the lhs expression has the pointer attribute. + +2019-02-23 Paul Thomas + + PR fortran/89385 + PR fortran/89366 + * decl.c (gfc_verify_c_interop_param): Restriction on string + length being one is lifted for F2018. + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): For scalar + characters with intent in, make a temporary and copy the result + of the expression evaluation into it. + (gfc_conv_procedure_call): Set a flag for character formal args + having a character length that is not unity. If the procedure + is bind C, call gfc_conv_gfc_desc_to_cfi_desc in this case. + Also, extend bind C calls to unconditionally convert both + pointers and allocatable expressions. + +2019-02-23 David Malcolm + Jakub Jelinek + + PR middle-end/88074 + * simplify.c (norm2_do_sqrt, gfc_simplify_norm2): Use + mpfr_number_p && !mpfr_zero_p instead of mpfr_regular_p. + (norm2_add_squared): Likewise. Use mp_exp_t rather than mpfr_exp_t. + +2019-02-22 Harald Anlauf + + PR fortran/83057 + * io.c (gfc_match_open): Fix logic in checks of OPEN statement + when NEWUNIT= is specified. + +2019-02-22 Steven G. Kargl + + PR fortran/89431 + * gfortran.texi: Fix documentation to match the implementation. + +2019-02-22 Thomas Schwinge + Cesar Philippidis + + PR fortran/72741 + * gfortran.h (oacc_routine_lop): New enum. + (symbol_attribute): Use it. + * openmp.c (gfc_oacc_routine_dims): Replace with... + (gfc_oacc_routine_lop): ... this new function. + (gfc_match_oacc_routine): Adjust. + * trans-decl.c (add_attributes_to_decl): Likewise. + +2019-02-22 Thomas Schwinge + + * openmp.c (gfc_match_oacc_declare): Revert earlier changes. + +2019-02-21 Thomas Koenig + + * dump-parse-tree.c (debug): Implement for gfc_expr *, + gfc_typespec *, gfc_typespec and gfc_symbol *. + +2019-02-21 Thomas Koenig + + PR fortran/86119 + * class.c (gfc_get_len_component): Add argument k for kind. + If the kind of the resulting expression is not equal to k, + convert it. + * gfortran.h (gfc_len_component): Adjust prototype. + * simplify.c (gfc_simplify_len): Pass kind to + gfc_get_len_component. + +2019-02-20 Martin Liska + + * gfortran.texi: Change singular to plural. + +2019-02-20 Martin Liska + + * gfortran.texi: Document Fortran header directive. + +2019-02-19 Thomas Koenig + + PR fortran/89384 + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): If the dummy + argument is contiguous and the actual argument may not be, + use gfc_conv_subref_array_arg. + +2019-02-19 Thomas Schwinge + + PR c/87924 + * openmp.c (gfc_match_omp_clauses): Add representation of wait clause + without argument as 'wait (GOMP_ASYNC_NOVAL)'. + +2019-02-18 Thomas Koenig + + PR fortran/87689 + * trans-decl.c (gfc_get_extern_function_decl): Add argument + actual_args and pass it through to gfc_get_function_type. + * trans-expr.c (conv_function_val): Add argument actual_args + and pass it on to gfc_get_extern_function_decl. + (conv_procedure_call): Pass actual arguments to conv_function_val. + * trans-types.c (get_formal_from_actual_arglist): New function. + (gfc_get_function_type): Add argument actual_args. Generate + formal args from actual args if necessary. + * trans-types.h (gfc_get_function_type): Add optional argument. + * trans.h (gfc_get_extern_function_decl): Add optional argument. + +2019-02-18 Martin Liska + + * decl.c (gfc_match_gcc_builtin): Add support for filtering + of builtin directive based on multilib ABI name. + +2019-02-17 Harald Anlauf + + PR fortran/88299 + * resolve.c (resolve_common_blocks,resolve_common_vars): Move + check for obsolent COMMON feature in F2018 to better place. + +2019-02-17 Harald Anlauf + + PR fortran/89077 + * decl.c (gfc_set_constant_character_len): Clear original string + representation after padding has been performed to target length. + +2019-02-16 Jakub Jelinek + + PR middle-end/88074 + * simplify.c (simplify_transformation_to_array): Run post_op + immediately after processing corresponding row, rather than at the + end. + (norm2_scale): New variable. + (add_squared): Rename to ... + (norm2_add_squared): ... this. Scale down operand and/or result + if needed. + (do_sqrt): Rename to ... + (norm2_do_sqrt): ... this. Handle the result == e case. Scale up + result and clear norm2_scale. + (gfc_simplify_norm2): Clear norm2_scale. Change add_squared to + norm2_add_squared and &do_sqrt to norm2_do_sqrt. Scale up result + and clear norm2_scale again. + +2019-02-17 Thomas Koenig + + PR fortran/71066 + * trans-decl.c (generate_coarray_sym_init): For an array + constructor in a DATA statement of a coarray variable, set the + rank to 1 to avoid confusion later on. If the constructor + contains only one value, use that for initiailizig. + +2019-02-14 Janne Blomqvist + + PR fortran/81552 + * gfortran.h (gfc_option_t): Make flag_init_integer_value a long. + * options.c (gfc_handle_option): Use strtol instead of atoi. + * invoke.texi: Document -finit-integer behavior in more detail. + +2019-02-14 Harald Anlauf + + PR fortran/88248 + * symbol.c: Move check for labeled DO statement from + gfc_define_st_label to gfc_reference_st_label. + +2019-02-14 Cesar Philippidis + + PR fortran/72715 + * openmp.c (resolve_oacc_nested_loops): Error on do concurrent + loops. + +2019-02-13 Martin Liska + + PR fortran/88649 + * resolve.c (resolve_operator): Initialize 't' right + after function entry. Skip switch (e->value.op.op) + for -fdec operands that become function calls. + +2019-02-10 Thomas Koenig + + PR fortran/71723 + * expr.c (gfc_check_assign): Add argument is_init_expr. If we are + looking at an init expression, issue error if the target is not a + TARGET and we are not looking at a procedure pointer. + * gfortran.h (gfc_check_assign): Add optional argument + is_init_expr. + +2019-02-09 Harald Anlauf + + PR fortran/89077 + * resolve.c (gfc_resolve_substring_charlen): Check substring + length for constantness prior to general calculation of length. + +2019-02-09 Paul Thomas + + PR fortran/89200 + * trans-array.c (gfc_trans_create_temp_array): Set the 'span' + field for derived types. + +2019-02-04 Harald Anlauf + + PR fortran/89077 + * decl.c (add_init_expr_to_sym): Copy length of string initializer + to declared symbol. + +2019-02-04 Martin Liska + + PR fortran/89185 + * resolve.c (resolve_ref): Remove breakout variable as + we need to prevent prev = &(*prev)->next to happen + with *prev == NULL. + +2019-02-04 Martin Liska + + PR fortran/88912 + * scanner.c (load_file): Report error for -fpre-include + file and do not ICE. + +2019-02-02 Dominique d'Humieres + + PR fortran/81344 + * invoke.texi: Document the behavior of repeated -ffpe-trap + and -ffpe-summary. + +2019-02-02 Thomas Koenig + + PR fortran/88298 + * arith.c (gfc_int2int): Do not warn if src->do_not_warn is set. + * gfortran.h (gfc_expr): Add flag do_not_warn. + * intrinsic.c (gfc_convert_type_warn): Set expr->do_not_warn if + no warning is desired. + +2019-02-02 Paul Thomas + + PR fortran/88393 + * trans-expr.c (gfc_conv_procedure_call): For derived entities, + passed in parentheses to class formals, invert the order of + copying allocatable components to taking the _data of the + class expression. + +2019-02-02 Paul Thomas + + PR fortran/88980 + * trans-array.c (gfc_array_init_size): Add element_size to the + arguments. + (gfc_array_allocate): Remove the recalculation of the size of + the element and use element_size from the call to the above. + Unconditionally set the span field of the descriptor. + +2019-02-02 Paul Thomas + + PR fortran/88685 + * expr.c (is_subref_array): Move the check for class pointer + dummy arrays to after the reference check. If we haven't seen + an array reference other than an element and a component is not + class or derived, return false. + +2019-02-01 Jakub Jelinek + + PR fortran/83246 + PR fortran/89084 + * trans-decl.c (generate_local_decl): Add referenced FL_PARAMETERs + if sym->ns->construct_entities rather than if + sym->ns->parent->code->op == EXEC_BLOCK. + +2019-01-31 Thomas Koenig + + PR fortran/88669 + * resolve.c (resolve_component): If the reference is a BT_CLASS, + copy the contiguous attribute from the reference and use the + correct attributes. + +2019-01-30 Jerry DeLisle + + PR fortran/52564 + * io.c (match_io): Add check for comma after '*' without subsequent + IO list. + +2019-01-30 Dominique d'Humieres + + PR fortran/52884 + * invoke.texi: Document the promotion of double precision + constants. + +2019-01-29 Thomas Koenig + + PR fortran/57048 + * interface.c (gfc_compare_types): If a derived type and an + integer both have a derived type, and they are identical, + this is a C binding type and compares equal. + +2019-01-26 Harald Anlauf + + PR fortran/57553 + * expr.c (check_inquiry): Add list of inquiry functions allowed in + constant expressions for F2008+. + +2019-01-25 Steven G. Kargl + + PR fortran/85780 + * decl.c (gfc_match_subroutine): Check for conflict between BIND(C) + and alternative return. + +2019-01-24 Paul Thomas + + PR fortran/88929 + * trans-array.c (gfc_conv_descriptor_elem_len): New function. + * trans-array.h : Add prototype for above. + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Take account of + assumed rank arrays being flagged by rank = -1 in expressions. + Intent in arrays need a pointer to a copy of the data to be + assigned to the descriptor passed for conversion. This should + then be freed, together with the CFI descriptor on return from + the C call. + +2019-01-22 Harald Anlauf + + PR fortran/88579 + * trans-expr.c (gfc_conv_power_op): Handle cases of (2**e) ** integer + and (- 2**e) ** integer. + +2019-01-19 Dominique d'Humieres + + PR fortran/37835 + * resolve.c (resolve_types): Add !flag_automatic. + * symbol.c (gfc_add_save): Silence warnings. + +2019-01-19 Steven G. Kargl + + PR fortran/77960 + * io.c (match_io_element): input-item cannot be an external function. + +2018-01-19 Thomas Koenig + Paul Thomas + + PR fortran/56789 + * trans-expr.c (gfc_conv_procedure_call): Call + gfc_conv_subref_array_arg if the formal arg is contiguous + and the actual arg may not be. + +2019-01-17 Thomas Koenig + + PR fortran/88871 + * resolve.c (resolve_ref): Fix logic for removal of + reference. + +2019-01-19 Jakub Jelinek + + PR fortran/88902 + * trans-decl.c (gfc_get_symbol_decl): Don't add length to function + or parent function if it has been added there already. + +2019-01-15 Thomas Koenig + + PR fortran/43136 + * resolve.c (resolve_array_ref): Add equal_length argument; set it + if the length of the substring equals that of the orignal + variable. + (resolve_ref): Remove the substring if it is equal in length to + the original variable, unless it is an EXPR_SUBSTRING). + +2019-01-15 Steven G. Kargl + + PR fortran/81849 + * resolve.c (resolve_symbol): Host associated varaibles can appear + in the specification statement of a RESULT array. + +2019-01-15 Paul Thomas + + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): Deal with exprs + that are indirect references; ie. dummy arguments. + +2019-01-13 Dominique d'Humieres + + PR fortran/88803 + * gfortran.texi: Replace @xref with @ref and adjust the sentence. + +2019-01-13 Thomas Koenig + + PR fortran/57992 + * trans-array.c (gfc_conv_array_parameter): Do not pack/unpack + functions with contiguous results. + +2019-01-13 Thomas Koenig + + PR fortran/59345 + * trans-array.c (gfc_conv_array_parameter): Remove TODO. Do not + pack/unpack results of functions which return an explicit-shaped + or allocatable array. + +2019-01-12 Steven G. Kargl + + PR fortran/61765 + * resolve.c (gfc_verify_binding_labels): Break if-elseif-elseif + structure into independent if's with a return to simplify logic. + Avoid a check for ENTRY name with bind(c). + +2019-01-12 Paul Thomas + + * gfortran.texi: Add description in sections on TS 29113 and + further interoperability with C. + * trans-array.c (gfc_conv_descriptor_attribute): New function. + (gfc_get_dataptr_offset): Remove static function attribute. + * trans-array.h: Add prototypes for above functions. + * trans-decl.c: Add declarations for the library functions + cfi_desc_to_gfc_desc and gfc_desc_to_cfi_desc. + * trans-expr.c (gfc_conv_gfc_desc_to_cfi_desc): New function. + (gfc_conv_procedure_call): Call it for scalar and array actual + arguments, when the formal arguments are bind_c with assumed + shape or assumed rank. + * trans.h: External declarations for gfor_fndecl_cfi_to_gfc + and gfor_fndecl_gfc_to_cfi. + +2019-01-11 Steven G. Kargl + + PR fortran/35031 + * decl.c (gfc_match_entry): Check for F2018:C1546. Fix nearby + mis-indentation. + +2019-01-11 Jakub Jelinek + + PR middle-end/85956 + PR lto/88733 + * trans-openmp.c: Include attribs.h. + (gfc_walk_alloc_comps, gfc_omp_clause_linear_ctor): Handle + VAR_DECL max bound with "omp dummy var" attribute like NULL or + error_mark_node - recompute number of elts independently. + +2019-01-11 Thomas Koenig + + PR fortran/59345 + * trans-array.c (gfc_conv_parameter_array): Temporary + arrays generated for expressions do not need to be repacked. + +2019-01-10 Steven G. Kargl + + PR fortran/86322 + * decl.c (top_var_list): Set locus of expr. + (gfc_match_data): Detect pointer on non-rightmost part-refs. + +2019-01-09 Steven G. Kargl + + PR fortran/88376 + * resolve.c (is_illegal_recursion): Remove an assert(). + +2019-01-09 Sandra Loosemore + + PR other/16615 + * expr.c: Change "can not" to "cannot". + +2019-01-09 Sandra Loosemore + + PR other/16615 + * class.c: Mechanically replace "can not" with "cannot". + * decl.c: Likewise. + * expr.c: Likewise. + * gfc-internals.texi: Likewise. + * intrinsic.texi: Likewise. + * invoke.texi: Likewise. + * io.c: Likewise. + * match.c: Likewise. + * parse.c: Likewise. + * primary.c: Likewise. + * resolve.c: Likewise. + * symbol.c: Likewise. + * trans-array.c: Likewise. + * trans-decl.c: Likewise. + * trans-intrinsic.c: Likewise. + * trans-stmt.c: Likewise. + +2019-01-09 Thomas Koenig + + PR fortran/68426 + * simplify.c (gfc_simplify_spread): Also simplify if the + type of source is an EXPR_STRUCTURE. + +2019-01-08 Janus Weil + + PR fortran/88047 + * class.c (gfc_find_vtab): For polymorphic typespecs, the components of + the class container may not be available (in case of invalid code). + +2019-01-08 Richard Biener + + PR fortran/88611 + * trans-expr.c (gfc_conv_initializer): For ISOCBINDING_NULL_* + directly build the expected GENERIC tree. + +2019-01-07 Thomas Koenig + Harald Anlauf + Tobias Burnus + + PR fortran/45424 + * check.c (gfc_check_is_contiguous): New function. + * expr.c (gfc_is_not_contiguous): New function. + * gfortran.h (gfc_isym_id): Add GFC_ISYM_IS_CONTIGUOUS. + Add prototype for gfc_is_not_contiguous. + * intrinsic.c (do_ts29113_check): Add GFC_ISYM_IS_CONTIGUOUS. + (add_function): Add is_contiguous. + * intrinsic.h: Add prototypes for gfc_check_is_contiguous, + gfc_simplify_is_contiguous and gfc_resolve_is_contiguous. + * intrinsic.texi: Add IS_CONTIGUOUS. + * iresolve.c (gfc_resolve_is_contiguous): New function. + * simplify.c (gfc_simplify_is_contiguous): New function. + * trans-decl.c (gfor_fncecl_is_contiguous0): New variable. + (gfc_build_intrinsic_function_decl): Add it. + * trans-intrinsic.c (gfc_conv_intrinsic_is_contiguous): New + function. + (gfc_conv_intrinsic_function): Handle GFC_ISYM_IS_CONTIGUOUS. + +2019-01-06 Thomas Koenig + + PR fortran/88658 + * gfortran.h: Add macro gfc_real_4_kind + * simplify.c (simplify_min_max): Special case for the types of + AMAX0, AMIN0, MAX1 and MIN1, which actually change the types of + their arguments. + +2019-01-05 Janus Weil + + PR fortran/88009 + * class.c (gfc_find_derived_vtab): Mark the _final component as + artificial. + (find_intrinsic_vtab): Ditto. Also add an extra check to avoid + dereferencing a null pointer and adjust indentation. + * resolve.c (resolve_fl_variable): Add extra check to avoid + dereferencing a null pointer. Move variable declarations to local scope. + (resolve_fl_procedure): Add extra check to avoid dereferencing a null + pointer. + * symbol.c (check_conflict): Suppress errors for artificial symbols. + +2019-01-01 Steven G. Kargl + + * parse.c (decode_statement): Suppress "Unclassifiable statement" + error if previous error messages were emittes. + +2019-01-01 Thomas Koenig + + PR fortran/82743 + * primary.c (gfc_convert_to_structure_constructor): If a character + in a constructor is too long, add a warning with + -Wcharacter-truncation. + +2019-01-01 Jakub Jelinek + + Update copyright years. + + * gfortranspec.c (lang_specific_driver): Update copyright notice + dates. + * gfc-internals.texi: Bump @copying's copyright year. + * gfortran.texi: Ditto. + * intrinsic.texi: Ditto. + * invoke.texi: Ditto. + +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. diff --git a/gcc/fortran/gfc-internals.texi b/gcc/fortran/gfc-internals.texi index 2c30aa60d4c..e74d5d60c1d 100644 --- a/gcc/fortran/gfc-internals.texi +++ b/gcc/fortran/gfc-internals.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gfc-internals.info -@set copyrights-gfortran 2007-2019 +@set copyrights-gfortran 2007-2020 @include gcc-common.texi diff --git a/gcc/fortran/gfortran.texi b/gcc/fortran/gfortran.texi index 96be58b992d..4cf8b3a5c24 100644 --- a/gcc/fortran/gfortran.texi +++ b/gcc/fortran/gfortran.texi @@ -1,7 +1,7 @@ \input texinfo @c -*-texinfo-*- @c %**start of header @setfilename gfortran.info -@set copyrights-gfortran 1999-2019 +@set copyrights-gfortran 1999-2020 @include gcc-common.texi diff --git a/gcc/fortran/gfortranspec.c b/gcc/fortran/gfortranspec.c index 5b0fe4d7a5f..4c7685f30af 100644 --- a/gcc/fortran/gfortranspec.c +++ b/gcc/fortran/gfortranspec.c @@ -278,7 +278,7 @@ lang_specific_driver (struct cl_decoded_option **in_decoded_options, case OPT__version: printf ("GNU Fortran %s%s\n", pkgversion_string, version_string); - printf ("Copyright %s 2019 Free Software Foundation, Inc.\n", + printf ("Copyright %s 2020 Free Software Foundation, Inc.\n", _("(C)")); fputs (_("This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), diff --git a/gcc/fortran/intrinsic.texi b/gcc/fortran/intrinsic.texi index 7e01e94fd45..823cb9cef30 100644 --- a/gcc/fortran/intrinsic.texi +++ b/gcc/fortran/intrinsic.texi @@ -1,5 +1,5 @@ @ignore -Copyright (C) 2005-2019 Free Software Foundation, Inc. +Copyright (C) 2005-2020 Free Software Foundation, Inc. This is part of the GNU Fortran manual. For copying conditions, see the file gfortran.texi. diff --git a/gcc/fortran/invoke.texi b/gcc/fortran/invoke.texi index 299fc9f8ff4..622123b5ae2 100644 --- a/gcc/fortran/invoke.texi +++ b/gcc/fortran/invoke.texi @@ -1,10 +1,10 @@ -@c Copyright (C) 2004-2019 Free Software Foundation, Inc. +@c Copyright (C) 2004-2020 Free Software Foundation, Inc. @c This is part of the GNU Fortran manual. @c For copying conditions, see the file gfortran.texi. @ignore @c man begin COPYRIGHT -Copyright @copyright{} 2004-2019 Free Software Foundation, Inc. +Copyright @copyright{} 2004-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/gcc/gcc.c b/gcc/gcc.c index 4428d50c390..a5d132da4ac 100644 --- a/gcc/gcc.c +++ b/gcc/gcc.c @@ -8008,7 +8008,7 @@ driver::maybe_print_and_exit () const { printf (_("%s %s%s\n"), progname, pkgversion_string, version_string); - printf ("Copyright %s 2019 Free Software Foundation, Inc.\n", + printf ("Copyright %s 2020 Free Software Foundation, Inc.\n", _("(C)")); fputs (_("This is free software; see the source for copying conditions. There is NO\n\ warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n\n"), diff --git a/gcc/gcov-dump.c b/gcc/gcov-dump.c index 67b1e88a5bc..e252b865ee9 100644 --- a/gcc/gcov-dump.c +++ b/gcc/gcov-dump.c @@ -138,7 +138,7 @@ static void print_version (void) { printf ("gcov-dump %s%s\n", pkgversion_string, version_string); - printf ("Copyright (C) 2019 Free Software Foundation, Inc.\n"); + printf ("Copyright (C) 2020 Free Software Foundation, Inc.\n"); printf ("This is free software; see the source for copying conditions.\n" "There is NO warranty; not even for MERCHANTABILITY or \n" "FITNESS FOR A PARTICULAR PURPOSE.\n\n"); diff --git a/gcc/gcov-tool.c b/gcc/gcov-tool.c index ce96db0f42c..88e7168aa4d 100644 --- a/gcc/gcov-tool.c +++ b/gcc/gcov-tool.c @@ -525,7 +525,7 @@ static void print_version (void) { fnotice (stdout, "%s %s%s\n", progname, pkgversion_string, version_string); - fnotice (stdout, "Copyright %s 2019 Free Software Foundation, Inc.\n", + fnotice (stdout, "Copyright %s 2020 Free Software Foundation, Inc.\n", _("(C)")); fnotice (stdout, _("This is free software; see the source for copying conditions.\n" diff --git a/gcc/gcov.c b/gcc/gcov.c index 66eac9051ea..3af5df2ab3e 100644 --- a/gcc/gcov.c +++ b/gcc/gcov.c @@ -923,7 +923,7 @@ static void print_version (void) { fnotice (stdout, "gcov %s%s\n", pkgversion_string, version_string); - fprintf (stdout, "Copyright %s 2019 Free Software Foundation, Inc.\n", + fprintf (stdout, "Copyright %s 2020 Free Software Foundation, Inc.\n", _("(C)")); fnotice (stdout, _("This is free software; see the source for copying conditions.\n" diff --git a/gcc/go/ChangeLog b/gcc/go/ChangeLog index eb1a03bab89..f922b53b569 100644 --- a/gcc/go/ChangeLog +++ b/gcc/go/ChangeLog @@ -1,3 +1,7 @@ +2020-01-01 Jakub Jelinek + + * gccgo.texi: Bump @copyrights-go year. + 2019-11-12 Martin Liska * go-lang.c (go_langhook_post_options): diff --git a/gcc/go/gccgo.texi b/gcc/go/gccgo.texi index 92fd74501ec..d4b8279b83e 100644 --- a/gcc/go/gccgo.texi +++ b/gcc/go/gccgo.texi @@ -12,7 +12,7 @@ @include gcc-common.texi @c Copyright years for this manual. -@set copyrights-go 2010-2019 +@set copyrights-go 2010-2020 @copying @c man begin COPYRIGHT diff --git a/libgomp/ChangeLog b/libgomp/ChangeLog index a18868ba3fd..495d23a8576 100644 --- a/libgomp/ChangeLog +++ b/libgomp/ChangeLog @@ -1,3 +1,7 @@ +2020-01-01 Jakub Jelinek + + * libgomp.texi: Bump @copying's copyright year. + 2019-12-31 Ayush Mittal PR libgomp/93065 diff --git a/libgomp/libgomp.texi b/libgomp/libgomp.texi index 5f8f1beedaf..d3a5b3102ff 100644 --- a/libgomp/libgomp.texi +++ b/libgomp/libgomp.texi @@ -7,7 +7,7 @@ @copying -Copyright @copyright{} 2006-2019 Free Software Foundation, Inc. +Copyright @copyright{} 2006-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or diff --git a/libitm/ChangeLog b/libitm/ChangeLog index 53085d1bc14..7b2bd055281 100644 --- a/libitm/ChangeLog +++ b/libitm/ChangeLog @@ -1,3 +1,7 @@ +2020-01-01 Jakub Jelinek + + * libitm.texi: Bump @copying's copyright year. + 2019-12-03 Szabolcs Nagy PR libgomp/91938 diff --git a/libitm/libitm.texi b/libitm/libitm.texi index a84ca6e0d7d..30b166be66b 100644 --- a/libitm/libitm.texi +++ b/libitm/libitm.texi @@ -7,7 +7,7 @@ @copying -Copyright @copyright{} 2011-2019 Free Software Foundation, Inc. +Copyright @copyright{} 2011-2020 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or diff --git a/libquadmath/ChangeLog b/libquadmath/ChangeLog index b2cbf9a5fc7..552be9eeb52 100644 --- a/libquadmath/ChangeLog +++ b/libquadmath/ChangeLog @@ -1,3 +1,7 @@ +2020-01-01 Jakub Jelinek + + * libquadmath.texi: Bump @copying's copyright year. + 2019-09-27 Maciej W. Rozycki * configure: Regenerate. diff --git a/libquadmath/libquadmath.texi b/libquadmath/libquadmath.texi index 131a2ccf449..253895f7ef9 100644 --- a/libquadmath/libquadmath.texi +++ b/libquadmath/libquadmath.texi @@ -6,7 +6,7 @@ @c %**end of header @copying -Copyright @copyright{} 2010-2019 Free Software Foundation, Inc. +Copyright @copyright{} 2010-2020 Free Software Foundation, Inc. @quotation Permission is granted to copy, distribute and/or modify this document -- 2.30.2