aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-10-16Adjust BB vectorization SLP build heuristicsRichard Biener2-6/+45
This changes SLP def gathering to not fail due to mismatched def type but instead demote the def to external. This allows the new testcase to be vectorized in full (with GCC 10 it is not vectorized at all and with current trunk we vectorize only the store). This is important since with BB vectorization being applied to bigger pieces of code the chance that we mix internal and external defs for an operand that should end up treated as external (built from scalars) increases. 2020-10-16 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_get_and_check_slp_defs): For BB vectorization swap operands only if it helps, demote mismatches to external. * gcc.dg/vect/bb-slp-53.c: New testcase.
2020-10-16arm: Fix wrong code generated for mve scatter store with writeback ↵Srinath Parvathaneni14-252/+32
intrinsics with -O2 (PR97271). This patch fixes (PR97271) the wrong code-gen for mve scatter store with writeback intrinsics with -O2. $cat bug.c void foo (uint32x4_t * addr, const int offset, int32x4_t value) { vstrwq_scatter_base_wb_s32 (addr, 8, value); } $ arm-none-eabi-gcc bug.c -S -O2 -march=armv8.1-m.main+mve -mfloat-abi=hard -o - Without this patch: ... foo: vldrw.32 q3, [r0] vstrw.u32 q0, [q3, #8]! ---> (A) vldr.64 d4, .L3 vldr.64 d5, .L3+8 vldrw.32 q3, [r0] vstrw.u32 q2, [q3, #8]! ---> (B) bx lr ... With this patch: ... foo: vldrw.32 q3, [r0] vstrw.u32 q0, [q3, #8]! --> (C) vstrw.32 q3, [r0] bx lr ... Without this patch 2 vstrw assembly instructions (A and B) are generated for vstrwq_scatter_base_wb_s32 intrinsic where as fix generates only one vstrw assembly instruction (C). gcc/ChangeLog: 2020-10-06 Srinath Parvathaneni <srinath.parvathaneni@arm.com> PR target/97291 * config/arm/arm-builtins.c (arm_strsbwbs_qualifiers): Modify array. (arm_strsbwbu_qualifiers): Likewise. (arm_strsbwbs_p_qualifiers): Likewise. (arm_strsbwbu_p_qualifiers): Likewise. * config/arm/arm_mve.h (__arm_vstrdq_scatter_base_wb_s64): Modify function definition. (__arm_vstrdq_scatter_base_wb_u64): Likewise. (__arm_vstrdq_scatter_base_wb_p_s64): Likewise. (__arm_vstrdq_scatter_base_wb_p_u64): Likewise. (__arm_vstrwq_scatter_base_wb_p_s32): Likewise. (__arm_vstrwq_scatter_base_wb_p_u32): Likewise. (__arm_vstrwq_scatter_base_wb_s32): Likewise. (__arm_vstrwq_scatter_base_wb_u32): Likewise. (__arm_vstrwq_scatter_base_wb_f32): Likewise. (__arm_vstrwq_scatter_base_wb_p_f32): Likewise. * config/arm/arm_mve_builtins.def (vstrwq_scatter_base_wb_add_u): Remove expansion for the builtin. (vstrwq_scatter_base_wb_add_s): Likewise. (vstrwq_scatter_base_wb_add_f): Likewise. (vstrdq_scatter_base_wb_add_u): Likewise. (vstrdq_scatter_base_wb_add_s): Likewise. (vstrwq_scatter_base_wb_p_add_u): Likewise. (vstrwq_scatter_base_wb_p_add_s): Likewise. (vstrwq_scatter_base_wb_p_add_f): Likewise. (vstrdq_scatter_base_wb_p_add_u): Likewise. (vstrdq_scatter_base_wb_p_add_s): Likewise. * config/arm/mve.md (mve_vstrwq_scatter_base_wb_<supf>v4si): Remove expand. (mve_vstrwq_scatter_base_wb_add_<supf>v4si): Likewise. (mve_vstrwq_scatter_base_wb_<supf>v4si_insn): Rename pattern to ... (mve_vstrwq_scatter_base_wb_<supf>v4si): This. (mve_vstrwq_scatter_base_wb_p_<supf>v4si): Remove expand. (mve_vstrwq_scatter_base_wb_p_add_<supf>v4si): Likewise. (mve_vstrwq_scatter_base_wb_p_<supf>v4si_insn): Rename pattern to ... (mve_vstrwq_scatter_base_wb_p_<supf>v4si): This. (mve_vstrwq_scatter_base_wb_fv4sf): Remove expand. (mve_vstrwq_scatter_base_wb_add_fv4sf): Likewise. (mve_vstrwq_scatter_base_wb_fv4sf_insn): Rename pattern to ... (mve_vstrwq_scatter_base_wb_fv4sf): This. (mve_vstrwq_scatter_base_wb_p_fv4sf): Remove expand. (mve_vstrwq_scatter_base_wb_p_add_fv4sf): Likewise. (mve_vstrwq_scatter_base_wb_p_fv4sf_insn): Rename pattern to ... (mve_vstrwq_scatter_base_wb_p_fv4sf): This. (mve_vstrdq_scatter_base_wb_<supf>v2di): Remove expand. (mve_vstrdq_scatter_base_wb_add_<supf>v2di): Likewise. (mve_vstrdq_scatter_base_wb_<supf>v2di_insn): Rename pattern to ... (mve_vstrdq_scatter_base_wb_<supf>v2di): This. (mve_vstrdq_scatter_base_wb_p_<supf>v2di): Remove expand. (mve_vstrdq_scatter_base_wb_p_add_<supf>v2di): Likewise. (mve_vstrdq_scatter_base_wb_p_<supf>v2di_insn): Rename pattern to ... (mve_vstrdq_scatter_base_wb_p_<supf>v2di): This. gcc/testsuite/ChangeLog: PR target/97291 * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_s64.c: Modify. * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_p_u64.c: Likewise. * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_s64.c: Likewise. * gcc.target/arm/mve/intrinsics/vstrdq_scatter_base_wb_u64.c: Likewise. * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_f32.c: Likewise. * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_f32.c: Likewise. * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_p_u32.c: Likewise. * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_s32.c: Likewise. * gcc.target/arm/mve/intrinsics/vstrwq_scatter_base_wb_u32.c: Likewise.
2020-10-16Fix modref-4.c testcaseJan Hubicka1-2/+2
PR testsuite/97426 * gcc.dg/tree-ssa/modref-4.c: Fix return test.
2020-10-16libsanitizer: update locale patchesMartin Liska1-1/+1
libsanitizer/ChangeLog: * LOCAL_PATCHES: Update revision.
2020-10-16Reapply all revisions mentioned in LOCAL_PATCHES.Martin Liska13-30/+57
(cherry picked from commit 21bb1625bd4f183984223ce31bd03ba47ed62f27)
2020-10-16libsanitizer: merge from masterMartin Liska130-1148/+2840
2020-10-16RISC-V: Handle implied extension in multilib-generatorKito Cheng1-4/+20
- -march has handle implied extension for a while, so I think multilib-generator should handle this well too. - Currently only add rule for D imply F. gcc/ChangeLog: * config/riscv/multilib-generator (IMPLIED_EXT): New. (arch_canonicalize): Update comment and handle implied extensions.
2020-10-16Refactor vect_get_and_check_slp_defs some moreRichard Biener1-59/+82
This refactors vect_get_and_check_slp_defs so that the ops and def_stmts arrays are filled for all stmts and operands even when we signal failure. This allows later changes for BB vectorization SLP discovery heuristics. 2020-10-16 Richard Biener <rguenther@suse.de> * tree-vect-slp.c (vect_get_and_check_slp_defs): First analyze all operands and fill in the def_stmts and ops entries. (vect_def_types_match): New helper.
2020-10-16IPA: compare VRP types.Martin Liska2-1/+30
gcc/ChangeLog: PR ipa/97404 * ipa-prop.c (struct ipa_vr_ggc_hash_traits): Compare types of VRP as we can merge ranges of different types. gcc/testsuite/ChangeLog: PR ipa/97404 * gcc.c-torture/execute/pr97404.c: New test.
2020-10-16[Ada] Assorted style cleanupsPiotr Trojanek12-30/+27
gcc/ada/ * checks.adb, exp_aggr.adb, exp_attr.adb, exp_ch6.adb, freeze.adb, sem_aggr.adb, sem_attr.adb, sem_ch13.adb, sem_ch13.ads, sem_ch6.adb, sem_eval.adb, sem_util.adb: Fix style and typos.
2020-10-16[Ada] Preelaborate rules not fully enforcedArnaud Charlet1-0/+1
gcc/ada/ * sem_cat.adb (Is_Primary): Handle N_Range properly.
2020-10-16[Ada] Implement expansion of CUDA_Execute pragmaGhjuvan Lacambre5-2/+567
gcc/ada/ * elists.ads (New_Elmt_List): New functions. * elists.adb (New_Elmt_List): New functions. * exp_prag.adb: Add dependency on Elists. (Expand_Pragma_CUDA_Execute): New function. (Expand_N_Pragma): Add call to Expand_Pragma_CUDA_Execute. * rtsfind.ads: Add CUDA.Internal, CUDA.Runtime, System.C packages and RE_Push_Call_Configuration, RE_Pop_Call_Configuration, RE_Launch_Kernel, RO_IC_Unsigned, RO_IC_Unsigned_Long_Long entities. * rtsfind.adb: Extend Interfaces_Descendant to include Interfaces_C.
2020-10-16[Ada] Ada2020: parsing of qualified exprs with new agg syntaxBob Duff1-5/+10
gcc/ada/ * par-ch4.adb (P_Name): Allow Tok_Left_Bracket in two places to call P_Qualified_Expression. We don't need to modify other places that call P_Qualified_Expression, because a qualified_expression is a name in Ada 2012 and higher, so P_Name is the right place. The parser already parses aggregates with brackets; we just need to allow that in qualified expressions.
2020-10-16[Ada] Crash in generic renaming declaration of child unitJavier Miranda1-0/+49
gcc/ada/ * sem_ch12.adb (Check_Generic_Child_Unit): When the child unit is a renaming of a generic child unit then traverse the scope containing the renaming declaration to locate the instance of its parent. Otherwise the parent is not installed and the frontend cannot process the instantiation.
2020-10-16[Ada] Remove non-ASCII characterBob Duff1-1/+4
gcc/ada/ * libgnat/a-numeri.ads: Remove the greek letter.
2020-10-16[Ada] Attribute Img on derived typesEd Schonberg1-2/+8
gcc/ada/ * exp_imgv.adb (Expand_Image_Attribute): Refine previous patch to use root type (and not base type) on enumeration types.
2020-10-16[Ada] Attribute Img on derived typesEd Schonberg1-12/+8
gcc/ada/ * exp_imgv.adb (Expand_Image_Attribute): Use the base type instead of the root type when type of object is private. Remove Ada_2020 guard, because it has been checked during prior analysis. Use Underlying_Type in all cases, as it is a no-op on types that are not private.
2020-10-16[Ada] Ada2020: AI12-0129 Make protected objects more protectingArnaud Charlet4-4/+34
gcc/ada/ * aspects.ads, snames.ads-tmpl: Add support for Exclusive_Functions aspect. * sem_ch13.adb (Analyze_Aspect_Specifications): Ditto. * exp_ch9.adb (Build_Protected_Subprogram_Body): Take aspect Exclusive_Functions into account.
2020-10-16[Ada] Clean up in system.ads dependencies during compiler buildArnaud Charlet2-5/+6
gcc/ada/ * gcc-interface/Make-lang.in: Update dependencies on system.ads, add gnatbind switch -t to avoid timestamp inconsistencies during build. * libgnat/system.ads: Move... * gcc-interface/system.ads: ... here.
2020-10-16[Ada] Legal actual type with inherited discriminants rejected in instantiationGary Dismukes1-2/+59
gcc/ada/ * sem_eval.adb (Subtypes_Statically_Match): Retrieve discriminant constraints from the two types via new function Original_Discriminant_Constraint rather than Discriminant_Constraint. (Original_Discriminant_Constraint): New function to locate the nearest explicit discriminant constraint associated with a type that may possibly have inherited a constraint from an ancestor type.
2020-10-16[Ada] Remove obsolete workaround regarding array returnsBob Duff1-8/+1
gcc/ada/ * exp_ch6.adb (Expand_Simple_Function_Return): Remove obsolete comment and code.
2020-10-16[Ada] Convert from UTF_16 to UTF_8 fails for large valuesArnaud Charlet1-1/+1
gcc/ada/ PR ada/95953 * libgnat/a-suenco.adb (Convert): Fix handling of third UTF-8 byte.
2020-10-16[Ada] Avoid premature finalization of a function resultSteve Baird1-1/+6
gcc/ada/ * exp_util.adb (Is_Related_To_Func_Return): Cope with the case where the FE introduces a type conversion.
2020-10-16[Ada] Constants no longer synchronised if they are access-to-variableChris Martin2-3/+19
gcc/ada/ * sem_util.ads, sem_util.adb (Is_Access_Variable): New function. (Is_Synchronized_Object): Call new function when determining if a constant can be regarded as synchronized.
2020-10-16[Ada] Finalization of uninitialized object with build in place callArnaud Charlet2-5/+13
gcc/ada/ * exp_ch6.adb (Make_Build_In_Place_Call_In_Object_Declaration): Call Set_BIP_Initialization_Call systematically. * exp_ch7.adb (Process_Transient_In_Scope): Take BIP_Initialization_Call into account to decide where to insert the Hook.
2020-10-16[Ada] Detect qualified type names for AI12-0027Piotr Trojanek2-2/+2
gcc/ada/ * sem_util.adb (Is_View_Conversion): Detect qualified types. * sem_util.ads (Is_Actual_In_Out_Parameter): Fix style in comment.
2020-10-16[Ada] Relax too strong assertionsArnaud Charlet2-2/+2
gcc/ada/ * scil_ll.adb, sem_scil.adb: Update assertions.
2020-10-16[Ada] Improvements to implementation of Ada_2020 attribute ReduceEd Schonberg2-22/+98
gcc/ada/ * sem_attr.adb (Min_Max): Handle the case where attribute name (qualified by required type) appears as the reducer of a 'Reduce attribute reference. (Resolve_Attribute) <Reduce>: Handle properly the presence of a procedure or an attribute reference Min/Max as a reducer. * exp_attr.adb (Expand_Attribute_Reference) <Reduce>: New subprogram Build_Stat, to construct the combining statement which appears in the generated loop for Reduce, and which is either a function call when the reducer is a function or an attribute, or a procedure call when reducer is an appropriate procedure. BuilD_Stat is used both when the prefix of 'Reduce is a value sequence and when it is an object
2020-10-16[Ada] Reduce use of primary stack on string concatenationArnaud Charlet1-23/+91
gcc/ada/ * exp_ch4.adb (Expand_Concatenate): Allocate result of string concatenation on secondary stack when relevant.
2020-10-16[Ada] Spurious visibility error on Declare_Expression with renamesEd Schonberg1-1/+4
gcc/ada/ * sem_res.adb (Resolve_Declare_Expression): Retrieve the created block entity that is the scope of the local declarations, from either a local object declaration or an object renaming declaration. The block entity does not have an explicit declaration, but appears as the scope of all locally declared objects.
2020-10-16[Ada] Use new Max_Integer_Size attribute in system.ads filesEric Botcazou63-195/+195
gcc/ada/ * libgnat/system-aix.ads: Likewise. * libgnat/system-darwin-arm.ads: Likewise. * libgnat/system-darwin-ppc.ads: Likewise. * libgnat/system-darwin-x86.ads: Likewise. * libgnat/system-djgpp.ads: Likewise. * libgnat/system-dragonfly-x86_64.ads: Likewise. * libgnat/system-freebsd.ads: Likewise. * libgnat/system-hpux-ia64.ads: Likewise. * libgnat/system-hpux.ads: Likewise. * libgnat/system-linux-alpha.ads: Likewise. * libgnat/system-linux-arm.ads: Likewise. * libgnat/system-linux-hppa.ads: Likewise. * libgnat/system-linux-ia64.ads: Likewise. * libgnat/system-linux-m68k.ads: Likewise. * libgnat/system-linux-mips.ads: Likewise. * libgnat/system-linux-ppc.ads: Likewise. * libgnat/system-linux-riscv.ads: Likewise. * libgnat/system-linux-s390.ads: Likewise. * libgnat/system-linux-sh4.ads: Likewise. * libgnat/system-linux-sparc.ads: Likewise. * libgnat/system-linux-x86.ads: Likewise. * libgnat/system-lynxos178-ppc.ads: Likewise. * libgnat/system-lynxos178-x86.ads: Likewise. * libgnat/system-mingw.ads: Likewise. * libgnat/system-qnx-aarch64.ads: Likewise. * libgnat/system-rtems.ads: Likewise. * libgnat/system-solaris-sparc.ads: Likewise. * libgnat/system-solaris-x86.ads: Likewise. * libgnat/system-vxworks-arm-rtp-smp.ads: Likewise. * libgnat/system-vxworks-arm-rtp.ads: Likewise. * libgnat/system-vxworks-arm.ads: Likewise. * libgnat/system-vxworks-e500-kernel.ads: Likewise. * libgnat/system-vxworks-e500-rtp-smp.ads: Likewise. * libgnat/system-vxworks-e500-rtp.ads: Likewise. * libgnat/system-vxworks-e500-vthread.ads: Likewise. * libgnat/system-vxworks-ppc-kernel.ads: Likewise. * libgnat/system-vxworks-ppc-ravenscar.ads: Likewise. * libgnat/system-vxworks-ppc-rtp-smp.ads: Likewise. * libgnat/system-vxworks-ppc-rtp.ads: Likewise. * libgnat/system-vxworks-ppc-vthread.ads: Likewise. * libgnat/system-vxworks-ppc.ads: Likewise. * libgnat/system-vxworks-x86-kernel.ads: Likewise. * libgnat/system-vxworks-x86-rtp-smp.ads: Likewise. * libgnat/system-vxworks-x86-rtp.ads: Likewise. * libgnat/system-vxworks-x86-vthread.ads: Likewise. * libgnat/system-vxworks-x86.ads: Likewise. * libgnat/system-vxworks7-aarch64-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-aarch64.ads: Likewise. * libgnat/system-vxworks7-arm-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-arm.ads: Likewise. * libgnat/system-vxworks7-e500-kernel.ads: Likewise. * libgnat/system-vxworks7-e500-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-e500-rtp.ads: Likewise. * libgnat/system-vxworks7-ppc-kernel.ads: Likewise. * libgnat/system-vxworks7-ppc-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-ppc-rtp.ads: Likewise. * libgnat/system-vxworks7-ppc64-kernel.ads: Likewise. * libgnat/system-vxworks7-ppc64-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-x86-kernel.ads: Likewise. * libgnat/system-vxworks7-x86-rtp-smp.ads: Likewise. * libgnat/system-vxworks7-x86-rtp.ads: Likewise. * libgnat/system-vxworks7-x86_64-kernel.ads: Likewise. * libgnat/system-vxworks7-x86_64-rtp-smp.ads: Likewise.
2020-10-16[Ada] Remove support for -gnatP and pragma PollingArnaud Charlet78-572/+5
gcc/ada/ * Makefile.rtl, gnat1drv.adb, expander.adb doc/gnat_rm/implementation_defined_pragmas.rst, doc/gnat_ugn/building_executable_programs_with_gnat.rst, doc/gnat_ugn/the_gnat_compilation_model.rst, exp_ch5.ads, exp_ch5.adb, exp_ch6.adb, exp_ch7.adb, exp_util.adb, exp_util.ads, libgnarl/s-osinte__aix.adb, libgnarl/s-osinte__android.adb, libgnarl/s-osinte__darwin.adb, libgnarl/s-osinte__gnu.adb, libgnarl/s-osinte__hpux-dce.adb, libgnarl/s-osinte__lynxos178.adb, libgnarl/s-osinte__posix.adb, libgnarl/s-osinte__qnx.adb, libgnarl/s-osinte__rtems.adb, libgnarl/s-osinte__solaris.adb, libgnarl/s-osinte__vxworks.adb, libgnarl/s-osinte__x32.adb, libgnarl/s-solita.adb, libgnarl/s-taasde.adb, libgnarl/s-taprob.adb, libgnarl/s-taprop__dummy.adb, libgnarl/s-taprop__hpux-dce.adb, libgnarl/s-taprop__linux.adb, libgnarl/s-taprop__mingw.adb, libgnarl/s-taprop__posix.adb, libgnarl/s-taprop__qnx.adb, libgnarl/s-taprop__solaris.adb, libgnarl/s-taprop__vxworks.adb, libgnarl/s-tarest.adb, libgnarl/s-tasini.adb, libgnarl/s-taskin.adb, libgnarl/s-taspri__dummy.ads, libgnarl/s-taspri__hpux-dce.ads, libgnarl/s-taspri__lynxos.ads, libgnarl/s-taspri__mingw.ads, libgnarl/s-taspri__posix-noaltstack.ads, libgnarl/s-taspri__posix.ads, libgnarl/s-taspri__solaris.ads, libgnarl/s-taspri__vxworks.ads, libgnarl/s-tassta.adb, libgnarl/s-tasuti.adb, libgnarl/s-tposen.adb, libgnat/a-except.adb, libgnat/a-except.ads, libgnat/s-dwalin.adb, libgnat/s-dwalin.ads, libgnat/s-mastop.ads, libgnat/s-soflin.adb, libgnat/s-stalib.adb, libgnat/s-stalib.ads, libgnat/s-stchop.adb, libgnat/s-stchop.ads, libgnat/s-stchop__limit.ads, libgnat/s-traceb.ads, libgnat/s-traent.adb, libgnat/s-traent.ads, libgnat/s-trasym.adb, libgnat/s-trasym.ads, libgnat/s-trasym__dwarf.adb, opt.adb, opt.ads, par-prag.adb, sem_prag.adb, snames.ads-tmpl, switch-c.adb, targparm.adb, targparm.ads, usage.adb: Remove support for -gnatP and pragma Polling. * gnat_ugn.texi: Regenerate. * libgnat/a-excpol.adb, libgnat/a-excpol__abort.adb: Removed.
2020-10-16[Ada] Unique itypes names for unconstrained array object declarationPiotr Trojanek1-1/+6
gcc/ada/ * sem_ch3.adb (Array_Type_Declaration): Create itype with unique name.
2020-10-16[Ada] Cleanup related to itypes for unconstrained object declarationPiotr Trojanek1-21/+15
gcc/ada/ * sem_ch3.adb (Analyze_Object_Declaration): Limit scope of a local object by hiding it from local subprograms; simplify nested if-then-if-then condition for an Ada 83 restriction. (Array_Type_Declaration): Confirm with assertion when the else branch is executed. (Find_Type_Of_Object): Simplify membership test with a subtype range.
2020-10-16[Ada] SPARK: update for effectively volatile types and objectsYannick Moy4-43/+149
gcc/ada/ * sem_prag.adb (Analyze_Global_In_Decl_Part): Update check to reject volatile object for reading. * sem_res.adb (Resolve_Actuals, Resolve_Entity_Name): Update check to reject volatile object for reading. * sem_util.adb, sem_util.ads (Check_Nonvolatile_Function_Profile, Has_Effectively_Volatile_Profile): Detect use of volatile object for reading. (Has_Enabled_Property): Accept constants as well. (Is_Effectively_Volatile_For_Reading): New function based on existing Is_Effectively_Volatile. (Is_Effectively_Volatile_Object_For_Reading): Adapted from the existing Is_Effectively_Volatile_Object, using a shared implementation in Is_Effectively_Volatile_Object_Shared.
2020-10-16[Ada] GNAT-LLVM unnesting issues in elaboration codeGary Dismukes1-0/+198
gcc/ada/ * exp_ch7.adb (Check_Unnesting_In_Decls_Or_Stmts): In the case of an if-statement, call Unnest_If_Statement to determine whether there are nested subprograms in any of the statement lists of the "if" parts that require a wrapping procedure to handle possible up-level refeferences. (Unnest_Block): Call Check_Unnesting_In_Handlers to do unnesting of subprograms in exception handlers of the block statement. (Unnest_If_Statement): New procedure to traverse the parts of an if-statement and create wrapper procedures as needed to encapsulate nested subprograms that may make up-level references. (Check_Stmts_For_Subp_Unnesting): New support procedure in Unnest_If_Statement to traverse a statement list looking for top-level subprogram bodies that require wrapping inside a procedure (via Unnest_Statement_List) as well as possibly having other statements (block, loop, if) that may themselves require an unnesting transformation (via Check_Unnesting_In_Decls_Or_Stmts). (Unnest_Statement_List): New support procedure to traverse the statements of a statement list that contains subprogram bodies at the top level and replace the statement list with a wrapper procedure body encapsulating the statements and a call to the procedure.
2020-10-16[Ada] Crash when specifying an abstract subprogram with Stream_ConvertArnaud Charlet1-0/+3
gcc/ada/ * sem_prag.adb (Check_OK_Stream_Convert_Function): Check for abstract subprograms.
2020-10-16[Ada] Fix documentation of No_Local_Timing_EventsPiotr Trojanek2-2/+2
gcc/ada/ * doc/gnat_rm/standard_and_implementation_defined_restrictions.rst (No_Local_Timing_Events): Package Timing_Events is a child of Ada.Real_Time, not of Ada. * gnat_rm.texi: Regenerate.
2020-10-16[Ada] Add Max_Integer_Size attribute and couple of helper functionsEric Botcazou16-674/+682
gcc/ada/ * doc/gnat_rm/implementation_defined_attributes.rst: Document the new Max_Integer_Size attribute. * gnat_rm.texi: Regenerate. * exp_attr.adb (Get_Integer_Type): Call Small_Integer_Type_For. (Expand_N_Attribute_Reference) <Attribute_Pred>: Replace selection code with call to Integer_Type_For. <Attribute_Succ>: Likewise. <Attribute_Val>: Likewise. <Attribute_Valid>: Likewise. <Attribute_Max_Integer_Size>: Raise Program_Error. * exp_ch3.adb (Expand_Freeze_Enumeration_Type): Replace selection code with call to Integer_Type_For. (Simple_Init_Initialize_Scalars_Type): Use Long_Long_Unsigned and System_Max_Integer_Size to size the largest integer type. * exp_pakd.adb (Compute_Linear_Subscript): Minor tweak. (Create_Packed_Array_Impl_Type): Use Small_Integer_Type_For. * exp_util.ads (Integer_Type_For): New function. (Small_Integer_Type_For): Likewise. * exp_util.adb (Adjust_Condition): Use Integer_Type_For. (Component_May_Be_Bit_Aligned): Use System_Max_Integer_Size. (Integer_Type_For): New function. (Small_Integer_Type_For): Likewise. (Matching_Standard_Type): Use Small_Integer_Type_For. (Needs_Constant_Address): Replace 64 with System_Max_Integer_Size. * freeze.adb (Set_Small_Size): Likewise. (Size_Known): Likewise. (Check_Suspicious_Modulus): Likewise. (Check_Large_Modular_Array): Likewise. (Freeze_Entity): Likewise. * layout.adb (Layout_Type): Likewise. * sem_aggr.adb: Add with and use clauses for Ttypes. (Resolve_Aggregate): Replace 64 with System_Max_Integer_Size. * sem_attr.ads (Attribute_Impl_Def): Add Attribute_Max_Integer_Size. * sem_attr.adb (Analyze_Attribute) <Attribute_Max_Integer_Size>: New (Eval_Attribute): Likewise. * sem_ch13.adb (Adjust_Record_For_Reverse_Bit_Order): Change max scalar size to System_Max_Integer_Size. (Check_Array_Type): Replace 64 with System_Max_Integer_Size and remove superfluous test. (OK_Component): Likewise. * sem_ch5.adb: Add with and use clauses for Ttypes. (Analyze_Assignment): Replace 64 with System_Max_Integer_Size. * snames.ads-tmpl (Name_Max_Integer_Size): New attribute name. (Attribute_Id): Add Attribute_Max_Integer_Size. * ttypes.ads (System_Max_Integer_Size): New constant.
2020-10-16tree-optimization/97428 - split SLP groups for loop vectorizationRichard Biener3-9/+40
This enables SLP store group splitting also for loop vectorization. For the existing testcase gcc.dg/vect/vect-complex-5.c this then generates much better code, likewise for the PR97428 testcase. Both of those have a splitting opportunity splitting the group into two equal (vector-sized) halves, still the patch enables quite arbitrary splitting since generally the interleaving scheme results in quite awkward code for even small groups. If any problems surface with this it's easy to restrict the splitting to known-good cases. 2020-10-15 Richard Biener <rguenther@suse.de> PR tree-optimization/97428 * tree-vect-slp.c (vect_analyze_slp_instance): Split store groups also for loop vectorization. * gcc.dg/vect/vect-complex-5.c: Expect to SLP. * gcc.dg/vect/pr97428.c: Likewise.
2020-10-16Daily bump.GCC Administrator8-1/+556
2020-10-15compiler: don't export function type parameter namesIan Lance Taylor2-3/+7
When hashing a function type the parameter names are ignored. Therefore, we should not write them into the export data. Otherwise, minor changes in the order in which we process the types can cause the export data to change uselessly, leading to unnecessary rebuilds. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262818
2020-10-15runtime: use correct types in __go_ptrace shimNikhil Benesch2-2/+2
Make the types of the addr and data arguments in the __go_ptrace shim match the types declared in Go and the types declared by the C ptrace function, i.e., void*. This avoids a warning about an implicit int-to-pointer cast on some platforms. Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262340
2020-10-15libgo: correct Makefile typo in path to x/net/route packageNikhil Benesch3-3/+3
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262342
2020-10-15compiler: export type for string and bool constantsIan Lance Taylor3-39/+53
Also consolidate the identical code for constant type export into a pair of static methods. Fixes golang/go#35739 Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/262437
2020-10-15testsuite: Fix some endianness bugs in p9 runnable tests.David Edelsohn2-4/+39
This patch fixes some bugs in the powerpc testsuite for runnable tests whose expected values were endian dependent. gcc/testsuite/ChangeLog: 2020-10-15 David Edelsohn <dje.gcc@gmail.com> * gcc.target/powerpc/builtins-1-p9-runnable.c: Adjust for big endian. * gcc.target/powerpc/builtins-7-p9-runnable.c: Same.
2020-10-15libstdc++: Fix typos in copyright noticeJonathan Wakely2-4/+4
It looks like I did a s/a/__a/ substition in one of these headers, and then copied it to the other one. libstdc++-v3/ChangeLog: * include/std/concepts: Fix typos in copyright notice. * include/std/ranges: Likewise.
2020-10-15c++: Fix [[deprecated]] and implicit operator==. [PR97358]Jason Merrill2-0/+19
Trying to diagnose the problem with an implicit copy function breaks if the function isn't actually a copy function. gcc/cp/ChangeLog: PR c++/95844 * decl.c (copy_fn_p): Return false for a function that is neither a constructor nor an assignment operator. (move_signature_fn_p): Likewise. gcc/testsuite/ChangeLog: PR c++/95844 * g++.dg/cpp2a/spaceship-eq10.C: New test.
2020-10-15testsuite: Add appropriate target requirements to P9 testcases.David Edelsohn4-7/+11
This patch adds effective target and target specific expected results to a few P9 testcases. gcc/testsuite/ChangeLog: * gcc.target/powerpc/builtins-5-p9-runnable.c: Require lp64. * gcc.target/powerpc/builtins-msum-runnable.c: Require int128. * gcc.target/powerpc/float128-cmp2-runnable.c: Require float128. * gcc.target/powerpc/fold-vec-extract-double.p9.c: Require lp64.
2020-10-15c++: Improve printing of pointers-to-members [PR97406, PR85901]Marek Polacek3-1/+77
This PR points out that when printing the parameter mapping for a pointer-to-member-function, the output was truncated: [with T = void (X::*] Fixed by printing the abstract declarator for pointers-to-members in cxx_pretty_printer::type_id. So now we print: [with T = void (X::*)()] But when I tried a pointer-to-data-member, I got [with T = ‘offset_type’ not supported by simple_type_specifier)‘offset_type’ not supported by direct_abstract_declarator] so had to fix that too so that we now print: [with T = int X::*] or [with T = int (X::*)[5]] when the type is an array type. Which is what PR85901 was about. gcc/cp/ChangeLog: PR c++/97406 PR c++/85901 * cxx-pretty-print.c (pp_cxx_type_specifier_seq): Handle OFFSET_TYPE. (cxx_pretty_printer::abstract_declarator): Fix the printing of ')'. (cxx_pretty_printer::direct_abstract_declarator): Handle OFFSET_TYPE. (cxx_pretty_printer::type_id): Likewise. Print the abstract declarator for pointers-to-members. gcc/testsuite/ChangeLog: PR c++/97406 PR c++/85901 * g++.dg/diagnostic/ptrtomem1.C: New test. * g++.dg/diagnostic/ptrtomem2.C: New test.