aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-06-17tree-optimization/95717 - fix SSA update for vectorizer epilogueRichard Biener2-4/+16
This fixes yet another issue with the custom SSA updating in the vectorizer when we copy from the non-if-converted loop. We must not mess with current defs before we updated the BB copies. 2020-06-17 Richard Biener <rguenther@suse.de> PR tree-optimization/95717 * tree-vect-loop-manip.c (slpeel_tree_duplicate_loop_to_edge_cfg): Move BB SSA updating before exit/latch PHI current def copying. * g++.dg/torture/pr95717.C: New testcase.
2020-06-17testsuite: clean up .gcov files in test-suite.Martin Liska2-2/+2
gcc/testsuite/ChangeLog: PR testsuite/95720 * gcc.misc-tests/gcov-pr94029.c: Remove not needed remove-gcda. * lib/gcov.exp: Delete properly .gcov files.
2020-06-17Lower VEC_COND_EXPR into internal functions.Martin Liska16-211/+441
gcc/ChangeLog: * Makefile.in: Add new file. * expr.c (expand_expr_real_2): Add gcc_unreachable as we should not meet this condition. (do_store_flag): Likewise. * gimplify.c (gimplify_expr): Gimplify first argument of VEC_COND_EXPR to be a SSA name. * internal-fn.c (vec_cond_mask_direct): New. (vec_cond_direct): Likewise. (vec_condu_direct): Likewise. (vec_condeq_direct): Likewise. (expand_vect_cond_optab_fn): New. (expand_vec_cond_optab_fn): Likewise. (expand_vec_condu_optab_fn): Likewise. (expand_vec_condeq_optab_fn): Likewise. (expand_vect_cond_mask_optab_fn): Likewise. (expand_vec_cond_mask_optab_fn): Likewise. (direct_vec_cond_mask_optab_supported_p): Likewise. (direct_vec_cond_optab_supported_p): Likewise. (direct_vec_condu_optab_supported_p): Likewise. (direct_vec_condeq_optab_supported_p): Likewise. * internal-fn.def (VCOND): New OPTAB. (VCONDU): Likewise. (VCONDEQ): Likewise. (VCOND_MASK): Likewise. * optabs.c (get_rtx_code): Make it global. (expand_vec_cond_mask_expr): Removed. (expand_vec_cond_expr): Removed. * optabs.h (expand_vec_cond_expr): Likewise. (vector_compare_rtx): Make it global. * passes.def: Add new pass_gimple_isel pass. * tree-cfg.c (verify_gimple_assign_ternary): Add check for VEC_COND_EXPR about first argument. * tree-pass.h (make_pass_gimple_isel): New. * tree-ssa-forwprop.c (pass_forwprop::execute): Prevent propagation of the first argument of a VEC_COND_EXPR. * tree-ssa-reassoc.c (ovce_extract_ops): Support SSA_NAME as first argument of a VEC_COND_EXPR. (optimize_vec_cond_expr): Likewise. * tree-vect-generic.c (expand_vector_divmod): Make SSA_NAME for a first argument of created VEC_COND_EXPR. (expand_vector_condition): Fix coding style. * tree-vect-stmts.c (vectorizable_condition): Gimplify first argument. * gimple-isel.cc: New file. gcc/testsuite/ChangeLog: * g++.dg/vect/vec-cond-expr-eh.C: New test.
2020-06-17gcc-changelog: Support 'Backported from master'.Martin Liska5-10/+80
contrib/ChangeLog: * gcc-changelog/git_commit.py: Print 'Backported from master' heading to backported commits. * gcc-changelog/test_email.py: Test it. * gcc-changelog/test_patches.txt: Add new patch. * gcc-changelog/git_repository.py: Add commit_to_date hook. * gcc-changelog/git_email.py: Add fuzzy implementation of commit_to_date_hook.
2020-06-17amdgcn: Switch to HSACO v3 binary formatAndrew Stubbs7-518/+121
This upgrades the compiler to emit HSA Code Object v3 binaries. This means changing the assembler directives, and linker command line options. The gcn-run and libgomp loaders need corresponding alterations. The relocations no longer need to be fixed up manually, and the kernel symbol names have changed slightly. This move makes the binaries compatible with the new rocgdb from ROCm 3.5. 2020-06-17 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-hsa.h (TEXT_SECTION_ASM_OP): Use ".text". (BSS_SECTION_ASM_OP): Use ".bss". (ASM_SPEC): Remove "-mattr=-code-object-v3". (LINK_SPEC): Add "--export-dynamic". * config/gcn/gcn-opts.h (processor_type): Replace PROCESSOR_VEGA with PROCESSOR_VEGA10 and PROCESSOR_VEGA20. * config/gcn/gcn-run.c (HSA_RUNTIME_LIB): Use ".so.1" variant. (load_image): Remove obsolete relocation handling. Add ".kd" suffix to the symbol names. * config/gcn/gcn.c (MAX_NORMAL_SGPR_COUNT): Set to 62. (gcn_option_override): Update gcn_isa test. (gcn_kernel_arg_types): Update all the assembler directives. Remove the obsolete options. (gcn_conditional_register_usage): Update MAX_NORMAL_SGPR_COUNT usage. (gcn_omp_device_kind_arch_isa): Handle PROCESSOR_VEGA10 and PROCESSOR_VEGA20. (output_file_start): Rework assembler file header. (gcn_hsa_declare_function_name): Rework kernel metadata. * config/gcn/gcn.h (GCN_KERNEL_ARG_TYPES): Set to 16. * config/gcn/gcn.opt (PROCESSOR_VEGA): Remove enum. (PROCESSOR_VEGA10): New enum value. (PROCESSOR_VEGA20): New enum value. libgomp/ * plugin/plugin-gcn.c (init_environment_variables): Use ".so.1" variant for HSA_RUNTIME_LIB name. (find_executable_symbol_1): Delete. (find_executable_symbol): Delete. (init_kernel_properties): Add ".kd" suffix to symbol names. (find_load_offset): Delete. (create_and_finalize_hsa_program): Remove relocation handling.
2020-06-17gcov*: collapse lisence header to 2 lines in --version.Martin Liska3-9/+6
gcc/ChangeLog: * gcov-dump.c (print_version): Collapse lisence header to 2 lines in --version. * gcov-tool.c (print_version): Likewise. * gcov.c (print_version): Likewise.
2020-06-17[Ada] Add early return to Apply_Universal_Integer_Attribute_ChecksEric Botcazou1-0/+5
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * checks.adb (Apply_Universal_Integer_Attribute_Checks): Do not do anything when the type of the node is already Universal_Integer.
2020-06-17[Ada] ACATS 4.1H - BA12018 - Missed errors for private withArnaud Charlet1-4/+8
2020-06-17 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_ch10.adb (Expand_With_Clause): Add missing handling of N_Generic_Subprogram_Declaration, N_Subprogram_Declaration, N_Subprogram_Body.
2020-06-17[Ada] Additional legality rule for indexing operation for derived typeEd Schonberg1-2/+34
2020-06-17 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch13.adb: (Check_Inherited_Indexing): Check that a type derived from an indexable container type cannot specify an indexing aspect if the same aspect is not specified for the parent type (RM 4.1.6 (6/5), AI12-160). Add a check that a specified indexing aspect for a derived type is confirming.
2020-06-17[Ada] Nested subprograms in protected subprograms improperly handled in ↵Gary Dismukes1-0/+29
GNAT-LLVM 2020-06-17 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch9.adb (Build_Protected_Subp_Specification): Add ??? comment about the flag Has_Nested_Subprogram not being set here. (Expand_N_Protected_Body): If the original body for a protected subprogram has the flag Has_Nested_Subprogram set, then set that flag on the new unprotected subprogram body that's created for it, and reset the Scope fields of its top level declarations, which have been effectively taken from the original protected subprogram body. Add ??? comment about unclear testing of Corresponding_Spec.
2020-06-17[Ada] Ada2020: AI12-0279 more dispatching points with aspect YieldJavier Miranda11-25/+320
2020-06-17 Javier Miranda <miranda@adacore.com> gcc/ada/ * aspects.ads (type Aspect_Id): Add Aspect_Yield as a Boolean aspect, and update the Is_Representation_Aspect, Aspect_Names, and Aspect_Delay arrays. * einfo.ads, einfo.adb (Has_Yield_Aspect, Yield_Aspect): New subprograms. * exp_ch6.adb (Add_Return, Expand_Non_Function_Return, Expand_Simple_Function_Return): Add calls to Yield. * exp_ch9.adb (Build_Accept_Body, Expand_N_Accept_Statement): Add calls to Yield. * rtsfind.ads (RE_Yield): Adding support to generate calls to the runtime service Ada.Dispatching.Yield * sem_ch13.adb (Analyze_Aspect_Yield): New subprogram. * sem_ch3.adb (Derive_Subprogram): Inherit attribute Has_Yield_Aspect. * sem_ch8.adb (Analyze_Subprogram_Renaming): Check consistency of Has_Yield in the actual subprogram of a generic instantiation. * sem_disp.adb (Check_Dispatching_Operation): Check that if the Yield aspect is specified for a dispatching subprogram that inherits the aspect, the specified value shall be confirming. * sem_prag.adb (Analyze_Pragma [Pragma_Implemented]): Check that the implementation kind By_Protected_Procedure cannot be applied to a procedure that has aspect Yield.
2020-06-17[Ada] Fix incorrect operand sharing after expansionEric Botcazou1-7/+6
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch4.adb (Expand_N_Op_Expon): Replace all occurrences of the original right operand with the relocated version.
2020-06-17[Ada] Crash in tagged type constructor with task componentsJavier Miranda4-14/+186
2020-06-17 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_ch6.adb (Has_BIP_Extra_Formal): New subprogram. (Needs_BIP_Task_Actuals): Add support for the subprogram type internally generated for dispatching calls. * exp_disp.adb (Expand_Dispatching_Call): Adding code to explicitly duplicate the extra formals of the target subprogram. * freeze.adb (Check_Extra_Formals): New subprogram. (Freeze_Subprogram): Fix decoration of Extra_Formals. * sem_ch3.adb (Derive_Subprogram): Fix decoration of Extra_Formals.
2020-06-17[Ada] Do not give "bad indentation" error inside a declare_expressionBob Duff3-15/+29
2020-06-17 Bob Duff <duff@adacore.com> gcc/ada/ * par.adb (P_Basic_Declarative_Items): Update comment about Declare_Expression. * par-ch3.adb (P_Declarative_Items): Pass in Declare_Expression flag, and if True, skip the call to Style.Check_Indentation. * par-ch4.adb (P_Declare_Expression): Fix incorrect comment.
2020-06-17[Ada] Improve error message on anonymous access parameter conversionArnaud Charlet1-1/+1
2020-06-17 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * sem_res.adb (Valid_Conversion): Change error message to make it more user-friendly.
2020-06-17[Ada] Do not generate useless length check for array initializationEric Botcazou4-3/+40
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * checks.ads (Apply_Length_Check_On_Assignment): Declare. * checks.adb (Apply_Length_Check_On_Assignment): New procedure to apply a length check to an expression in an assignment. * exp_ch5.adb (Expand_Assign_Array): Call it instead of calling Apply_Length_Check to generate a length check. * sem_ch5.adb (Analyze_Assignment): Likewise.
2020-06-17[Ada] Support aspect Relaxed_Initialization on private types and constantsPiotr Trojanek5-10/+47
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * einfo.adb (Is_Relaxed_Initialization_State): Add reference to SPARK RM. * sem_attr.adb (Analyze_Attribute_Old_Result): Likewise. * sem_ch13.adb (Analyze_Aspect_Relaxed_Initialization): Reject aspect on completions of private types and deferred constants. * sem_util.ads, sem_util.adb (Has_Relaxed_Initialization): Adjust comments; support queries for constants.
2020-06-17[Ada] Small cleanup throughout CStand bodyEric Botcazou1-117/+70
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * cstand.adb (Stloc): Change to a renaming. (Staloc): Likewise. (Build_Unsigned_Integer_Type): Remove Nam parameter, use local constants and do not call Make_Name. (Make_Dummy_Index): Use local constants. (Create_Standard): Pass the name of entities as parameter in calls to New_Standard_Entity and remove calls to Make_Name. Adjust calls to Build_Unsigned_Integer_Type. (Identifier_For): Use local constant. (Make_Component): Pass the name of the component as parameter in call to New_Standard_Entity and remove call to Make_Name. (Make_Formal): Likewise. Rename Formal_Name parameter into Nam and use local constant. (Make_Name): Delete. (New_Operator): Use local constant. (New_Standard_Entity): Rename S parameter into Nam and build the name here. Remove call to Make_Name. (Register_Float_Type): Pass the name of the type as parameter in call to New_Standard_Entity and remove call to Make_Name.
2020-06-17[Ada] Remove new problematic condition for LLVMEric Botcazou1-3/+1
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>: Remove condition added for scalar types.
2020-06-17[Ada] Various typo corrections plus minor reformattingGary Dismukes5-35/+33
2020-06-17 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Adjust colon columns; reformat comment. * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Likewise. * sem_ch3.adb (Build_Access_Subprogram_Wrapper): Reformat spec comment and reformat comment in body. (Analyze_Full_Type_Declaration): Reformat comment. (Replace_Type_Name): Fixed three typos, plus reformatting of comment. * sem_prag.adb (Analyze_Pre_Post_Condition): Fix typos. * sem_warn.adb (Warn_On_Overlapping_Actuals): Edit comments: remove hyphen, add missing word.
2020-06-17[Ada] Ada2020: AI12-0110 Tampering checks are performed firstBob Duff26-335/+313
2020-06-17 Bob Duff <duff@adacore.com> gcc/ada/ * 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-chtgbk.adb, libgnat/a-chtgke.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-convec.adb, libgnat/a-coorma.adb, libgnat/a-coorse.adb, libgnat/a-crbtgk.adb, libgnat/a-crbtgo.adb, libgnat/a-rbtgso.adb: Move tampering checks earlier.
2020-06-17[Ada] Couple of small tweaks related to integer conversionsEric Botcazou2-7/+19
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_attr.adb (Get_Integer_Type): Use standard types without a specific size. * sem_res.adb (Resolve_Unchecked_Type_Conversion): Remove a redundant intermediate conversion to Universal_Integer.
2020-06-17[Ada] Fix comment of Get_Iterable_Type_PrimitivePiotr Trojanek2-2/+12
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_util.ads, sem_util.adb (Get_Iterable_Type_Primitive): Fix comment and enforce it with an assertion in the body.
2020-06-17[Ada] Ada_2020 AI12-0220 Pre/Postconditions on Access_To_Subprogram typesEd Schonberg4-189/+243
2020-06-17 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_ch3.adb (Analyze_Full_Type_Declaration): For an access_to_subprogram declaration that has aspect specifications, call Build_Access_ Subprogram_Wrapper at once, so that pre- and postcondition aspects are analyzed in the context of a subprogram declaration. (Build_Access_Subprogram_Wrapper): Examine aspect specifications of an Access_To_Subprogram declaration. If pre- or postconditions are declared for it, create declaration for subprogram wrapper and add the corresponding aspect specifications to it. Replace occurrences of the type name by that of the generated subprogram, so that attributes 'Old and 'Result can appear in a postcondition. * exp_ch3.adb (Build_Access_Subprogram_Wrapper_Body): Moved here from sem_prag.adb. * exp_ch3.ads (Build_Access_Subprogram_Wrapper_Body): Visible subprogram. * sem_prag.adb (Build_Access_Subprogram_Wrapper / _Body): Moved to sem_ch3.adb and exp_ch3.adb.
2020-06-17[Ada] Add assertions to Preserve_Comes_From_Source and reuse itPiotr Trojanek6-10/+9
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * atree.adb (Preserve_Comes_From_Source): Rewrite using Set_Comes_From_Source and Comes_From_Source, which enforce that the parameters are valid. * exp_ch4.adb, exp_ch5.adb, sem_ch12.adb, sem_ch6.adb, sem_res.adb: Rewrite using Preserve_Comes_From_Source.
2020-06-17[Ada] Remove obsolete comments in Big_NumbersArnaud Charlet2-6/+0
2020-06-17 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads: Remove obsolete comments.
2020-06-17[Ada] Implement static expression functions for Ada 202x (AI12-0075)Gary Dismukes12-262/+869
2020-06-17 Gary Dismukes <dismukes@adacore.com> gcc/ada/ * aspects.ads (type Aspect_Id): Add Aspect_Static as a Boolean aspect, and update the Is_Representation_Aspect, Aspect_Names, and Aspect_Delay arrays. * exp_ch6.adb (Expand_Simple_Function_Return): In the case of a return for a static expression function, capture a copy of the expression of the return statement before it's expanded and reset its Analyzed flags. Then, just before leaving this procedure, if the expression was rewritten, set the Original_Node of the rewritten expression to the new copy and also set the Expression of the associated static expression function to designate that copy. This ensures that later copies of the expression made via New_Copy_Tree will fully copy all nodes of the expression tree. * inline.ads (Inline_Static_Expression_Function_Call): New procedure to evaluate and produce the result of a static call to a static expression function. * inline.adb: Add with and use for Sem_Res. (Establish_Actual_Mapping_For_Inlined_Call): New procedure extracted from code in Expand_Inlined_Call that traverses the actuals and formals of an inlined call and in some cases creates temporaries for holding the actuals, plus establishes an association between formals and actuals (via the Renamed_Object fields of the formals). (Formal_Is_Used_Once): Function removed from Expand_Inlined_Call and now nested in the above procedure. (Expand_Inlined_Call): Code for doing the formal/actual traversal is moved to Create_Actual_Temporaries and replaced with a call to that new procedure. (Inline_Static_Expression_Function_Call): New procedure to evaluate a static call to a static expression function, substituting actuals for their corresponding formals and producing a fully folded and static result expression. The function has subsidiary functions Replace_Formal and Reset_Sloc that take care of doing the mapping of formals to actuals and resetting the Slocs of subnodes of the mapped expression to that of the call so errors will be flagged on the call rather than function. * sem_ch6.adb (Analyze_Expression_Function): In the case of a static expression function, perform an additional preanalysis of the function's expression to ensure that it's a potentially static expression (according to the requirements of 6.8(3.2/5-3.4/5)), and issue an error if it's not. The global flag Checking_Potentially_Static_Expression is set and unset around this checking. * sem_ch13.adb (Analyze_Aspect_Static): New procedure to enforce selected requirements of the new aspect Static on expression functions, including checking that the language version is Ada_2020 and that the entity to which it applies is an expression function whose formal parameters are of a static subtype and have mode 'in', its result subtype is a static subtype, and it has no pre- or postcondition aspects. A ??? comment is added to indicate the need for adding checking that type invariants don't apply to the result type if the function is a boundary entity. (Analyze_One_Aspect): Call Analyze_Aspect_Static for aspect Static. * sem_elab.adb (Build_Call_Marker): Return without creating a call marker when the subprogram is a static expression function, since no ABE checking is needed for such functions. * sem_eval.ads (Checking_Potentially_Static_Expression): New function to return whether the checking for potentially static expressions is enabled. (Set_Checking_Potentially_Static_Expression): New procedure to enable or disable checking of potentially static expressions. * sem_eval.adb (Checking_For_Potentially_Static_Expression): New global flag for determining whether preanalysis of potentially static expression is being done, which affects the behavior of certain static evaluation routines. (Checking_Potentially_Static_Expression): New function to return whether the checking for potentially static expressions is enabled. (Eval_Call): When evaluating a call within a static expression function with checking of potentially static expression functions enabled, substitutes a static value in place of the call to allow folding of the expression. (Eval_Entity_Name): When evaluating a formal parameter of a static expression function with checking of potentially static expression functions enabled, substitutes a static value in place of the reference to the formal to allow folding of the expression. (Set_Checking_Potentially_Static_Expression): New procedure to enable or disable checking of potentially static expressions. * sem_res.adb (Resolve_Call): Test for a recursive call occurring within a static expression function and issue an error for such a call. Prevent the establishment of a transient scope in the case this is a call to a (string-returning) static expression function. When calling a static expression function, if no error has been posted on the function, call Inline_Static_Expression_Function_Call to convert the call into its equivalent static value. * sem_util.ads (Is_Static_Expression_Function): New function returning whether the subprogram entity passed to it is a static expression function. (Is_Static_Expression_Function_Call): New function to determine whether the call node passed to it is a static call to a static expression function. * sem_util.adb (Compile_Time_Constraint_Error): Suppress compile-time Constraint_Error reporting when checking for a potentially static expression. (Is_Static_Expression_Function): New function returning whether the subprogram entity passed to it is a static expression function by testing for the presence of aspect Static. (Has_All_Static_Actuals): New function in Is_Static_Expression_Function_Call that traverses the actual parameters of a function call and returns True only when all of the actuals are given by static expressions. In the case of a string-returning function, we call Resolve on each actual to ensure that their Is_Static_Expression flag properly reflects whether they're static, to allow suppressing creation of a transient scope within Resolve_Call. A prominent ??? comment is added to explain this rather unconventional call to Resolve. (Is_Static_Expression_Function_Call): New function that determines whether a node passed to it is a call to a static expression function all of whose actual parameters are given by static expressions.
2020-06-17[Ada] Deal with second specific superflat case in Optimize_Length_ComparisonEric Botcazou1-14/+82
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch4.adb (Optimize_Length_Comparison): New local variable to record whether this may be a dynamic superflat case. (Is_Optimizable): Accept 0 as lower bound and set it in this case, but return false if the operand is not a length too. (Rewrite_For_Equal_Lengths): New procedure. Optimize the comparison of two lengths in the superflat case when the arrays have the same bounds.
2020-06-17[Ada] Adjust documentation of 'Bit and 'Descriptor_Size attributesEric Botcazou2-15/+19
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * doc/gnat_rm/implementation_defined_attributes.rst (Bit): Sharpen the comparison with System.Storage_Unit. (Descriptor_Size): Clear confusion about alignment and padding. * gnat_rm.texi: Regenerate.
2020-06-17[Ada] Work around problematic interaction with public symbol generationEric Botcazou1-1/+8
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>: Do not replace the bound for an array type if it is public.
2020-06-17[Ada] Fix small oversight in change to Optimize_Length_ComparisonEric Botcazou1-16/+27
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_ch4.adb (Optimize_Length_Comparison): Make sure the base types are the same when comparing Y'Last and X'Last directly.
2020-06-17[Ada] Optimize length checks generated for slice assignmentsEric Botcazou2-115/+172
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_attr.adb (Expand_N_Attribute_Reference) <Attribute_First>: Replace it with a direct reference to an entity which is not a discriminant for constrained array types. Add same condition for scalar types. <Attribute_Last>: Merge with above implementation. * exp_ch4.adb (Optimize_Length_Comparison): Be prepared for a second entity whose length is compared. Rename Prepare_64 to Convert_To_Long_Long_Integer. If the second entity is present, compute the difference of the 'First attributes and compare the sum of 'Last of the second entity with this difference against 'Last of the first entity. Add a special case when the 'First attributes are equal. Suppress overflow checks in all cases.
2020-06-17[Ada] Fix casing from GNATProve to GNATprovePiotr Trojanek7-10/+10
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * doc/gnat_rm/implementation_defined_pragmas.rst, lib-writ.ads, par-prag.adb, sem_ch12.adb, sem_ch8.adb, sem_prag.adb: Fix casing of GNATprove. * gnat_rm.texi: Regenerate.
2020-06-17[Ada] Remove unnecessary special-casing of GNATprove expansionPiotr Trojanek3-14/+8
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * checks.adb (Generate_Range_Check): Simplify redundant condition. * sem_ch3.adb (Check_Initialization, Process_Discriminants): Likewise. * sem_ch6.adb (Analyze_Subprogram_Body_Helper): Likewise.
2020-06-17[Ada] Fix small fallout of change for 'Pos and 'Val attributesEric Botcazou1-1/+3
2020-06-17 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_fixd.adb (Build_Conversion): Also preserve the Conversion_OK flag of an inner conversion.
2020-06-17[Ada] Fix expansion of "for X of Y loop" in GNATprovePiotr Trojanek1-4/+6
2020-06-17 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_ch5.adb (Analyze_Iterator_Specification): Enable expansion that creates a renaming that removes side effects from the iterated object in the GNATprove mode; then analyze reference to this renaming (it is required for GNATprove and harmless for GNAT).
2020-06-17Optimize V16QI/V32QI/V64QI shift by constant.liuhongt9-1/+381
gcc/ChangeLog: PR target/95524 * config/i386/i386-expand.c (ix86_expand_vec_shift_qihi_constant): New function. * config/i386/i386-protos.h (ix86_expand_vec_shift_qihi_constant): Declare. * config/i386/sse.md (<shift_insn><mode>3): Optimize shift V*QImode by constant. gcc/testsuite/ChangeLog: * gcc.target/i386/avx2-shiftqihi-constant-1.c: New test. * gcc.target/i386/avx2-shiftqihi-constant-2.c: Ditto. * gcc.target/i386/avx512bw-shiftqihi-constant-1.c: Ditto. * gcc.target/i386/avx512bw-shiftqihi-constant-2.c: Ditto. * gcc.target/i386/sse2-shiftqihi-constant-1.c: Ditto. * gcc.target/i386/sse2-shiftqihi-constant-2.c: Ditto.
2020-06-17gcov: fix gcov-tool merge for TOPN countersMartin Liska2-11/+61
libgcc/ChangeLog: * libgcov-util.c (read_gcda_finalize): Remove const operator. (merge_wrapper): Add both counts and use them properly. (topn_to_memory_representation): New function. (gcov_merge): Covert on disk representation to in memory representation. * libgcov.h: Remove const operator.
2020-06-17Daily bump.GCC Administrator11-1/+759
2020-06-16middle-end: Add another testcase for PR 95493Jonathan Wakely1-0/+95
This was reported on the gcc-help mailing list. The regression started with r10-589 and was fixed by r11-963. gcc/testsuite/ChangeLog: * g++.dg/torture/pr95493-1.C: New test.
2020-06-16d: Remove names of unused function parameters.Iain Buclaw1-65/+31
gcc/d/ChangeLog: * d-attribs.cc (handle_noreturn_attribute): Remove names of unused function parameters. (handle_leaf_attribute): Likewise. (handle_const_attribute): Likewise. (handle_malloc_attribute): Likewise. (handle_pure_attribute): Likewise. (handle_novops_attribute): Likewise. (handle_nonnull_attribute): Likewise. (handle_nothrow_attribute): Likewise. (handle_type_generic_attribute): Likewise. (handle_transaction_pure_attribute): Likewise. (handle_returns_twice_attribute): Likewise. (handle_fnspec_attribute): Likewise. (handle_always_inline_attribute): Likewise. (d_handle_noinline_attribute): Likewise. (d_handle_forceinline_attribute): Likewise. (d_handle_flatten_attribute): Likewise. (d_handle_noclone_attribute): Likewise. (d_handle_section_attribute): Likewise. (d_handle_alias_attribute): Likewise. (d_handle_weak_attribute): Likewise.
2020-06-16d: Update code formatting in a consistent style.Iain Buclaw18-135/+136
gcc/d/ChangeLog: * d-attribs.cc: Update code formatting in a consistant style. * d-builtins.cc: Likewise. * d-codegen.cc: Likewise. * d-compiler.cc: Likewise. * d-convert.cc: Likewise. * d-diagnostic.cc: Likewise. * d-frontend.cc: Likewise. * d-lang.cc: Likewise. * d-longdouble.cc: Likewise. * d-port.cc: Likewise. * d-spec.cc: Likewise. * d-tree.h: Likewise. * decl.cc: Likewise. * expr.cc: Likewise. * longdouble.h: Likewise. * modules.cc: Likewise. * toir.cc: Likewise. * typeinfo.cc: Likewise.
2020-06-16d: Consistently format quotations in comments.Iain Buclaw10-48/+48
gcc/d/ChangeLog: * d-builtins.cc: Update quotation formatting of comments. * d-codegen.cc: Likewise. * d-lang.cc: Likewise. * decl.cc: Likewise. * expr.cc: Likewise. * imports.cc: Likewise. * runtime.cc: Likewise. * toir.cc: Likewise. * typeinfo.cc: Likewise. * types.cc: Likewise.
2020-06-16d: Remove dependency on front-end OutBuffer for diagnostic and deps file ↵Iain Buclaw2-60/+68
generation. gcc/d/ChangeLog: * d-diagnostic.cc (expand_d_format): Replace OutBuffer with obstack. (d_diagnostic_report_diagnostic): Don't free xformat. * d-lang.cc (struct d_option_data): Change deps_target type from OutBuffer to vec <const char *>. (deps_add_target): Update to push each target to deps_target. (deps_write_string): New function. (deps_write): Change buffer type to obstack* and remove colmax. (d_init_options): Update initialization of deps_target. (d_parse_file): Replace OutBuffer with obstack.
2020-06-16d: Remove dependency on front-end File type for json and deps file generation.Iain Buclaw1-10/+32
gcc/d/ChangeLog: * d-lang.cc (d_parse_file): Replace uses of File with FILE.
2020-06-16d: Move generation of array bounds error to own function.Iain Buclaw4-7/+25
gcc/d/ChangeLog: * d-codegen.cc (build_array_bounds_call): New function. (build_bounds_condition): Use build_array_bounds_call. * d-lang.cc (d_init_options): Explicitly set default check action to CHECKACTION_D. (d_post_options): Set check action to CHECKACTION_C if the flag -fno-druntime was seen. * d-tree.h (build_array_bounds_call): Declare. * expr.cc (ExprVisitor::visit (AssertExp *)): Use build_array_bounds_call.
2020-06-16libstdc++: Strip cv-qualifiers in std::atomic<FP> (PR 95282)Jonathan Wakely1-5/+5
This improves the previous fix for PR 95282, and extends it to also apply to the exchange function (which has a similar problem and would become ill-formed with my proposed fix for PR 95378). PR libstdc++/95282 * include/bits/atomic_base.h (__atomic_impl::load): Use the _Val alias instead of deducing _Tp as an unqualified type. (__atomic_impl::exchange): Use the _Val alias to remove volatile from the reinterpret_cast result type.
2020-06-16libstdc++: Enforce copyable/movable checks in std::atomicJonathan Wakely2-0/+50
C++20 adds some new preconditions to std::atomic, which weren't previously checked by our implementation. * include/std/atomic (atomic): Add static assertions. * testsuite/29_atomics/atomic/requirements/types_neg.cc: New test.
2020-06-16d: Use toStringExp instead of explicit castIain Buclaw2-4/+4
gcc/d/ChangeLog: * d-attribs.cc (build_attributes): Use toStringExp instead of cast. * toir.cc (IRVisitor::visit): Likewise.
2020-06-16d: Use new isXxxxExp helpers where possibleIain Buclaw6-41/+46
gcc/d/ChangeLog: * d-attribs.cc (build_attributes): Use isXxxxExp helpers instead of explicit casts. * d-codegen.cc (d_build_call): Likewise. * d-compiler.cc (Compiler::paintAsType): Likewise. * decl.cc (ExprVisitor::visit): Likewise. (layout_class_initializer): Likewise. * expr.cc (ExprVisitor::lvalue_p): Likewise (ExprVisitor::visit): Likewise. * types.cc (layout_aggregate_members): Likewise.