aboutsummaryrefslogtreecommitdiff
path: root/gcc
AgeCommit message (Collapse)AuthorFilesLines
2020-10-19[Ada] Simplify membership test for operatorsPiotr Trojanek1-3/+1
gcc/ada/ * exp_ch6.adb (May_Fold): Detect all operators, i.e. both binary and unary ones.
2020-10-19[Ada] Simplify repeated calls with membership testPiotr Trojanek1-2/+2
gcc/ada/ * inline.adb (Expand_Inlined_Call): Simplify repeated calls to Nkind.
2020-10-19Handle right shifts by zero in range-ops.Aldy Hernandez2-0/+21
If the shift amount in operator_lshift::op1_range was zero, an invalid range of [1, 0] was being created. gcc/ChangeLog: PR tree-optimization/97467 * range-op.cc (operator_lshift::op1_range): Handle shifts by 0. gcc/testsuite/ChangeLog: * gcc.dg/pr97467.c: New test.
2020-10-19tree-optimization/97466 - remove spurious assertRichard Biener1-66/+62
This removes an assertion that was supposed to be only for temporary debugging. I've also re-indented the code which I missed as well. 2020-10-19 Richard Biener <rguenther@suse.de> PR tree-optimization/97466 * tree-vect-slp.c (vect_get_and_check_slp_defs): Remove spurious assert, re-indent.
2020-10-19[PATCH] fold x << (n % C) to x << (n & C-1) if C meets power2guojiufu2-1/+25
This patch fixes PR66552 which is also as: https://gcc.gnu.org/pipermail/gcc-patches/2020-February/540930.html which requests to optimizes (x shift (n mod C)) to (x shift (n bit_and (C - 1))) when C is a constant and power of two. gcc/ChangeLog 2020-10-19 Li Jia He <helijia@gcc.gnu.org> PR tree-optimization/66552 * match.pd (x << (n % C) -> x << (n & C-1)): New simplification. gcc/testsuite/ChangeLog 2020-10-19 Li Jia He <helijia@gcc.gnu.org> PR tree-optimization/66552 * gcc.dg/pr66552.c: New testcase.
2020-10-19Simplify comparison GIMPLE IL verificationRichard Biener1-7/+2
There's an old extra allowance for same-mode pointer comparison for which I don't see any good reason today where the only special-case of pointers in useless_type_conversion_p is that of function/method pointers vs. non-function/method pointers. 2020-10-19 Richard Biener <rguenther@suse.de> * tree-cfg.c (verify_gimple_comparison): Drop special-case for pointer comparison.
2020-10-19Daily bump.GCC Administrator3-1/+37
2020-10-18revamp ada.numerics.auxAlexandre Oliva15-477/+598
Instead of mapping elementary functions for all types to a single type, use the intrinsics available for the various base types. A new Ada.Numerics.Aux_Generic_Float is introduced to explicitly dispatch, based on the 'Digits attribute of the base type, to the various newly-added Aux_Short_Float, Aux_Float, Aux_Long_Float, or Aux_Long_Long_Float. The Aux_Short_Float unit is implemented in terms of the Aux_Float one, and the others rely on the elementary functions from the C Math library for float, double and long double types, respectively. An Aux_Linker_Options is added, and units that import intrinsics from libm/libc depend on it to provide the "-lm" linker option if needed. The option is provided by default, but there is an alternate version that doesn't, that is used for vxworks targets. The Aux variant that used to open-code Sin and Cos for the ancient ppc-darwin, because of insufficient precision in libc, is dropped, along with the alternate dummy body for Aux. Both are presumed no longer needed. The original Ada.Numerics.Aux is retained, for backward compatibility, as a wrapper for a newly-added Aux_Compat, that renames Aux_Long_Float, except on x86, in which an alternate version renames Aux_Long_Long_Float. Generic_Elementary_Functions and Generic_Complex_Types are adjusted to use Aux_Generic_Float, avoiding the type conversions and inefficiencies of computing results in higher precision than requested. Generic_Complex_Elementary_Functions is adjusted to enable an additional instance of the sincos optimization, even without -gnatn. for gcc/ada/ChangeLog * Makefile.rtl (GNATRTL_NONTASKING_OBJS): Compile Ada.Numerics child units Aux_Generic_Float, Aux_Long_Long_Float, Aux_Long_Float, Aux_Float, Aux_Short_Float, Aux_Compat, and Aux_Linker_Options. (X86_TARGET_PAIRS): Drop dummy body for Aux. Use x86 version of Aux_Compat. (X86_64_TARGET_PAIRS): Likewise. (LIBGNAT_TARGET_PAIRS): On VxWorks, select the nolibm variants. Drop the darwin version of Aux. Drop the redundant libc-x86 numaux variants on x86* kfreebsd variants. * libgnat/a-nagefl.ads: New Aux_Generic_Float. * libgnat/a-naliop.ads: New Aux_Linker_Options. * libgnat/a-naliop__nolibm.ads: New. * libgnat/a-nallfl.ads: New Aux_Long_Long_Float. * libgnat/a-nalofl.ads: New Aux_Long_Float. * libgnat/a-nuaufl.ads: New Aux_Float. * libgnat/a-nashfl.ads: New Aux_Short_Float. * libgnat/a-ngcefu.adb (Exp): Factor out the Im (X) passed to Sin and Cos in the Complex variant too. * libgnat/a-ngcoty.adb: Switch to Aux_Generic_Float. Drop redundant conversions. * libgnat/a-ngelfu.adb: Likewise. * libgnat/a-nuauco.ads: New Aux_Compat. * libgnat/a-nuauco__x86.ads: New. * libgnat/a-numaux.ads: Replace with Compat wrapper. * libgnat/a-numaux__darwin.adb: Remove. * libgnat/a-numaux__darwin.ads: Remove. * libgnat/a-numaux__dummy.adb: Remove. * libgnat/a-numaux__libc-x86.ads: Remove. * libgnat/a-numaux__vxworks.ads: Remove.
2020-10-18PR libfortran/97063 - Wrong result for vector (step size is negative) * matrixHarald Anlauf1-0/+47
The MATMUL intrinsic provided a wrong result for rank-1 times rank-2 array when a negative stride was used for addressing the elements of the rank-1 array, because a check on strides was erroneously placed before the check on the rank. Interchange order of checks. libgfortran/ChangeLog: * m4/matmul_internal.m4: Move check for rank-1 times rank-2 before checks on strides for rank-2 times rank-2. * generated/matmul_c10.c: Regenerated. * generated/matmul_c16.c: Likewise. * generated/matmul_c4.c: Likewise. * generated/matmul_c8.c: Likewise. * generated/matmul_i1.c: Likewise. * generated/matmul_i16.c: Likewise. * generated/matmul_i2.c: Likewise. * generated/matmul_i4.c: Likewise. * generated/matmul_i8.c: Likewise. * generated/matmul_r10.c: Likewise. * generated/matmul_r16.c: Likewise. * generated/matmul_r4.c: Likewise. * generated/matmul_r8.c: Likewise. * generated/matmulavx128_c10.c: Likewise. * generated/matmulavx128_c16.c: Likewise. * generated/matmulavx128_c4.c: Likewise. * generated/matmulavx128_c8.c: Likewise. * generated/matmulavx128_i1.c: Likewise. * generated/matmulavx128_i16.c: Likewise. * generated/matmulavx128_i2.c: Likewise. * generated/matmulavx128_i4.c: Likewise. * generated/matmulavx128_i8.c: Likewise. * generated/matmulavx128_r10.c: Likewise. * generated/matmulavx128_r16.c: Likewise. * generated/matmulavx128_r4.c: Likewise. * generated/matmulavx128_r8.c: Likewise. gcc/testsuite/ChangeLog: * gfortran.dg/matmul_20.f90: New test.
2020-10-18Daily bump.GCC Administrator2-1/+26
2020-10-17testsuite: simplify target requirements for various Power9 testcases.David Edelsohn18-19/+21
This patch removes unnnecessary or simplifies requirements for various Power9 testcase. gcc/testsuite/ChangeLog: * gcc.target/powerpc/p9-dimode1.c: Remove target. * gcc.target/powerpc/p9-dimode2.c: Remove target. * gcc.target/powerpc/p9-fpcvt-1.c: Remove target. * gcc.target/powerpc/p9-fpcvt-2.c: Require lp64. * gcc.target/powerpc/p9-minmax-1.c: Remove target. * gcc.target/powerpc/p9-minmax-2.c: Remove target. * gcc.target/powerpc/p9-minmax-3.c: Remove target. * gcc.target/powerpc/p9-splat-1.c: Require lp64. * gcc.target/powerpc/p9-splat-2.c: Remove target. * gcc.target/powerpc/p9-splat-3.c: Remove target. * gcc.target/powerpc/p9-splat-4.c: Require lp64. * gcc.target/powerpc/p9-vbpermd.c: Require lp64. * gcc.target/powerpc/p9-vneg.c: Require lp64. * gcc.target/powerpc/p9-vparity.c: Require lp64. * gcc.target/powerpc/p9-vpermr.c: Require LE. * gcc.target/powerpc/p9-xxbr-1.c: Remove target. * gcc.target/powerpc/p9-xxbr-2.c: Require lp64. * gcc.target/powerpc/p9-xxbr-3.c: Require lp64.
2020-10-16testsuite: Enable builtins-3-p9.c on BE targets.David Edelsohn1-1/+1
This patch removes the unnecessary "le" target requirement of the builtins-3-p9.c testcase. gcc/testsuite/ChangeLog: 2020-10-16 David Edelsohn <dje.gcc@gmail.com> * gcc.target/powerpc/builtins-3-p9.c: Remove le.
2020-10-17Daily bump.GCC Administrator6-1/+593
2020-10-16testsuite: remove explicit -m32/-m64 from testcasesDavid Edelsohn2-2/+2
Two tests in the powerpc-specific testsuite explicitly add the -m32 and -m64 commandline options, which only are valid for Linux. And the tests check for lp64 or ilp32, which is redundant. This patch removes the unnecessary commandline options. gcc/testsuite/ChangeLog: 2020-10-16 David Edelsohn <dje.gcc@gmail.com> * gcc.target/powerpc/pr96139-a.c: Remove -m32. * gcc.target/powerpc/pr96139-b.c: Remove -m64.
2020-10-16PR fortran/95979 - ICE in get_kind, at fortran/simplify.c:129Harald Anlauf4-6/+26
Simplification of the elemental intrinsic INDEX with constant array-valued arguments failed with an ICE or did not reduce to a constant array, depending also on the presence of the optional KIND argument. Add a further attempt of simplification in the case of elemental intrinsics, and make sure the KIND argument is not removed prematurely during simplification of INDEX. gcc/fortran/ChangeLog: PR fortran/95979 * expr.c (gfc_check_init_expr): Fix check of return code from gfc_intrinsic_func_interface. * intrinsic.c (gfc_intrinsic_func_interface): Add further attempt of simplification of elemental intrinsics with array arguments. * iresolve.c (gfc_resolve_index_func): Keep optional KIND argument for simplification of elemental use of INDEX. gcc/testsuite/ChangeLog: PR fortran/95979 * gfortran.dg/index_4.f90: New test.
2020-10-16[PATCH] Don't display ranges for dead ssa-names.Andrew MacLeod1-1/+1
Dont show names that have been removed. * vr-values.c (dump_all_value_ranges): Only dump names which are still active.
2020-10-16pointer_plus [0, 0] + const foldingAndrew MacLeod1-0/+8
Return a constant range if POINTER_PLUS is [0,0] plus a const. * range-op.cc (pointer_plus_operator::wi_fold): Make pointer_plus [0, 0] + const return a [const, const] range.
2020-10-16Don't invoke range_of_expr multiple times.Andrew MacLeod1-2/+11
Call evrp_folder::range_of_expr directly so we dont end up calling hybrid_folder::range_of_expr and doing double lookups/comparisons. * gimple-ssa-evrp.c (hybrid_folder::value_on_edge): Call evrp_folder::value_of_expr directly. (hybrid_folder::value_of_stmt): Ditto.
2020-10-16Don't assert on a negative shift.Andrew MacLeod2-1/+12
Don't assert, simply Return false for negative shifts as we can't tell anything about the operand. PR tree-optimization/97462 gcc/ * range-op.cc (operator_lshift::op1_range): Don't trap on negative shifts. gcc/testsuite/ * gcc.dg/pr97462.c: New file.
2020-10-16c++: Fix nullptr deref [pr97460[Nathan Sidwell2-1/+11
My changes to friend handling meant that there are now cases where a friend doesn't get a lang-specific object. So we need to check there is one before looking inside it. PR c++/97460 gcc/cp/ * pt.c (push_template_decl): Check DECL_LANG_SPECIFIC in friend case. gcc/testsuite/ * g++.dg/template/pr97460.C: New.
2020-10-16c++: Fix null deref at EOF [PR96258]Nathan Sidwell2-4/+7
cp_parser_declaration peeks at 1 or 2 tokens, when I changed it not to peek past EOF, I set the second token to NULL. But there are paths through the function that just look at the second token. Fixed by setting that token to EOF rather than NULL in this case. PR c++/96258 gcc/cp/ * parser.c (cp_parser_declaration): Make token2 point to EOF if token1 was EOF. gcc/testsuite/ * g++.dg/parse/pr96258.C: New.
2020-10-16Fix the vxworks crtstuff handling of kernel/rtp variationsOlivier Hainque1-2/+1
The ports that support RTPs achieve the kernel/rtp compilation and link distinction through the multilib mechanism. This patch just removes the bogus explicit extraneous materialization of this distinction in the common VxWorks configuration files and leaves the rtp specialization all to the multilib machinery. 2020-10-15 Olivier Hainque <hainque@adacore.com> libgcc/ * config/t-vxcrtstuff: Remove the -kernel/-rtp specialization. gcc/ * config/vxworks.h (VX_CRTBEGIN_SPEC): Likewise.
2020-10-16Allow self configured definition of _WRS_VXWORKS_MAJOROlivier Hainque1-4/+16
This conditions the use of system headers to fetch a _WRS_VXWORKS_MAJOR macro on the non definition of that macro. This allows builds where a specific value is predefined, e.g. with a self spec, useful in environments where the system headers don't actually define that macro (e.g. vxworks 5 or 653). In addition, _WRS_VXWORKS_MINOR is only provided by the system headers when really meaningful, e.g. from 6.4 to 6.9. We just pick a conservative default to 0 for all the cases where it is not exposed by the system headers or otherwise. 2020-10-15 Olivier Hainque <hainque@adacore.com> gcc/ * config/vxworks/_vxworks-versions.h: Only include version.h if _WRS_VXWORKS_MAJOR is not defined. Provide a default _WRS_VXWORKS_MINOR (0).
2020-10-16arm: Fix the warning -mcpu=cortex-m55 conflicting with -march=armv8.1-m.main ↵Srinath Parvathaneni2-1/+10
(pr97327). This patch fixes (PR97327) the warning -mcpu=cortex-m55 conflicts with -march=armv8.1-m.main for -mfloat-abi=soft by adding the isa_bit_mve_float to clearing FP bit list. The following combination are fixed with this patch: $ cat bug.c int main(){ return 0; } $ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=soft bug.c -c $ arm-none-eabi-gcc -mcpu=cortex-m55 -mfloat-abi=soft -march=armv8.1-m.main+mve bug.c -c Before this patch for above combinations: cc1: warning: switch '-mcpu=cortex-m55' conflicts with '-march=armv8.1-m.main' switch After this patch for above combinations no warning/errors. gcc/ChangeLog: 2020-10-16 Srinath Parvathaneni <srinath.parvathaneni@arm.com> PR target/97327 * config/arm/arm.c (fp_bitlist): Add isa_bit_mve_float to FP bits array. gcc/testsuite/ChangeLog: PR target/97327 * gcc.target/arm/mve/intrinsics/pr97327.c: New test.
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-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.