aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-06-11PR95331 - Unlimited polymorphic arrays have wrong bounds.José Rui Faustino de Sousa2-4/+172
When iterating over a class array use the bounds provided by the transformed descriptor (in sym->backend_decl) instead of the original bounds of the array (in the descriptor passed in the class _data) which are passed in se->expr. The patch partially depends on the patch for PR52351 and PR85868, but does not seems to break anything by itself. gcc/fortran/ChangeLog: 2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> PR fortran/95331 * trans-array.c (gfc_conv_array_ref): For class array dummy arguments use the transformed descriptor in sym->backend_decl instead of the original descriptor. gcc/testsuite/ChangeLog: 2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> PR fortran/95331 * gfortran.dg/PR95331.f90: New test.
2020-06-11aix: xfail pure-virtual1.C expects weak __cxa_pure_virtualDavid Edelsohn1-0/+1
The testcase expects __cxa_pure_virtual to be weak to avoid an implicit dependency. This does not occur on AIX, so expect this testcase to fail on AIX. gcc/testsuite/ChangeLog 2020-06-11 David Edelsohn <dje.gcc@gmail.com> * g++.dg/abi/pure-virtual1.C: XFAIL AIX.
2020-06-11Fix formatting in rs6000.c.Martin Liska1-1/+1
gcc/ChangeLog: * config/rs6000/rs6000.c (rs6000_density_test): Fix GNU coding style.
2020-06-11aix: Don't implicitly include inttypes.hDavid Edelsohn1-0/+4
AIX stdio.h implicitly includes inttypes.h, which explicitly conflicts with the purpose of this testcase. This patch conditionally adds a macro definition that inhibits the implicit inclusion. gcc/testsuite/ChangeLog 2020-06-11 David Edelsohn <dje.gcc@gmail.com> * gcc.dg/spellcheck-inttypes.c: Don't include inttypes.h on AIX.
2020-06-11rs6000: skip debug info statementsMartin Liska1-0/+3
gcc/ChangeLog: PR target/95627 * config/rs6000/rs6000.c (rs6000_density_test): Skip debug statements.
2020-06-11Wrong array section bounds when passing to an intent-in pointer dummy.José Rui Faustino de Sousa4-106/+219
Add code to allow for the creation a new descriptor for array sections with the correct one based indexing. Rework the generated descriptors indexing (hopefully) fixing the wrong offsets generated. gcc/fortran/ChangeLog: 2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> PR fortran/52351 PR fortran/85868 * trans-array.c (gfc_conv_expr_descriptor): Enable the creation of a new descriptor with the correct one based indexing for array sections. Rework array descriptor indexing offset calculation. gcc/testsuite/ChangeLog: 2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> PR fortran/52351 PR fortran/85868 * gfortran.dg/coarray_lib_comm_1.f90: Adjust match test for the newly generated descriptor. * gfortran.dg/PR85868A.f90: New test. * gfortran.dg/PR85868B.f90: New test.
2020-06-11Patch to Bug 94022 - Array slices of assumed-size arrays.José Rui Faustino de Sousa2-0/+134
Make sure that when passing array sections of assumed-size arrays to procedures expecting an assumed-rank array the upper bound of the last dimension of the array section does not get improperly reset to -1 to mark it has an assumed size array. gcc/fortran/ChangeLog: 2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> PR fortran/94022 * trans-expr.c (gfc_conv_procedure_call): In the case of assumed-size arrays ensure that the reference is to a full array. gcc/testsuite/ChangeLog: 2020-06-11 José Rui Faustino de Sousa <jrfsousa@gmail.com> PR fortran/94022 * gfortran.dg/PR94022.f90: New test.
2020-06-11[Ada] Fix missing insertion of explicit dereference in instanceEric Botcazou1-0/+11
2020-06-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * sem_res.adb (Resolve_Implicit_Dereference): In an instance, reset the type of the prefix if it is private before building the dereference.
2020-06-11[Ada] Fix assertion failure on entry call through unchecked conversionEric Botcazou1-7/+4
2020-06-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_util.adb (Safe_Unchecked_Type_Conversion): Add missing Is_Type guard before calling Has_Discriminants on Etype.
2020-06-11[Ada] Make libgnat/a-nbnbin__gmp.adb compileBob Duff1-30/+23
2020-06-11 Bob Duff <duff@adacore.com> gcc/ada/ * libgnat/a-nbnbin__gmp.adb: There's no Optional_Big_Integer anymore. Invalid_Big_Integer is not used. Greatest_Common_Divisor returns Big_Positive.
2020-06-11[Ada] Refine type of a routine parameter from Node_Id to Entity_IdPiotr Trojanek1-2/+2
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_aggr.adb (Get_Value): Refine type of the Compon parameter.
2020-06-11[Ada] Refine type of a counter-like variablePiotr Trojanek1-1/+1
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_aggr.adb (Resolve_Record_Aggregate): Refine type of Others_Box.
2020-06-11[Ada] Iterate with procedural version of Next routine where possiblePiotr Trojanek15-33/+33
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * checks.adb, exp_ch7.adb, exp_ch9.adb, exp_smem.adb, lib.adb, nlists.adb, sem.adb, sem_aggr.adb, sem_ch3.adb, sem_ch6.adb, sem_ch8.adb, sem_dim.adb, sem_res.adb, sem_util.adb, sem_warn.adb: Replace uses of Next function with procedure.
2020-06-11[Ada] Fix wrong access to large bit-packed arrays with reverse SSOEric Botcazou4-14/+64
2020-06-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * exp_pakd.ads: Add paragraph about scalar storage order. * exp_pakd.adb (Install_PAT): Do not set the scalar storage order of the PAT here but... (Set_PB_Type): ...here instead and... (Create_Packed_Array_Impl_Type): ...here as well. * rtsfind.ads (RE_Id): Add RE_Rev_Packed_Bytes{1,2,4}. (RE_Unit_Table): Likewise. * libgnat/s-unstyp.ads (Rev_Packed_Bytes1): New derived type. (Rev_Packed_Bytes2): Likewise. (Rev_Packed_Bytes4): Likewise.
2020-06-11[Ada] Update SPARK RM rule numbers after removing a redundant rulePiotr Trojanek4-10/+10
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_ch4.adb, sem_ch6.adb, sem_res.adb, sem_util.ads: Fix references to SPARK RM 7.1.3 rule numbers.
2020-06-11[Ada] Additional warnings on overlapping actuals of composite typesEd Schonberg1-109/+138
2020-06-11 Ed Schonberg <schonberg@adacore.com> gcc/ada/ * sem_warn.adb (Warn_On_Overlapping_Actuals): Simplify code, remove inner predicate Is_Covered_Formal, preserve warning for two overlapping composite types when only one is writable, and for two overlapping and writable elementary types.
2020-06-11[Ada] Allow specifying volatility refinement aspects for typesSteve Baird10-184/+647
2020-06-11 Steve Baird <baird@adacore.com> gcc/ada/ * contracts.adb (Add_Contract_Item): Support specifying volatility refinement aspects for types. (Analyze_Contracts): Add call to Analyze_Type_Contract in the case of a contract for a type. (Freeze_Contracts): Add call to Analyze_Type_Contract in the case of a contract for a type. (Check_Type_Or_Object_External_Properties): A new procedure which performs the work that needs to be done for both object declarations and types. (Analyze_Object_Contract): Add a call to Check_Type_Or_Object_External_Properties and remove the code in this procedure which did much of the work that is now performed by that call. (Analyze_Type_Contract): Implement this new routine as nothing more than a call to Check_Type_Or_Object_External_Properties. * contracts.ads: Update comment for Add_Contract_To_Item because types can have contracts. Follow (questionable) precedent and declare new routine Analyze_Type_Contract as visible (following example of Analyze_Object_Contract), despite the fact that it is never called from outside of the package where it is declared. * einfo.adb (Contract, Set_Contract): Id argument can be a type; support this case. (Write_Field34_Name): Field name is "contract" for a type. * einfo.ads: Update comment describing Contract attribute. * sem_ch3.adb (Build_Derived_Numeric_Type): Is_Volatile should return same answer for all subtypes of a given type. Thus, when building the base type for something like type Volatile_1_To_10 is range 1 .. 10 with Volatile; that basetype should be marked as being volatile. (Access_Type_Declaration): Add SPARK-specific legality check that the designated type of an access type shall be compatible with respect to volatility with the access type. * sem_ch12.adb (Check_Shared_Variable_Control_Aspects): Add SPARK-specific legality check that an actual type parameter in an instantiation shall be compatible with respect to volatility with the corresponding formal type. * sem_ch13.adb (Analyze_Aspect_Specifications): Perform checks for aspect specs for the 4 volatility refinement aspects that were already being performed for all language-defined aspects. * sem_prag.adb (Analyze_External_Property_In_Decl_Part, Analyze_Pragma): External properties (other than No_Caching) may be specified for a type, including a generic formal type. * sem_util.ads: Declare new subprograms - Async_Readers_Enabled, Async_Writers_Enabled, Effective_Reads, Effective_Writes, and Check_Volatility_Compatibility. * sem_util.adb (Async_Readers_Enabled, Async_Writers_Enabled, Effective_Reads, Effective_Writes): Initial implementation of new functions for querying aspect values. (Check_Volatility_Compatibility): New procedure intended for use in checking all SPARK legality rules of the form "<> shall be compatible with respect to volatility with <>". (Has_Enabled_Property): Update comment because Item_Id can be a type. Change name of nested Variable_Has_Enabled_Property function to Type_Or_Variable_Has_Enabled_Property; add a parameter to that function because recursion may be needed, e.g., in the case of a derived typ). Cope with the case where the argument to Has_Enabled_Property is a type.
2020-06-11[Ada] Avoid "others => <>" association in resolved record aggregatesPiotr Trojanek1-11/+5
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_aggr.adb (Add_Association): Add assertion about the formal parameters. (Propagate_Discriminants): Always add an explicit component association, so that an "others => <>" association is never needed.
2020-06-11[Ada] Put_Image attributeBob Duff3-8/+22
2020-06-11 Bob Duff <duff@adacore.com> gcc/ada/ * exp_put_image.adb (Build_Elementary_Put_Image_Call): If the underlying type is real, call Put_Image_Unknown. (Build_Unknown_Put_Image_Call): Pass the type name to Put_Image_Unknown. * libgnat/s-putima.ads, libgnat/s-putima.adb (Put_Image_Unknown): Add Type_Name parameter. Remove overly-detailed documentation of what it does; better to leave it open.
2020-06-11[Ada] Skip unnecessary iterations over constraint expressionsPiotr Trojanek1-1/+4
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_ch3.adb (Build_Constrained_Array_Type, Build_Constrained_Discriminated_Type): Skip unnecessary loop iterations.
2020-06-11[Ada] Move duplicated routines for building itypes to Sem_UtilPiotr Trojanek4-213/+231
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_aggr.adb (Build_Constrained_Itype): Move to Sem_Util. * sem_ch3.adb (Build_Subtype, Inherit_Predicate_Flags): Move... * sem_util.adb (Build_Subtype): Here. Add parameters for references to objects previously declared in enclosing scopes. (Inherit_Predicate_Flags): And here, because it is called by Build_Subtype. * sem_util.ads (Build_Overriding_Spec): Reorder alphabetically. (Build_Subtype): Moved from Sem_Ch3; comments updated. (Build_Constrained_Itype): Moved from Sem_Aggr; comments updated.
2020-06-11[Ada] Refine type for sorting case-choices tablesPiotr Trojanek1-6/+4
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_aggr.adb (Case_Table_Type): Change index type from Nat to Pos.
2020-06-11[Ada] Create constrained itypes for nested record aggregatesPiotr Trojanek1-63/+101
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_aggr.adb (Build_Constrained_Itype): Previously a declare block, now a separate procedure; the only change is that now New_Assoc_List might include components and an others clause, which we ignore (while we deal with discriminants exactly as we did before); extend a ??? comment about how this routine is different from the Build_Subtype (Resolve_Record_Aggregate): Create a constrained itype not just for the outermost record aggregate, but for its inner record aggregates as well.
2020-06-11[Ada] Consolidate handling of implicit dereferences into semantic analysisEric Botcazou13-366/+174
2020-06-11 Eric Botcazou <ebotcazou@adacore.com> gcc/ada/ * checks.adb (Build_Discriminant_Checks): Build an explicit dereference when the type is an access type. * exp_atag.adb (Build_CW_Membership): Add explicit dereferences. (Build_Get_Access_Level): Likewise. (Build_Get_Alignment): Likewise. (Build_Inherit_Prims): Likewise. (Build_Get_Transportable): Likewise. (Build_Set_Size_Function): Likewise. * exp_ch3.adb (Build_Offset_To_Top_Function): Likewise. * exp_ch4.adb (Expand_Allocator_Expression): Likewise. (Expand_N_Indexed_Component ): Remove code dealing with implicit dereferences. (Expand_N_Selected_Component): Likewise. (Expand_N_Slice): Likewise. * exp_ch9.adb (Add_Formal_Renamings): Add explicit dereference. (Expand_Accept_Declarations): Likewise. (Build_Simple_Entry_Call): Remove code dealing with implicit dereferences. (Expand_N_Requeue_Statement): Likewise. * exp_disp.adb (Expand_Dispatching_Call): Build an explicit dereference when the controlling type is an access type. * exp_spark.adb (Expand_SPARK_N_Selected_Component): Delete. (Expand_SPARK_N_Slice_Or_Indexed_Component): Likewise. (Expand_SPARK): Do not call them. * sem_ch4.adb (Process_Implicit_Dereference_Prefix): Delete. (Process_Indexed_Component): Call Implicitly_Designated_Type to get the designated type for an implicit dereference. (Analyze_Overloaded_Selected_Component): Do not insert an explicit dereference here. (Analyze_Selected_Component): Likewise. (Analyze_Slice): Call Implicitly_Designated_Type to get the designated type for an implicit dereference. * sem_ch8.adb (Has_Components): New predicate extracted from... (Is_Appropriate_For_Record): ...this. Delete. (Is_Appropriate_For_Entry_Prefix): Likewise. (Analyze_Renamed_Entry): Deal with implicit dereferences. (Find_Selected_Component): Do not insert an explicit dereference here. Call Implicitly_Designated_Type to get the designated type for an implicit dereference. Call Has_Components, Is_Task_Type and Is_Protected_Type directly. Adjust test for error. * sem_res.adb (Resolve_Implicit_Dereference): New procedure. (Resolve_Call): Call Resolve_Indexed_Component last. (Resolve_Entry): Call Resolve_Implicit_Dereference on the prefix. (Resolve_Indexed_Component): Call Implicitly_Designated_Type to get the designated type for an implicit dereference and Resolve_Implicit_Dereference on the prefix at the end. (Resolve_Selected_Component): Likewise. (Resolve_Slice): Likewise. Do not apply access checks here. * sem_util.ads (Implicitly_Designated_Type): Declare. * sem_util.adb (Copy_And_Maybe_Dereference): Simplify. (Implicitly_Designated_Type): New function. (Object_Access_Level): Fix typo. * sem_warn.adb (Check_Unset_Reference): Test Comes_From_Source on the original node.
2020-06-11[Ada] Remove a dubious optimization for Object Specific Data dispatchingPiotr Trojanek3-69/+4
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_disp.adb: Minor reformatting. * exp_aggr.adb (Is_Static_Dispatch_Table_Aggregate): Recognize aggregates of the Ada.Tags.Object_Specific_Data type as static. * sem_aggr.adb (Check_Static_Discriminated_Subtype): Deconstruct and do not call it from Build_Constrained_Itype.
2020-06-11[Ada] Make Object Specific Dispatch tables constantPiotr Trojanek1-0/+1
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_disp.adb (Make_Secondary_DT): Internally generated OSD tables are now constant.
2020-06-11[Ada] Remove useless code in Backend_Processing_PossiblePiotr Trojanek1-1/+0
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * exp_aggr.adb (Backend_Processing_Possible): Remove useless call.
2020-06-11[Ada] Fix punctuation in comment of Building_Static_Dispatch_TablesPiotr Trojanek1-6/+6
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * opt.ads (Building_Static_Dispatch_Tables): Fix punctuation in comment.
2020-06-11[Ada] AI12-0356 Root_Storage_Pool_With_Subpools & Preelaborable_InitArnaud Charlet1-0/+2
2020-06-11 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/s-stposu.ads (Root_Storage_Pool_With_Subpools, Root_Subpool): Mark with Preelaborable_Initialization.
2020-06-11[Ada] Crash on dispatching conditional entry callJavier Miranda4-3/+190
2020-06-11 Javier Miranda <miranda@adacore.com> gcc/ada/ * exp_ch9.adb (Expand_N_Conditional_Entry_Call): Replace call to New_Copy_List by calls to the new routine New_Copy_Separate_List. * sem_util.ads (New_Copy_Separate_List, New_Copy_Separate_Tree): New routines. * sem_util.adb (New_Copy_Separate_List, New_Copy_Separate_Tree): New routines. (New_Copy_Tree): Extend the machinery that detects syntactic nodes to handle lists of indentifiers with field More_Ids; otherwise such nodes are erroneously handled as semantic nodes. Copy aspect specifications attached to nodes. * sem_ch12.adb (Copy_Generic_Node): Protect reading attribute Etype.
2020-06-11[Ada] Fix unnesting crash with Predicate_Failure/no predBob Duff1-2/+0
2020-06-11 Bob Duff <duff@adacore.com> gcc/ada/ * sem_ch13.adb (Analyze_Aspect_Specifications): Do not set the Has_Predicates flag when the Predicate_Failure aspect is seen. It is legal (but pointless) to use this aspect without a predicate. If we set the flag, we generate a half-baked Predicate procedure, and if that procedure is nested, it causes unnesting to crash.
2020-06-11[Ada] Put_Image attributeBob Duff5-22/+30
2020-06-11 Bob Duff <duff@adacore.com> gcc/ada/ * exp_put_image.adb (Build_Record_Put_Image_Procedure): Remove special processing of protected types, because those are handled by Build_Protected_Put_Image_Call. (Enable_Put_Image): Use the switch -gnatd_z to control enabling of Put_Image. Disable Put_Image for types in Remote_Types packages. * debug.adb: Document -gnatd_z switch. * exp_imgv.adb, libgnat/a-stteou.ads, opt.ads: Minor cleanups.
2020-06-11[Ada] Simplify iteration over formal parameters for aliasing errorPiotr Trojanek1-4/+4
2020-06-11 Piotr Trojanek <trojanek@adacore.com> gcc/ada/ * sem_warn.adb (Warn_On_Overlapping_Actuals): Add label to the outer loop and use it in the exit statement.
2020-06-11[Ada] Generate predicate checks for on assignments in recordsGhjuvan Lacambre1-0/+14
2020-06-11 Ghjuvan Lacambre <lacambre@adacore.com> gcc/ada/ * exp_ch3.adb (Build_Assignment): Generate predicate check if subtype mark has predicate.
2020-06-11[Ada] Missing accessibility error on object in type conversionJustin Squirek1-33/+43
2020-06-11 Justin Squirek <squirek@adacore.com> gcc/ada/ * sem_util.adb (Expand_N_Attribute_Reference): Use original nodes where required to avoid looking at the expanded tree.
2020-06-11[Ada] Remove aspects that were commented outArnaud Charlet8-13/+1
2020-06-11 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/a-catizo.ads, libgnat/a-nbnbin.ads, libgnat/a-nbnbre.ads, libgnat/a-nubinu.ads, libgnat/s-aoinar.ads, libgnat/s-aomoar.ads, libgnat/s-aotase.ads, libgnat/s-stopoo.ads: Remove aspects that we will not implement.
2020-06-11[Ada] Add fallback on Integer_ArithmeticArnaud Charlet1-14/+75
2020-06-11 Arnaud Charlet <charlet@adacore.com> gcc/ada/ * libgnat/s-aoinar.adb (Atomic_Fetch_And_Add, Atomic_Fetch_And_Subtract): Add fallback using compare-and-exchange, in case the integer type does not map to a machine type.
2020-06-11asan: fix RTX emission for ilp32Martin Liska1-0/+1
gcc/ChangeLog: PR sanitizer/95634 * asan.c (asan_emit_stack_protection): Fix emission for ilp32 by using Pmode instead of ptr_mode. Co-Authored-By: Jakub Jelinek <jakub@redhat.com>
2020-06-11vect: Rename things related to rgroup_masksKewen Lin3-130/+133
Power supports vector memory access with length (in bytes) instructions. Like existing fully masking for SVE, it is another approach to vectorize the loop using partially-populated vectors. As Richard Sandiford pointed out, we can rename the rgroup struct rgroup_masks to rgroup_controls, rename its members mask_type to type, masks to controls to be more generic. Besides, this patch also renames some functions like vect_set_loop_mask to vect_set_loop_control, release_vec_loop_masks to release_vec_loop_controls, vect_set_loop_masks_directly to vect_set_loop_controls_directly. Bootstrapped/regtested on aarch64-linux-gnu. gcc/ChangeLog: * tree-vect-loop-manip.c (vect_set_loop_mask): Renamed to ... (vect_set_loop_control): ... this. (vect_maybe_permute_loop_masks): Rename rgroup_masks related things. (vect_set_loop_masks_directly): Renamed to ... (vect_set_loop_controls_directly): ... this. Also rename some variables with ctrl instead of mask. Rename vect_set_loop_mask to vect_set_loop_control. (vect_set_loop_condition_masked): Rename rgroup_masks related things. Also rename some variables with ctrl instead of mask. * tree-vect-loop.c (release_vec_loop_masks): Renamed to ... (release_vec_loop_controls): ... this. Rename rgroup_masks related things. (_loop_vec_info::~_loop_vec_info): Rename release_vec_loop_masks to release_vec_loop_controls. (can_produce_all_loop_masks_p): Rename rgroup_masks related things. (vect_get_max_nscalars_per_iter): Likewise. (vect_estimate_min_profitable_iters): Likewise. (vect_record_loop_mask): Likewise. (vect_get_loop_mask): Likewise. * tree-vectorizer.h (struct rgroup_masks): Renamed to ... (struct rgroup_controls): ... this. Also rename mask_type to type and rename masks to controls.
2020-06-11vect: Rename fully_masked_p to using_partial_vectors_pKewen Lin3-21/+28
Power supports vector memory access with length (in bytes) instructions. Like existing fully masking for SVE, it is another approach to vectorize the loop using partially-populated vectors. As Richard Sandiford suggested, this patch is to update the existing fully_masked_p field to using_partial_vectors_p. Introduce one macro LOOP_VINFO_USING_PARTIAL_VECTORS_P for partial vectorization checking usage, update the LOOP_VINFO_FULLY_MASKED_P with LOOP_VINFO_USING_PARTIAL_VECTORS_P && !masks.is_empty() and still use it for mask-based partial vectors approach specific checks. Bootstrapped/regtested on aarch64-linux-gnu. gcc/ChangeLog: * tree-vect-loop-manip.c (vect_set_loop_condition): Rename LOOP_VINFO_FULLY_MASKED_P to LOOP_VINFO_USING_PARTIAL_VECTORS_P. (vect_gen_vector_loop_niters): Likewise. (vect_do_peeling): Likewise. * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename fully_masked_p to using_partial_vectors_p. (vect_analyze_loop_costing): Rename LOOP_VINFO_FULLY_MASKED_P to LOOP_VINFO_USING_PARTIAL_VECTORS_P. (determine_peel_for_niter): Likewise. (vect_estimate_min_profitable_iters): Likewise. (vect_transform_loop): Likewise. * tree-vectorizer.h (LOOP_VINFO_FULLY_MASKED_P): Updated. (LOOP_VINFO_USING_PARTIAL_VECTORS_P): New macro.
2020-06-11vect: Rename can_fully_mask_p to can_use_partial_vectors_pKewen Lin3-24/+29
Power supports vector memory access with length (in bytes) instructions. Like existing fully masking for SVE, it is another approach to vectorize the loop using partially-populated vectors. As Richard Sandiford pointed out, we should extend the existing flag can_fully_mask_p to be more generic, to indicate whether we have any chances with partial vectors for this loop. So this patch is to rename this flag to can_use_partial_vectors_p to be more meaningful, also rename the macro LOOP_VINFO_CAN_FULLY_MASK_P to LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P. Bootstrapped/regtested on aarch64-linux-gnu. gcc/ChangeLog: * tree-vect-loop.c (_loop_vec_info::_loop_vec_info): Rename can_fully_mask_p to can_use_partial_vectors_p. (vect_analyze_loop_2): Rename LOOP_VINFO_CAN_FULLY_MASK_P to LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P. Rename saved_can_fully_mask_p to saved_can_use_partial_vectors_p. (vectorizable_reduction): Rename LOOP_VINFO_CAN_FULLY_MASK_P to LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P. (vectorizable_live_operation): Likewise. * tree-vect-stmts.c (permute_vec_elements): Likewise. (check_load_store_masking): Likewise. (vectorizable_operation): Likewise. (vectorizable_store): Likewise. (vectorizable_load): Likewise. (vectorizable_condition): Likewise. * tree-vectorizer.h (LOOP_VINFO_CAN_FULLY_MASK_P): Renamed to ... (LOOP_VINFO_CAN_USE_PARTIAL_VECTORS_P): ... this. (_loop_vec_info): Rename can_fully_mask_p to can_use_partial_vectors_p.
2020-06-11Fix -Wformat-diag in options-save.cMartin Liska1-1/+1
The patch removes bunch of warnings: options-save.c:12004:29: warning: unquoted identifier or keyword ‘global_options’ in format [-Wformat-diag] 12004 | internal_error ("Error: global_options are modified in local context\n"); gcc/ChangeLog: * optc-save-gen.awk: Quote error string.
2020-06-10slim up mem exprs to avoid line breaks in -fverbose-asmAlexandre Oliva1-1/+2
An asm operand with a "VIEW_CONVERT_EXPR<struct { [...] }>" will output the definition of the struct as asm code. Oops. Enable TDF_SLIM in print_mem_expr to avoid such line breaks. for gcc/ChangeLog * print-rtl.c (print_mem_expr): Enable TDF_SLIM in dump_flags.
2020-06-10RISC-V: Unify the output asm pattern between gpr_save and gpr_restore pattern.Kito Cheng4-18/+3
gcc/ChangeLog: * config/riscv/riscv-protos.h (riscv_output_gpr_save): Remove. * config/riscv/riscv-sr.c (riscv_sr_match_prologue): Update value. * config/riscv/riscv.c (riscv_output_gpr_save): Remove. * config/riscv/riscv.md (gpr_save): Update output asm pattern.
2020-06-10RISC-V: Describe correct USEs for gpr_save pattern [PR95252]Kito Cheng6-5/+156
- Verified on rv32emc/rv32gc/rv64gc bare-metal target and rv32gc/rv64gc linux target with qemu. gcc/ChangeLog: * config/riscv/predicates.md (gpr_save_operation): New. * config/riscv/riscv-protos.h (riscv_gen_gpr_save_insn): New. (riscv_gpr_save_operation_p): Ditto. * config/riscv/riscv-sr.c (riscv_remove_unneeded_save_restore_calls): Ignore USEs for gpr_save patter. * config/riscv/riscv.c (gpr_save_reg_order): New. (riscv_expand_prologue): Use riscv_gen_gpr_save_insn to gen gpr_save. (riscv_gen_gpr_save_insn): New. (riscv_gpr_save_operation_p): Ditto. * config/riscv/riscv.md (S3_REGNUM): New. (S4_REGNUM): Ditto. (S5_REGNUM): Ditto. (S6_REGNUM): Ditto. (S7_REGNUM): Ditto. (S8_REGNUM): Ditto. (S9_REGNUM): Ditto. (S10_REGNUM): Ditto. (S11_REGNUM): Ditto. (gpr_save): Model USEs correctly. gcc/testsuite/ChangeLog: * gcc.target/riscv/pr95252.c: New.
2020-06-11Daily bump.GCC Administrator6-1/+514
2020-06-10[PR51447] restore the global reg var before returning from mainAlexandre Oliva1-0/+6
A runtime system might legitimately hold in rbx a value expected to be preserved across the call to main, but its use as a global register variable stops main from preserving it. for gcc/testsuite/ChangeLog PR rtl-optimization/51447 * gcc.c-torture/execute/pr51447.c (main): Preserve call-saved register.
2020-06-10coroutines: Make call argument handling more robust [PR95440]Iain Sandoe2-2/+41
build_new_method_call is supposed to be able to handle a null arguments list pointer (when the method has no parms). There were a couple of places where uses of the argument list pointer were not defended against NULL. gcc/cp/ChangeLog: PR c++/95440 * call.c (add_candidates): Use vec_safe_length() for testing the arguments list. (build_new_method_call_1): Use vec_safe_is_empty() when checking for an empty args list. gcc/testsuite/ChangeLog: PR c++/95440 * g++.dg/coroutines/pr95440.C: New test.
2020-06-10PR middle-end/95353 - spurious -Wstringop-overflow writing to a trailing ↵Martin Sebor20-361/+1188
array plus offset Also resolves: PR middle-end/92939 - missing -Wstringop-overflow on negative index from the end of array gcc/ChangeLog: PR middle-end/95353 PR middle-end/92939 * builtins.c (inform_access): New function. (check_access): Call it. Add argument. (addr_decl_size): Remove. (get_range): New function. (compute_objsize): New overload. Only use compute_builtin_object_size with raw memory function. (check_memop_access): Pass new argument to compute_objsize and check_access. (expand_builtin_memchr, expand_builtin_strcat): Same. (expand_builtin_strcpy, expand_builtin_stpcpy_1): Same. (expand_builtin_stpncpy, check_strncat_sizes): Same. (expand_builtin_strncat, expand_builtin_strncpy): Same. (expand_builtin_memcmp): Same. * builtins.h (check_nul_terminated_array): Declare extern. (check_access): Add argument. (struct access_ref, struct access_data): New structs. * gimple-ssa-warn-restrict.c (clamp_offset): New helper. (builtin_access::overlap): Call it. * tree-object-size.c (decl_init_size): Declare extern. (addr_object_size): Correct offset computation. * tree-object-size.h (decl_init_size): Declare. * tree-ssa-strlen.c (handle_integral_assign): Remove a call to maybe_warn_overflow when assigning to an SSA_NAME. gcc/testsuite/ChangeLog: PR middle-end/95353 PR middle-end/92939 * c-c++-common/Wstringop-truncation.c: Remove an xfail. * gcc.dg/Warray-bounds-46.c: Remove a bogus warning. * gcc.dg/Wrestrict-9.c: Disable -Wstringop-overflow. * gcc.dg/Wstringop-overflow-12.c: Remove xfails. * gcc.dg/Wstringop-overflow-28.c: Same. * gcc.dg/builtin-stringop-chk-4.c: Same. * gcc.dg/builtin-stringop-chk-5.c: Same. * gcc.dg/builtin-stringop-chk-8.c: Same. * gcc.dg/strlenopt-74.c: Avoid buffer overflow. * gcc.dg/Wstringop-overflow-34.c: New test. * gcc.dg/Wstringop-overflow-35.c: New test. * gcc.dg/Wstringop-overflow-36.c: New test. * gcc.dg/Wstringop-overflow-37.c: New test. * gcc.dg/Wstringop-overflow-38.c: New test.
2020-06-10avoid stmt-info allocation for debug stmtsRichard Biener4-4/+24
The following avoids allocating stmt info structs for debug stmts. 2020-06-10 Richard Biener <rguenther@suse.de> * tree-vect-loop.c (vect_determine_vectorization_factor): Skip debug stmts. (_loop_vec_info::_loop_vec_info): Likewise. (vect_update_vf_for_slp): Likewise. (vect_analyze_loop_operations): Likewise. (update_epilogue_loop_vinfo): Likewise. * tree-vect-patterns.c (vect_determine_precisions): Likewise. (vect_pattern_recog): Likewise. * tree-vect-slp.c (vect_detect_hybrid_slp): Likewise. (_bb_vec_info::_bb_vec_info): Likewise. * tree-vect-stmts.c (vect_mark_stmts_to_be_vectorized): Likewise.