+2020-06-15 Eric Botcazou <ebotcazou@gcc.gnu.org>
+
+ * gimplify.c (gimplify_init_constructor) <AGGREGATE_TYPE>: Declare
+ new ENSURE_SINGLE_ACCESS constant and move variables down. If it is
+ true and all elements are zero, then always clear. Return GS_ERROR
+ if a temporary would be created for it and NOTIFY_TEMP_CREATION set.
+ (gimplify_modify_expr_rhs) <VAR_DECL>: If the target is volatile but
+ the type is aggregate non-addressable, ask gimplify_init_constructor
+ whether it can generate a single access to the target.
+
+2020-06-15 Eric Botcazou <ebotcazou@gcc.gnu.org>
+
+ * tree-sra.c (propagate_subaccesses_from_rhs): When a non-scalar
+ access on the LHS is replaced with a scalar access, propagate the
+ TYPE_REVERSE_STORAGE_ORDER flag of the type of the original access.
+
+2020-06-15 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/xtensa.c (TARGET_HAVE_TLS): Remove
+ TARGET_THREADPTR reference.
+ (xtensa_tls_symbol_p, xtensa_tls_referenced_p): Use
+ targetm.have_tls instead of TARGET_HAVE_TLS.
+ (xtensa_option_override): Set targetm.have_tls to false in
+ configurations without THREADPTR.
+
+2020-06-15 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/elf.h (ASM_SPEC, LINK_SPEC): Pass ABI switch to
+ assembler/linker.
+ * config/xtensa/linux.h (ASM_SPEC, LINK_SPEC): Ditto.
+ * config/xtensa/uclinux.h (ASM_SPEC, LINK_SPEC): Ditto.
+ * config/xtensa/xtensa.c (xtensa_option_override): Initialize
+ xtensa_windowed_abi if needed.
+ * config/xtensa/xtensa.h (TARGET_WINDOWED_ABI_DEFAULT): New
+ macro.
+ (TARGET_WINDOWED_ABI): Redefine to xtensa_windowed_abi.
+ * config/xtensa/xtensa.opt (xtensa_windowed_abi): New target
+ option variable.
+ (mabi=call0, mabi=windowed): New options.
+ * doc/invoke.texi: Document new -mabi= Xtensa-specific options.
+
+2020-06-15 Max Filippov <jcmvbkbc@gmail.com>
+
+ * config/xtensa/xtensa.c (xtensa_can_eliminate): New function.
+ (TARGET_CAN_ELIMINATE): New macro.
+ * config/xtensa/xtensa.h
+ (XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM)
+ (XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM): New macros.
+ (HARD_FRAME_POINTER_REGNUM): Define using
+ XTENSA_*_HARD_FRAME_POINTER_REGNUM.
+ (ELIMINABLE_REGS): Replace lines with HARD_FRAME_POINTER_REGNUM
+ by lines with XTENSA_WINDOWED_HARD_FRAME_POINTER_REGNUM and
+ XTENSA_CALL0_HARD_FRAME_POINTER_REGNUM.
+
+2020-06-15 Felix Yang <felix.yang@huawei.com>
+
+ * tree-vect-data-refs.c (vect_verify_datarefs_alignment): Rename
+ parameter to loop_vinfo and update uses. Use LOOP_VINFO_DATAREFS
+ when possible.
+ (vect_analyze_data_refs_alignment): Likewise, and use LOOP_VINFO_DDRS
+ when possible.
+ * tree-vect-loop.c (vect_dissolve_slp_only_groups): Use
+ LOOP_VINFO_DATAREFS when possible.
+ (update_epilogue_loop_vinfo): Likewise.
+
+2020-06-15 Kito Cheng <kito.cheng@sifive.com>
+
+ * config/riscv/riscv.c (riscv_gen_gpr_save_insn): Change type to
+ unsigned for i.
+ (riscv_gpr_save_operation_p): Change type to unsigned for i and
+ len.
+
+2020-06-15 Hongtao Liu <hongtao.liu@intel.com>
+
+ PR target/95488
+ * config/i386/i386-expand.c (ix86_expand_vecmul_qihi): New
+ function.
+ * config/i386/i386-protos.h (ix86_expand_vecmul_qihi): Declare.
+ * config/i386/sse.md (mul<mode>3): Drop mask_name since
+ there's no real simd int8 multiplication instruction with
+ mask. Also optimize it under TARGET_AVX512BW.
+ (mulv8qi3): New expander.
+
2020-06-12 Marco Elver <elver@google.com>
* gimplify.c (gimplify_function_tree): Optimize and do not emit
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_eval.ads (Predicates_Match): Fix description.
+ * sem_eval.adb (Predicates_Match): Rewrite.
+
+2020-06-15 Ed Falis <falis@adacore.com>
+
+ * Makefile.rtl: Change name of hie/g-io__vxworks-ppc-cert.adb.
+
+2020-06-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_ch8.adb (Premature_Usage): Add support for subtype
+ references and replace set of if-then-else by a case statement.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Depends_In_Decl_Part,
+ Analyze_Global_In_Decl_Part): Bring back task discriminants for
+ analysis of the Global/Depends contracts; add comments.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * einfo.ads (Return_Applies_To): Document special usage for E_Block.
+ * einfo.adb (Write_Field8_Name): Write it for E_Block too.
+ * exp_ch4.adb (Expand_N_Type_Conversion): Remove implementation of
+ the check prescribed by AI05-0073.
+ * exp_ch6.adb (Apply_CW_Accessibility_Check): New procedure to apply
+ the check prescribed by AI95-344 extracted from...
+ (Expand_N_Extended_Return_Statement): Apply the check prescribed by
+ AI95-344 to the expression, if present. Suppress only access checks
+ when analyzing the rewritten result.
+ (Expand_Simple_Function_Return): ...here. Rename local variable.
+ Call Apply_CW_Accessibility_Check to apply the check prescribed by
+ AI95-344, but do not do it for the simple return statement generated
+ by the expansion of an extended return statement. Apply the check
+ prescribed by AI05-0073 to all functions returning anonymous access
+ type designating a specific tagged type, but not if the expression
+ was null or tag checks are suppressed for the type, and use Not In
+ operator rather than comparing the tags explicitly.
+ * sem.adb (Analyze): Handle all Suppress values.
+ * sem_ch6.adb (Analyze_Function_Return): Do not explicitly apply
+ predicate checks in the case of an extended return statement.
+ Do not apply an implicit conversion to the anonymous access result
+ type in the case of the simple return statement generated by the
+ expansion of an extended return statement.
+ (New_Overloaded_Entity): Small comment tweak.
+ * treepr.adb (Print_Node): Fix typo in flag string.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * exp_put_image.ads, exp_put_image.adb
+ (Image_Should_Call_Put_Image): New function to determine whether
+ the call to Put_Image should be generated.
+ (Build_Image_Call): New procedure to generate the call to
+ Put_Image.
+ * exp_imgv.adb (Expand_Image_Attribute): Use underlying types to
+ bypass privacy (only in Ada 2020). If
+ Image_Should_Call_Put_Image is True (which happens only in Ada
+ 2020), then call Build_Image_Call.
+ * rtsfind.ads, rtsfind.adb: Add the necessary declarations in
+ Ada.Strings.Text_Output.Buffers.
+ * sem_attr.adb (Check_Image_Type): Enable the Ada 2020 case.
+ * libgnat/a-stoufo.ads, libgnat/a-stoufo.adb: Use the less
+ restrictive type that allows newline characters.
+
+2020-06-15 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch9.ads (Build_Master_Declaration): Add commas.
+ * exp_ch9.adb (Build_Master_Entity): Spelling fix ("build" =>
+ "built").
+ (Build_Task_Activation_Call): Fix word order.
+
+2020-06-15 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-nbnbin.ads (Big_Positive, Big_Natural): Fix
+ predicate.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Fix
+ dealing with scopes on subprogram bodies that act as specs.
+ * sem_util.adb (Has_Relaxed_Initialization): Fix trivial
+ mistake.
+
+2020-06-15 Javier Miranda <miranda@adacore.com>
+
+ * restrict.ads (Set_Global_No_Tasking, Global_No_Tasking): New
+ subprograms.
+ * restrict.adb (Set_Global_No_Tasking, Global_No_Tasking): New
+ subprograms.
+ * sem_ch3.adb (Access_Definition): Do not skip building masters
+ since they may be required for BIP calls.
+ (Analyze_Subtype_Declaration): Propagate attribute
+ Is_Limited_Record in class-wide subtypes and subtypes with
+ cloned subtype attribute; propagate attribute
+ Is_Limited_Interface.
+ * sem_ch6.adb (Check_Anonymous_Return): Do not skip building
+ masters since they may be required for BIP calls. Use
+ Build_Master_Declaration to declare the _master variable.
+ (Create_Extra_Formals): Add decoration of Has_Master_Entity when
+ the _master formal is added.
+ * exp_ch3.adb (Init_Formals): Adding formal to decorate it with
+ attribute Has_Master_Entity when the _master formal is added.
+ (Build_Master): Do not skip building masters since they may be
+ required for BIP calls.
+ (Expand_N_Object_Declaration): Ensure activation chain and
+ master entity for objects initialized with BIP function calls.
+ * sem_prag.adb (Process_Restrictions_Or_Restriction_Warnings):
+ Adding support to detect and save restriction No_Tasking when
+ set in the run-time package System or in a global configuration
+ pragmas file.
+ * sem_util.adb (Current_Entity_In_Scope): Overload this
+ subprogram to allow searching for an entity by its Name.
+ * sem_util.ads (Current_Entity_In_Scope): Update comment.
+ * exp_ch4.adb (Expand_N_Allocator): Do not skip building masters
+ since they may be required for BIP calls.
+ * exp_ch6.ads (Might_Have_Tasks): New subprogram.
+ * exp_ch6.adb (Make_Build_In_Place_Call_In_Allocator): Add
+ support for BIP calls returning objects that may have tasks.
+ (Make_Build_In_Place_Call_In_Allocator): Build the activation
+ chain if the result might have tasks.
+ (Make_Build_In_Place_Iface_Call_In_Allocator): Build the class
+ wide master for the result type.
+ (Might_Have_Tasks): New subprogram.
+ (Needs_BIP_Task_Actuals): Returns False when restriction
+ No_Tasking is globally set.
+ * exp_ch9.ads (Build_Master_Declaration): New subprogram.
+ * exp_ch9.adb (Build_Activation_Chain_Entity): No action
+ performed when restriction No_Tasking is globally set.
+ (Build_Class_Wide_Master): No action performed when restriction
+ No_Tasking is globally set; use Build_Master_Declaration to
+ declare the _master variable.
+ (Build_Master_Declaration): New subprogram.
+ (Build_Master_Entity): No action performed when restriction
+ No_Tasking is globally set; added support to handle transient
+ scopes and _finalizer routines.
+ (Build_Master_Renaming): No action performed when restriction
+ No_Tasking is globally set.
+ (Build_Task_Activation_Call): Skip generating the call when
+ the chain is an ignored ghost entity.
+ (Find_Master_Scope): Generalize the code that detects transient
+ scopes with master entity.
+ * einfo.ads (Has_Nested_Subprogram): Minor comment reformatting.
+
+2020-06-15 Arnaud Charlet <charlet@adacore.com>
+
+ * sem_attr.adb (Eval_Attribute): Protect against previous
+ errors.
+ * sem_ch13.adb (Analyze_Aspect_Default_Value): Remove redundant
+ error checking, handling in Analyze_Aspect_Specifications.
+ (Analyze_Aspect_Specifications): Refine error messages on
+ Default_[Component_]Value.
+ (Check_Aspect_Too_Late): New procedure.
+ (Rep_Item_Too_Late.Is_Derived_Type_With_Constraint): Remove,
+ dead code.
+ * aspects.ads (Is_Representation_Aspect): Default_Value is a
+ representation aspect.
+
+2020-06-15 Arnaud Charlet <charlet@adacore.com>
+
+ * libgnat/a-wichha.ads, libgnat/a-wichha.adb,
+ libgnat/a-wichun.ads, libgnat/a-wichun.adb (Is_Basic, To_Basic):
+ New.
+ * libgnat/s-utf_32.ads, libgnat/s-utf_32.adb (Is_UTF_32_Basic,
+ To_UTF_32_Basic, Decomposition_Search): New subprograms.
+ (Unicode_Decomposition): New table.
+
+2020-06-15 Gary Dismukes <dismukes@adacore.com>
+
+ * exp_ch6.adb (Add_Call_By_Copy_Code): In the case of a view
+ conversion passed to a scalar out-mode parameter where the
+ formal has Default_Value set, declare the copy temp with the
+ base type of the formal's subtype and initialize the copy temp
+ with the actual's value.
+
+2020-06-15 Justin Squirek <squirek@adacore.com>
+
+ * exp_ch4.adb (Expand_N_Case_Expression): Set default value for
+ Target to silence potential warnings.
+ (Expand_N_If_Expression): Add calculation to check when the if
+ expression is used directly in the context of an actual of an
+ anonymous access type and add a special path to force expansion
+ of the if expression in this case.
+ * exp_ch6.adb (Expand_Branch): Generate an assignment to the
+ level temporary for a given branch.
+ (Expand_Call_Helper): Add expansion to allow for creating a
+ temporary to store associated accessiblity levels on each branch
+ of the conditional expression. Also perform expansion of
+ function calls into expressions with actions, and fixup
+ references to N with Call_Node.
+ (Insert_Level_Assign): Move through nested conditional
+ expressions to each branch.
+ * sem_util.ads, sem_util.adb (Is_Anonymous_Access_Actual): Added
+ to detect when to force expansion of if expressions.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_prag.adb (Analyze_Depends_In_Decl_Part,
+ Analyze_Global_In_Decl_Part): Do not install task discriminants
+ for analysis of the Global/Depends contracts.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * contracts.adb (Analyze_Object_Contract): Do not expect
+ Global/Depends on single protected units.
+
+2020-06-15 Justin Squirek <squirek@adacore.com>
+
+ * sem_res.adb (Valid_Conversion): Add missing condition to
+ trigger proper static accessiblity failiures when the target
+ type is an anonymous access.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb (Expand_Call_Helper): Replace repeated Ekind with
+ Ekind_In.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * exp_ch6.adb, sem_util.adb: Remove excessive parents,
+ especially since they don't make the code any easier to read.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * aspects.ads (Aspect_Id): Add Aspect_Relaxed_Initialization.
+ (Implementation_Defined_Aspect): Add new aspect.
+ (Aspect_Argument): Add new aspect with Optional_Expression
+ argument.
+ (Is_Representation_Aspect): Add new aspect as a
+ non-representation one.
+ (Aspect_Names): Add name for the new aspect.
+ (Aspect_Delay): Add new aspect as a non-delayed one.
+ * sem_ch3.adb: Minor reformatting.
+ * einfo.ads, einfo.adb (Is_Relaxed_Initialization_State): New
+ query; reuses existing code for querying abstract state options.
+ * exp_attr.adb (Expand_N_Attribute_Reference): For now ignore
+ attribute 'Initialized.
+ * sem_attr.adb (Analyze_Attribute_Old_Result): Allow attribute
+ 'Result to be used in the aspect Relaxed_Initialization
+ expression.
+ (Analyze_Attribute): Analyze attribute 'Initialized; based on
+ existing code for attribute 'Valid_Scalars.
+ (Eval_Attribute): Do not expect attribute 'Initialized, just
+ like attribute 'Valid_Scalars is not expected.
+ * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): New
+ routine.
+ (Analyze_Aspect_Specifications): Analyze new aspect in a
+ dedicated routine.
+ (Check_Aspect_At_Freeze_Point): Do not expect new aspect.
+ * sem_prag.adb (Analyze_Abstract_State): Support option
+ Relaxed_Initialization on abstract states.
+ * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): New
+ query for the GNATprove backend.
+ * snames.ads-tmpl (Snames): Add Name_Ids for the new aspect and
+ attribute; add an Attribute_Id for the new attribute.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * exp_put_image.adb, libgnat/s-putima.adb, libgnat/s-putima.ads,
+ rtsfind.ads: Enable Put_Image if Is_Access_Subprogram_Type (Typ).
+ Remove comment saying it's disabled in that case. Rename
+ Put_Image_Access_Prot to be Put_Image_Access_Prot_Subp to
+ clarify that we're talking about access-to-subprogram, not
+ access-to-protected-object.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * sem_attr.adb (Check_Image_Type): New procedure for checking
+ the type, depending on language version. Disable the Ada 2020
+ support until the corresponding expander work is done.
+ (Analyze_Image_Attribute): Call Check_Image_Type. Rearrange the
+ code to be simplier and more logical. When P_Type is modified,
+ modify P_Base_Type accordingly.
+ * sem_util.adb (Is_Object_Image): Do not return False if the
+ prefix is a type. X'Image should be considered an image of an
+ object iff X is an object (albeit illegal pre-2020 if
+ nonscalar).
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * libgnat/s-putima.ads, libgnat/s-putima.adb
+ (Put_Image_Access_Subp, Put_Image_Access_Prot): New procedures
+ for printing access-to-subprogram objects. Remove an explicit
+ " ", because Put_Image includes the annoying leading blank.
+ * rtsfind.ads: Add new procedures in s-putima.
+ * exp_put_image.adb: Call new procedures as appropriate.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * exp_imgv.adb (Expand_Image_Attribute): Allow private types.
+ Put_Image generates Image for numeric types, and private types
+ whose full type is numeric. This requires the Conversion_OK flag
+ for integer and floating-point types. For fixed point, we need
+ the extra conversion.
+ * exp_put_image.adb (Build_Elementary_Put_Image_Call): Remove
+ special handling of real types.
+ (Enable_Put_Image): Enable for reals.
+
+2020-06-15 Bob Duff <duff@adacore.com>
+
+ * exp_attr.adb (Put_Image): Use underlying type for strings.
+ Remove unchecked union processing.
+ * exp_put_image.adb (Tagged_Put_Image_Enabled): Use -gnatd_z to
+ enable default Put_Image for tagged types. This allows testing
+ that feature.
+ (Build_String_Put_Image_Call): Set Conversion_OK flag.
+ (Make_Component_List_Attributes): Remove unchecked union
+ processing.
+ (Enable_Put_Image): Disable for unchecked unions. Enable for
+ nonscalar types (which were mistakenly disabled in earlier
+ changes).
+ * debug.adb: Document -gnatd_z switch.
+ * libgnat/s-putima.adb (Put_Image_String, Put_Image_Wide_String,
+ Put_Image_Wide_Wide_String): Double double-quote characters.
+ Forget about special handling of control characters for now --
+ that's rare enough to not be a priority, and it's not clear what
+ the right thing to do is anyway.
+ * namet.adb: Minor: Improve debugger-friendliness.
+ * sinfo.ads: Minor: Add "???" comment.
+
+2020-06-15 Piotr Trojanek <trojanek@adacore.com>
+
+ * sem_util.ads, sem_util.adb (Is_Renaming_Declaration): Remove.
+
+2020-06-15 Ed Schonberg <schonberg@adacore.com>
+
+ * freeze.adb (Freeze_Expression): When traversing the tree
+ looking for the proper insertion point for the freeze node of an
+ entity that is declared in an outer scope, set the candidate
+ subprogram body node properly. Previous code has an off-by-one
+ error.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * exp_attr.adb (Expand_N_Attribute_Reference) <Has_Same_Storage>:
+ Do not do superfluous work. Add the condition (X'Size /= 0) on
+ both paths and turn binary AND into short-circuit AND THEN.
+
+2020-06-15 Steve Baird <baird@adacore.com>
+
+ * sem_attr.adb (Analyze_Attribute): In the Loop_Entry case,
+ replace a call to Statically_Denotes_Object with a call to
+ Statically_Names_Object and clean up the preceding comment.
+
+2020-06-15 Eric Botcazou <ebotcazou@adacore.com>
+
+ * sem_res.adb (Resolve_Set_Membership): Remove local variable.
+ In the non-overloaded case, call Intersect_Types on the left
+ operand and the first alternative to get the resolution type.
+ But test the subtype of the left operand to give the warning.
+
2020-06-12 Steve Baird <baird@adacore.com>
* sem_res.adb (Valid_Conversion): The simpler cases of