+2021-09-20 Andrew MacLeod <amacleod@redhat.com>
+
+ * gimple-range-fold.cc (fold_using_range::range_of_phi): Ignore
+ undefined edges, apply an equivalence if appropriate.
+ * gimple-range-gori.cc (gori_compute::outgoing_edge_range_p): Return
+ UNDEFINED if EDGE_EXECUTABLE is not set.
+ * gimple-range.cc (gimple_ranger::gimple_ranger): Set all edges
+ as EXECUTABLE upon startup.
+ (gimple_ranger::range_on_edge): Return UNDEFINED for edges without
+ EDGE_EXECUTABLE set.
+ * vr-values.c (set_and_propagate_unexecutable): New.
+ (simplify_using_ranges::fold_cond): Call set_and_propagate.
+ (simplify_using_ranges::simplify_switch_using_ranges): Ditto.
+ * vr-values.h: Add prototype.
+
+2021-09-20 Andrew MacLeod <amacleod@redhat.com>
+
+ * value-relation.cc (equiv_oracle::register_initial_def): New.
+ (equiv_oracle::register_relation): Call register_initial_def.
+ (equiv_oracle::add_equiv_to_block): New. Split register_relation.
+ (relation_oracle::register_stmt): Check def block of PHI arguments.
+ * value-relation.h (equiv_oracle): Add new prototypes.
+
+2021-09-20 Matthias Kretz <m.kretz@gsi.de>
+
+ * cppbuiltin.c (define_builtin_macros_for_compilation_flags):
+ Define __RECIPROCAL_MATH__, __NO_SIGNED_ZEROS__,
+ __NO_TRAPPING_MATH__, __ASSOCIATIVE_MATH__, and
+ __ROUNDING_MATH__ according to their corresponding flags.
+ * doc/cpp.texi: Document __RECIPROCAL_MATH__,
+ __NO_SIGNED_ZEROS__, __NO_TRAPPING_MATH__, __ASSOCIATIVE_MATH__,
+ and __ROUNDING_MATH__.
+
+2021-09-20 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-stmts.c (vectorizable_load): Use the vectype
+ from the SLP node.
+
+2021-09-20 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-data-refs.c (vect_duplicate_ssa_name_ptr_info):
+ Do not compute alignment of the vectorized access here.
+
+2021-09-20 Richard Biener <rguenther@suse.de>
+
+ * tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
+ Store -1 for runtime alias peeling iterations.
+
+2021-09-20 Richard Biener <rguenther@suse.de>
+
+ * config.gcc: Obsolete hppa[12]*-*-hpux10* and hppa[12]*-*-hpux11*.
+
+2021-09-20 Thomas Schwinge <thomas@codesourcery.com>
+
+ * input.c (string_concat_db::record_string_concatenation)
+ (string_concat_db::get_string_concatenation): Skip for
+ 'RESERVED_LOCATION_P'.
+
+2021-09-20 Richard Biener <rguenther@suse.de>
+
+ PR tree-optimization/65206
+ * tree-data-ref.h (struct data_reference): Add alt_indices,
+ order it last.
+ * tree-data-ref.c (free_data_ref): Release alt_indices.
+ (dr_analyze_indices): Work on struct indices and get DR_REF as tree.
+ (create_data_ref): Adjust.
+ (initialize_data_dependence_relation): Split into head
+ and tail. When the base objects fail to match up try
+ again with pointer-based analysis of indices.
+ * tree-vectorizer.c (vec_info_shared::check_datarefs): Do
+ not compare the lazily computed alternate set of indices.
+
+2021-09-20 Iain Sandoe <iain@sandoe.co.uk>
+
+ * gcc.c: Test for execute OK when we find the
+ programs for assembler linker and dsymutil and those
+ were specified at configure-time.
+
2021-09-19 Martin Sebor <msebor@redhat.com>
PR middle-end/102403
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * inline.adb (Has_Excluded_Declaration): Remove redundant guard;
+ the guarded code will call First on a No_List, which is
+ well-defined and gives Empty.
+
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * inline.adb (Has_Excluded_Declaration): Rename and reduce scope
+ of a local variable.
+
+2021-09-20 Bob Duff <duff@adacore.com>
+
+ * uintp.ads, uintp.adb (Present, No): New functions for
+ comparing with No_Uint.
+ * checks.adb, einfo-utils.adb, exp_aggr.adb, exp_attr.adb,
+ exp_ch3.adb, exp_ch4.adb, exp_dbug.adb, exp_disp.adb,
+ exp_util.adb, repinfo.adb, repinfo-input.adb, scn.adb,
+ sem_attr.adb, sem_ch13.adb, sem_eval.adb, sem_util.adb,
+ sinfo-utils.adb, treepr.adb: Use Present (...) instead of "...
+ /= No_Uint", and No (...) instead of "... = No_Uint".
+
+2021-09-20 Claire Dross <dross@adacore.com>
+
+ * libgnat/s-ficobl.ads: The entire package has a SPARK_Mode =>
+ Off aspect.
+
+2021-09-20 Doug Rupp <rupp@adacore.com>
+
+ * libgnat/a-calend.adb: Remove time_t, replace with OS_Time.
+ * libgnat/s-os_lib.ads: Fix comments regarding time_t conversion
+ functions to reflect the use of To_Ada in in Ada.Calendar
+ package body.
+ * sysdep.c (__gnat_localtime_tzoff): Use OS_Time instead of
+ time_t.
+
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_res.adb (Resolve_Actual): Remove
+
+2021-09-20 Bob Duff <duff@adacore.com>
+
+ * einfo-utils.ads, einfo-utils.adb, fe.h, einfo.ads,
+ gen_il-fields.ads: Remove unused and no-longer-used routines.
+ Move related routines together. Rewrite incorrect
+ documentation, and documentation that will be incorrect when
+ e.g. Esize-related routines are fixed. Remove unused field
+ Normalized_Position_Max.
+ * cstand.adb, exp_pakd.adb, freeze.adb,
+ gen_il-gen-gen_entities.adb, itypes.adb, layout.adb,
+ sem_ch10.adb, sem_ch12.adb, sem_ch13.adb, sem_ch3.adb,
+ sem_ch7.adb, sem_ch8.adb, sem_ch9.adb, sem_prag.adb,
+ sem_util.adb, ttypes.ads: Update calls to routines removed from
+ or renamed in Einfo.Utils.
+ * uintp.ads (Upos): Fix this subtype, which was unintentionally
+ declared to include Uint_0.
+
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch7.adb (Expand_N_Package_Declaration): Fix wording in
+ comment.
+ * exp_disp.adb (Mark_DT): Remove unnecessary initialization of
+ I_Depth.
+
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb (Add_Contract_Item): Accept volatile-related
+ properties on constants.
+ (Analyze_Object_Contract): Check external properties on
+ constants; accept volatile constants.
+ (Check_Type_Or_Object_External_Properties): Replace "variable"
+ with "object" in error messages; replace Decl_Kind with a local
+ constant.
+ * sem_prag.adb (Analyze_Pragma): Accept volatile-related
+ properties on constants.
+
+2021-09-20 Pierre-Alexandre Bazin <bazin@adacore.com>
+
+ * libgnat/a-strfix.adb ("*"): Added loop invariants and lemmas
+ for proof.
+ (Delete): Added assertions for proof, and conditions to avoid
+ overflow.
+ (Head): Added loop invariant.
+ (Insert): Same as Delete.
+ (Move): Declared with SPARK_Mode Off.
+ (Overwrite): Added assertions for proof, and conditions to avoid
+ overflow.
+ (Replace_Slice): Added assertions for proof, and conditions to
+ avoid overflow.
+ (Tail): Added loop invariant and avoided overflows.
+ (Translate): Added loop invariants.
+ (Trim): Ensured empty strings returned start at 1.
+ * libgnat/a-strfix.ads (Index): Rewrote contract cases for
+ easier proof.
+ (Index_Non_Blank): Separated the null string case.
+ (Count): Specified Mapping shouldn't be null.
+ (Find_Token): Specified Source'First should be Positive when no
+ From is given.
+ (Translate): Specified Mapping shouldn't be null.
+ ("*"): Rewrote postcondition for easier proof.
+ * libgnat/a-strsea.adb (Belongs): Added postcondition.
+ (Count): Rewrote loops and added loop invariants to avoid
+ overflows.
+ (Find_Token): Added loop invariants.
+ (Index): Rewrote loops to avoid overflows and added loop
+ invariants for proof.
+ (Index_Non_Blank): Added loop invariants.
+ (Is_Identity): New function isolated without SPARK_Mode.
+ * libgnat/a-strsea.ads: Fix starting comment as package is no
+ longer private.
+ (Match): Declared ghost expression function Match.
+ (Is_Identity): Described identity in the postcondition.
+ (Index, Index_Non_Blank, Count, Find_Token): Added contract from
+ a-strfix.ads.
+
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Resolve_Aspect_Aggregate): Move comments after
+ specs; fix typo in header box; cleanup whitespace.
+
+2021-09-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-objrea.adb (Get_Load_Address): Return 0 for ELF.
+
+2021-09-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * adaint.c (__gnat_get_executable_load_address): Add Win32 support.
+ * libgnat/s-objrea.ads (Get_Xcode_Bounds): Fix typo in comment.
+ (Object_File): Minor reformatting.
+ (ELF_Object_File): Uncomment predicate.
+ (PECOFF_Object_File): Likewise.
+ (XCOFF32_Object_File): Likewise.
+ * libgnat/s-objrea.adb: Minor reformatting throughout.
+ (Get_Load_Address): Implement for PE-COFF.
+ * libgnat/s-dwalin.ads: Remove clause for System.Storage_Elements
+ and use consistent wording in comments.
+ (Dwarf_Context): Set type of Low, High and Load_Address to Address.
+ * libgnat/s-dwalin.adb (Get_Load_Displacement): New function.
+ (Is_Inside): Call Get_Load_Displacement.
+ (Low_Address): Likewise.
+ (Open): Adjust to type change.
+ (Aranges_Lookup): Change type of Addr to Address.
+ (Read_Aranges_Entry): Likewise for Start and adjust.
+ (Enable_Cach): Adjust to type change.
+ (Symbolic_Address): Change type of Addr to Address.
+ (Symbolic_Traceback): Call Get_Load_Displacement.
+
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_disp.adb (Make_DT): Move call to Set_Has_Dispatch_Table,
+ so it is executed regardless of the Generate_SCIL mode.
+
+2021-09-20 Ed Schonberg <schonberg@adacore.com>
+
+ * exp_util.ads (Force_Evaluation): Add formal parameter
+ Discr_Number, to indicate discriminant expression for which an
+ external name must be created.
+ (Remove_Side_Effects): Ditto.
+ * exp_util.adb (Force_Evaluation): Call Remove_Side_Effects with
+ added parameter.
+ (Remove_Side_Effects, Build_Temporary): If Discr_Number is
+ positive, create an external name with suffix DISCR and the
+ given discriminant number, analogous to what is done for
+ temporaries for array type bounds.
+ * sem_ch3.adb (Process_Discriminant_Expressions): If the
+ constraint is for an object or component declaration and the
+ corresponding entity may be visible in another unit, invoke
+ Force_Evaluation with the new parameter.
+
+2021-09-20 Arnaud Charlet <charlet@adacore.com>
+
+ * gen_il-internals.ads (Invalid_Val): Remove, unused and
+ generates warnings.
+
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_aggr.adb, exp_ch4.adb, exp_ch5.adb, sprint.adb: Refine
+ types of local constants.
+
+2021-09-20 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference): Fold
+ Preelaborable_Initialization attribute in cases where it hasn't
+ been folded by the analyzer.
+ * exp_disp.adb (Original_View_In_Visible_Part): This function is
+ removed and moved to sem_util.adb.
+ * sem_attr.adb (Attribute_22): Add
+ Attribute_Preelaborable_Initialization as an Ada 2022 attribute.
+ (Analyze_Attribute, Attribute_Preelaborable_Initialization):
+ Check that the prefix of the attribute is either a formal
+ private or derived type, or a composite type declared within the
+ visible part of a package or generic package.
+ (Eval_Attribute): Perform folding of
+ Preelaborable_Initialization attribute based on
+ Has_Preelaborable_Initialization applied to the prefix type.
+ * sem_ch3.adb (Resolve_Aspects): Add specialized code for
+ Preelaborable_Initialization used at the end of a package
+ visible part for setting Known_To_Have_Preelab_Init on types
+ that are specified with True or that have a conjunction of one
+ or more P_I attributes applied to formal types.
+ * sem_ch7.adb (Analyze_Package_Specification): On call to
+ Has_Preelaborable_Initialization, pass True for new formal
+ Formal_Types_Have_Preelab_Init, so that error checking treats
+ subcomponents that are declared within types in generics as
+ having preelaborable initialization when the subcomponents are
+ of formal types.
+ * sem_ch13.adb (Analyze_Aspects_At_Freeze_Point): Add test for
+ P_I to prevent calling Make_Pragma_From_Boolean_Aspect, since
+ this aspect is handled specially and the
+ Known_To_Have_Preelab_Init flag will get set on types that have
+ the aspect by other means.
+ (Analyze_Aspect_Specifications.Analyze_One_Aspect): Add test for
+ Aspect_Preelaborable_Initialization for allowing the aspect to
+ be specified on formal type declarations.
+ (Is_Operational_Item): Treat Attribute_Put_Image as an
+ operational attribute. The need for this was encountered while
+ working on these changes.
+ * sem_util.ads (Has_Preelaborable_Initialization): Add
+ Formal_Types_Have_Preelab_Init as a new formal parameter that
+ defaults to False.
+ (Is_Conjunction_Of_Formal_Preelab_Init_Attributes): New
+ function.
+ (Original_View_In_Visible_Part): Moved here from exp_disp.adb,
+ so it can be called by Analyze_Attribute.
+ * sem_util.adb (Has_Preelaborable_Initialization): Return True
+ for formal private and derived types when new formal
+ Formal_Types_Have_Preelab_Init is True, and pass along the
+ Formal_Types_Have_Preelab_Init flag in the array component case.
+ (Check_Components): Pass along Formal_Types_Have_Preelab_Init
+ flag on call to Has_Preelaborable_Initialization.
+ (Is_Conjunction_Of_Formal_Preelab_Init_Attributes): New function
+ that returns True when passed an expression that includes one or
+ more attributes for Preelaborable_Initialization applied to
+ prefixes that denote formal types.
+ (Is_Formal_Preelab_Init_Attribute): New utility function nested
+ within Is_Conjunction_Of_Formal_Preelab_Init_Attributes that
+ determines whether a node is a P_I attribute applied to a
+ generic formal type.
+ (Original_View_In_Visible_Part): Moved here from exp_util.adb,
+ so it can be called by Analyze_Attribute.
+ * snames.ads-tmpl: Add note near the start of spec giving
+ details about what needs to be done when adding a name that
+ corresponds to both an attribute and a pragma. Delete existing
+ occurrence of Name_Preelaborable_Initialization, and add a note
+ comment in the list of Name_* constants at that place,
+ indicating that it's included in type Pragma_Id, etc., echoing
+ other such comments for names that are both an attribute and a
+ pragma. Insert Name_Preelaborable_Initialization in the
+ alphabetized set of Name_* constants corresponding to
+ attributes (between First_Attribute_Name and
+ Last_Attribute_Name).
+ (type Attribute_Id): Add new literal
+ Attribute_Preelaborable_Initialization.
+ (type Pragma_Id): Move Pragma_Preelaborable_Initialization from
+ its current position to the end of the type, in the special set
+ of pragma literals that have corresponding atttributes. Add to
+ accompanying comment, indicating that functions Get_Pragma_Id
+ and Is_Pragma_Name need to be updated when adding a pragma
+ literal to the special set.
+ * snames.adb-tmpl (Get_Pragma_Id): Add case alternative for
+ Pragma_Preelaborable_Initialization.
+ (Is_Pragma_Name): Add test for
+ Name_Preelaborable_Initialization.
+
+2021-09-20 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_ch4.adb (Finc_Non_Universal_Interpretations): Fix check.
+
+2021-09-20 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch3.adb (Build_Discriminant_Constraints): Exit once a
+ first discriminant is found and the Discrim_Present flag is set.
+
+2021-09-20 Bob Duff <duff@adacore.com>
+
+ * gnat1drv.adb (Gnat1drv): Avoid calling List_Rep_Info in
+ Generate_SCIL and GNATprove_Mode.
+ * repinfo.adb (List_Common_Type_Info): Fix comment.
+
+2021-09-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * libgnat/s-dwalin.ads: Remove clause for Ada.Exceptions.Traceback,
+ add clause for System.Traceback_Entries and alphabetize.
+ (AET): Delete.
+ (STE): New package renaming.
+ (Symbolic_Traceback): Adjust.
+ * libgnat/s-dwalin.adb: Remove clauses for Ada.Exceptions.Traceback
+ and System.Traceback_Entries.
+ (Symbolic_Traceback): Adjust.
+
+2021-09-20 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_ch4.adb (Find_Non_Universal_Interpretations): Check if
+ types are compatible before adding interpretation.
+
+2021-09-20 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Type_Conversion): Add guard to protect
+ against calculating accessibility levels against internal
+ compiler-generated types.
+
+2021-09-20 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * sem_dim.adb (Dimensions_Msg_Of): Capitalize comment.
+
+2021-09-20 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * adabkend.adb (Scan_Back_End_Switches): Replace switch-scanning
+ logic with call to Backend_Utils.Scan_Common_Back_End_Switches.
+ * back_end.adb (Scan_Back_End_Switches): Replace switch-scanning
+ logic with call to Backend_Utils.Scan_Common_Back_End_Switches.
+ * backend_utils.adb: New file.
+ * backend_utils.ads: New file.
+ * gcc-interface/Make-lang.in: Add ada/backend_utils.o.
+
+2021-09-20 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * atree.adb (Get_32_Bit_Field): Declare result before returning.
+
+2021-09-20 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * exp_ch7.adb (Expand_N_Package_Body): Replace
+ Build_And_Insert_Cuda_Initialization with Expand_CUDA_Package.
+ * gnat_cuda.adb (Expand_CUDA_Package): New procedure.
+ (Build_And_Insert_Cuda_Initialization): Make internal.
+ * gnat_cuda.ads (Expand_CUDA_Package): New procedure.
+ (Build_And_Insert_Cuda_Initialization): Remove from spec.
+
+2021-09-20 Ghjuvan Lacambre <lacambre@adacore.com>
+
+ * usage.adb (Usage): Update -gnatw.c messages.
+
+2021-09-20 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_aux.adb (Is_By_Reference_Type): Do not test Error_Posted.
+
2021-09-15 Alexandre Oliva <oliva@adacore.com>
* gcc-interface/utils.c: Include opts.h.