aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-01-07Add Optimization keyword for TREE/RTL optimization passes.Martin Liska2-166/+170
2020-01-07 Martin Liska <mliska@suse.cz> * params.opt: Add Optimization for various parameters. From-SVN: r279949
2020-01-07Document cloning for the target_clone attribute.Martin Liska2-0/+12
2020-01-07 Martin Liska <mliska@suse.cz> PR ipa/83411 * doc/extend.texi: Explain cloning for target_clone attribute. From-SVN: r279948
2020-01-07Make warn_inline Optimization option.Martin Liska5-3/+31
2020-01-07 Martin Liska <mliska@suse.cz> PR tree-optimization/92860 * common.opt: Make in Optimization option as it is affected by -O0, which is an Optimization option. * tree-inline.c (tree_inlinable_function_p): Use opt_for_fn for warn_inline. (expand_call_inline): Likewise. 2020-01-07 Martin Liska <mliska@suse.cz> PR tree-optimization/92860 * gcc.dg/pr92860-2.c: New test. From-SVN: r279947
2020-01-07Mark -free as Optimization option.Martin Liska4-4/+68
From-SVN: r279946
2020-01-07Mark param_min_crossjump_insns with Optimization keyword.Martin Liska2-1/+7
2020-01-07 Martin Liska <mliska@suse.cz> PR optimization/92860 * params.opt: Mark param_min_crossjump_insns with Optimization keyword. From-SVN: r279945
2020-01-07re PR fortran/93162 (gcc/fortran/trans-openmp.c:2469:50: runtime error: load ↵Jakub Jelinek2-1/+9
of value 145992800, which is not a valid value for type 'ar_type' since r279628) PR fortran/93162 * trans-openmp.c (gfc_trans_omp_clauses): Check for REF_ARRAY type before testing u.ar.type == AR_FULL. From-SVN: r279944
2020-01-07re PR c++/91369 (Implement P0784R7: constexpr new)Jakub Jelinek5-3/+69
PR c++/91369 * constexpr.c (struct constexpr_global_ctx): Add heap_alloc_count member, initialize it to zero in ctor. (cxx_eval_call_expression): Bump heap_dealloc_count when deleting a heap object. Don't cache calls to functions which allocate some heap objects and don't deallocate them or deallocate some heap objects they didn't allocate. * g++.dg/cpp1y/constexpr-new.C: Expect an error explaining why static_assert failed for C++2a. * g++.dg/cpp2a/constexpr-new9.C: New test. From-SVN: r279943
2020-01-07ipa-inline: Adjust condition for caller_growth_limitsLuo Xiong Hu3-3/+8
Inline should return failure either (newsize > param_large_function_insns) OR (newsize > limit). Sometimes newsize is larger than param_large_function_insns, but smaller than limit, inline doesn't return failure even if the new function is a large function. Therefore, param_large_function_insns and param_large_function_growth should be OR instead of AND, otherwise --param large-function-growth won't work correctly with --param large-function-insns. gcc/ChangeLog: 2020-01-07 Luo Xiong Hu <luoxhu@linux.ibm.com> * ipa-inline-analysis.c (estimate_growth): Fix typo. * ipa-inline.c (caller_growth_limits): Use OR instead of AND. From-SVN: r279942
2020-01-07Refactor some code for a future change.Michael Meissner2-15/+31
2020-01-06 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.c (hard_reg_and_mode_to_addr_mask): New helper function to return the valid addressing formats for a given hard register and mode. (rs6000_adjust_vec_address): Call hard_reg_and_mode_to_addr_mask. Index: gcc/config/rs6000/rs6000.c =================================================================== --- gcc/config/rs6000/rs6000.c (revision 279912) +++ gcc/config/rs6000/rs6000.c (working copy) @@ -6729,6 +6729,30 @@ rs6000_expand_vector_extract (rtx target } } +/* Helper function to return an address mask based on a physical register. */ + +static addr_mask_type +hard_reg_and_mode_to_addr_mask (rtx reg, machine_mode mode) +{ + unsigned int r = reg_or_subregno (reg); + addr_mask_type addr_mask; + + gcc_assert (HARD_REGISTER_NUM_P (r)); + if (INT_REGNO_P (r)) + addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_GPR]; + + else if (FP_REGNO_P (r)) + addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_FPR]; + + else if (ALTIVEC_REGNO_P (r)) + addr_mask = reg_addr[mode].addr_mask[RELOAD_REG_VMX]; + + else + gcc_unreachable (); + + return addr_mask; +} + /* Adjust a memory address (MEM) of a vector type to point to a scalar field within the vector (ELEMENT) with a mode (SCALAR_MODE). Use a base register temporary (BASE_TMP) to fixup the address. Return the new memory address @@ -6865,21 +6889,8 @@ rs6000_adjust_vec_address (rtx scalar_re if (GET_CODE (new_addr) == PLUS) { rtx op1 = XEXP (new_addr, 1); - addr_mask_type addr_mask; - unsigned int scalar_regno = reg_or_subregno (scalar_reg); - - gcc_assert (HARD_REGISTER_NUM_P (scalar_regno)); - if (INT_REGNO_P (scalar_regno)) - addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_GPR]; - - else if (FP_REGNO_P (scalar_regno)) - addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_FPR]; - - else if (ALTIVEC_REGNO_P (scalar_regno)) - addr_mask = reg_addr[scalar_mode].addr_mask[RELOAD_REG_VMX]; - - else - gcc_unreachable (); + addr_mask_type addr_mask + = hard_reg_and_mode_to_addr_mask (scalar_reg, scalar_mode); if (REG_P (op1) || SUBREG_P (op1)) valid_addr_p = (addr_mask & RELOAD_REG_INDEXED) != 0; From-SVN: r279941
2020-01-07Update ChangeLog for last changeMichael Meissner1-0/+5
From-SVN: r279940
2020-01-07Update 'Q' constraint documentation.Michael Meissner2-4/+2
2020-01-06 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/constraints.md (Q constraint): Update documentation. * doc/md.texi (RS/6000 constraints): Update 'Q' cosntraint documentation. From-SVN: r279939
2020-01-07Fix bad code of vector extract of PC-relative address with variable element #.Michael Meissner2-4/+13
2020-01-06 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/vsx.md (vsx_extract_<mode>_var, VSX_D iterator): Use 'Q' for doing vector extract from memory. (vsx_extract_v4sf_var): Use 'Q' for doing vector extract from memory. (vsx_extract_<mode>_var, VSX_EXTRACT_I iterator): Use 'Q' for doing vector extract from memory. (vsx_extract_<mode>_<VS_scalar>mode_var): Use 'Q' for doing vector extract from memory. From-SVN: r279938
2020-01-07Add support for large prefixed address in adjusting a vector address.Michael Meissner2-1/+20
2020-01-06 Michael Meissner <meissner@linux.ibm.com> * config/rs6000/rs6000.c (rs6000_adjust_vec_address): Add support for the offset being 34-bits when -mcpu=future is used. From-SVN: r279937
2020-01-06PR c++/92552 - ICE with inherited constrained default ctor.Jason Merrill8-9/+28
We set TYPE_HAS_USER_CONSTRUCTOR on the template type in lookup_using_decl, but we didn't copy it to the instantiation. Setting it in one_inherited_ctor is too late, as that gets called after we decide whether to set CLASSTYPE_LAZY_DEFAULT_CTOR. This change affects other testcases as well; the changes are fixes for the other inherited constructor tests as well. * pt.c (instantiate_class_template_1): Copy TYPE_HAS_USER_CONSTRUCTOR. * class.c (one_inherited_ctor): Don't set it here. From-SVN: r279936
2020-01-06PR c++/92739 - parsing requires clause with attributes.Andrew Sutton3-0/+29
gcc/cp/ * parser.c (cp_parser_constraint_requires_parens): Exclude attributes as postfix expressions. gcc/testsuite/ * g++.dg/concepts-pr92739.C: New test. From-SVN: r279935
2020-01-07Daily bump.GCC Administrator1-1/+1
From-SVN: r279932
2020-01-06pa.md: Revert change to use ordered_comparison_operator instead of...John David Anglin3-2/+15
* config/pa/pa.md: Revert change to use ordered_comparison_operator instead of cmpib_comparison_operator in cmpib patterns. * config/pa/predicates.md (cmpib_comparison_operator): Revert removal of cmpib_comparison_operator. Revise comment. From-SVN: r279927
2020-01-06Require equal shift amounts for IFN_DIV_POW2Richard Sandiford6-13/+74
IFN_DIV_POW2 currently requires all elements to be shifted by the same amount, in a similar way as for WIDEN_LSHIFT_EXPR. This patch enforces that when building the SLP tree. If in future targets want to support IFN_DIV_POW2 without this restriction, we'll probably need the kind of vector-vector/ vector-scalar split that we already have for normal shifts. 2020-01-06 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-slp.c (vect_build_slp_tree_1): Require all shifts in an IFN_DIV_POW2 node to be equal. gcc/testsuite/ * gcc.target/aarch64/sve/asrdiv_1.c: Remove trailing %s. * gcc.target/aarch64/sve/asrdiv_2.c: New test. * gcc.target/aarch64/sve/asrdiv_3.c: Likewise. From-SVN: r279908
2020-01-06Check mask argument's type when vectorising conditional functionsRichard Sandiford5-19/+46
We can't yet vectorise conditional internal functions whose boolean condition is fed by a data access (or more generally, by a tree of logic ops in which all the leaves are data accesses). Although we should add that eventually, we'd need further work to generate good-quality code. Unlike vectorizable_load and vectorizalbe_store, vectorizable_call wasn't checking whether the mask had a suitable type, leading to an ICE on the testcases. 2020-01-06 Richard Sandiford <richard.sandiford@arm.com> gcc/ * tree-vect-stmts.c (vect_check_load_store_mask): Rename to... (vect_check_scalar_mask): ...this. (vectorizable_store, vectorizable_load): Update call accordingly. (vectorizable_call): Use vect_check_scalar_mask to check the mask argument in calls to conditional internal functions. gcc/testsuite/ * gcc.dg/vect/vect-cond-arith-8.c: New test. * gcc.target/aarch64/sve/cond_fmul_5.c: Likewise. From-SVN: r279907
2020-01-06Fix amdgcn issue with '0' constraintsAndrew Stubbs2-13/+19
2020-01-06 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-valu.md (subv64di3): Use separate alternatives for '0' matching inputs. (subv64di3_exec): Likewise. From-SVN: r279906
2020-01-06mips.c (vr4130_align_insns): Fix typo.Bryan Stenson3-2/+7
2020-01-06 Bryan Stenson <bryan@siliconvortex.com> * config/mips/mips.c (vr4130_align_insns): Fix typo. * doc/md.texi (movstr): Likewise. From-SVN: r279905
2020-01-06Fix early-clobber in amdgcn vec_extractAndrew Stubbs2-3/+8
2020-01-06 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn-valu.md (vec_extract<mode><scalar_mode>): Add early clobber. From-SVN: r279904
2020-01-06PR c++/79592 adjust testcaseNathan Sidwell2-1/+6
https://gcc.gnu.org/ml/gcc-patches/2020-01/msg00127.html * g++.dg/ubsan/vptr-4.C: Add expected error. From-SVN: r279902
2020-01-06[AArch64] Use move-if-change for aarch64-tune.mdRichard Sandiford2-1/+13
If aarch64-tune.md was older than gentune.sh or aarch64-cores.def, we'd try to overwrite it even if the current contents were correct. This could cause problems with read-only source directories and could cause spurious copying for rsync --archive. 2020-01-06 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/t-aarch64 ($(srcdir)/config/aarch64/aarch64-tune.md): Depend on... (s-aarch64-tune-md): ...this new stamp file. Pipe the new contents to a temporary file and use move-if-change to update the real file where necessary. From-SVN: r279900
2020-01-06[AArch64] Fix constraints for CPY /MRichard Sandiford4-1/+52
The constraints for CPY /M allowed p0-p15 instead of the intended p0-p7. This looks like a pasto from the preceding constant pattern, where p0-p15 is allowed. 2020-01-06 Richard Sandiford <richard.sandiford@arm.com> gcc/ * config/aarch64/aarch64-sve.md (@aarch64_sel_dup<mode>): Use Upl rather than Upa for CPY /M. gcc/testsuite/ * gcc.target/aarch64/sve/acle/general/cpy_1.c: New test. From-SVN: r279899
2020-01-06Fix amdgcn inline immediate rangeAndrew Stubbs2-1/+6
2020-01-06 Andrew Stubbs <ams@codesourcery.com> gcc/ * config/gcn/gcn.c (gcn_inline_constant_p): Allow 64 as an inline immediate. From-SVN: r279898
2020-01-06libstdc++: Remove redundant inequality operators in <stop_token>Jonathan Wakely3-17/+41
* include/std/stop_token (stop_token): Remove operator!= (LWG 3254). (stop_source): Likewise (LWG 3362). * testsuite/30_threads/stop_token/stop_source.cc: Test equality comparisons. From-SVN: r279897
2020-01-06libstdc++: Define __cpp_lib_three_way_comparison conditionallyJonathan Wakely4-9/+16
The contents of the <compare> header are not complete unless concepts are supported, so the feature test macro should depend on the macro for concepts. As a result, the std::lexicographical_compare_three_way function will not be defined unless concepts are supported, so there is no need to check __cpp_lib_concepts before using concepts in those functions. * include/bits/stl_algobase.h (__is_byte_iter, __min_cmp) (lexicographical_compare_three_way): Do not depend on __cpp_lib_concepts. * include/std/version (__cpp_lib_three_way_comparison): Only define when __cpp_lib_concepts is defined. * libsupc++/compare (__cpp_lib_three_way_comparison): Likewise. From-SVN: r279896
2020-01-06Mark param_max_combine_insns with Optimization keyword.Martin Liska2-1/+7
PR tree-optimization/92860 * params.opt: Mark param_max_combine_insns with Optimization keyword. From-SVN: r279895
2020-01-05New bitfield testcases.Andrew Pinski4-0/+42
2020-01-05 Andrew Pinski <apinski@marvell.com> * gcc.c-torture/compile/20200105-1.c: New testcase. * gcc.c-torture/compile/20200105-2.c: New testcase. * gcc.c-torture/compile/20200105-3.c: New testcase. From-SVN: r279893
2020-01-06Daily bump.GCC Administrator1-1/+1
From-SVN: r279892
2020-01-05discr1.ads: Compile with -gnatc instead of -gnatct.Eric Botcazou5-5/+5
* gnat.dg/specs/discr1.ads: Compile with -gnatc instead of -gnatct. * gnat.dg/specs/limited_with4.ads: Likewise. * gnat.dg/specs/limited_with4_pkg.ads: Likewise. * gnat.dg/specs/private1-sub.ads: Likewise. * gnat.dg/specs/task1.ads: Likewise. From-SVN: r279889
2020-01-05[testsuite, Darwin] Fix failing darwin-version-1.c.Iain Sandoe2-2/+11
Recent platform linkers will no longer accept linking for a target OS version less than 10.4. Recent SDKs no longer have the libgcc_s shims used for 10.4 and 10.5. So we need to adjust tests that expect these. gcc/testsuite/ChangeLog: 2020-01-05 Iain Sandoe <iain@sandoe.co.uk> * gcc.dg/darwin-version-1.c: Adjust test to use different options for Darwin4-9 and Darwin10+. From-SVN: r279888
2020-01-05re PR target/93141 (Missed optimization : Use of adc when checking overflow)Jakub Jelinek5-21/+384
PR target/93141 * config/i386/i386.md (SWIDWI): New mode iterator. (DWI, dwi): Add TImode variants. (addv<mode>4): Use SWIDWI iterator instead of SWI. Use <general_hilo_operand> instead of <general_operand>. Use CONST_SCALAR_INT_P instead of CONST_INT_P. (*addv<mode>4_1): Rename to ... (addv<mode>4_1): ... this. (QWI): New mode attribute. (*addv<dwi>4_doubleword, *addv<dwi>4_doubleword_1): New define_insn_and_split patterns. (*addv<mode>4_overflow_1, *addv<mode>4_overflow_2): New define_insn patterns. (uaddv<mode>4): Use SWIDWI iterator instead of SWI. Use <general_hilo_operand> instead of <general_operand>. (*addcarry<mode>_1): New define_insn. (*add<dwi>3_doubleword_cc_overflow_1): New define_insn_and_split. * gcc.target/i386/pr93141-1.c: New test. * gcc.dg/pr67089-6.c: Expect 16 ADD_OVERFLOW calls even on ia32. From-SVN: r279887
2020-01-05re PR c++/93138 (elaborated type specifier visibility check problem)Jakub Jelinek4-3/+38
PR c++/93138 * parser.c (cp_parser_check_class_key): Disable access checks for the simple name lookup. (cp_parser_maybe_warn_enum_key): Likewise. Return early if !warn_redundant_tags. * g++.dg/warn/Wredundant-tags-2.C: New test. From-SVN: r279886
2020-01-05Guard inclusion of vxAtomicLib.h from gthr-vxworks.hOlivier Hainque2-0/+12
2020-01-05 Olivier Hainque <hainque@adacore.com> * config/gthr-vxworks.h: Guard #include vxAtomicLib.h by IN_LIBGCC2. From-SVN: r279885
2020-01-05re PR c++/93046 (ICE in cp_gimplify_init_expr)Jakub Jelinek4-1/+26
PR c++/93046 * cp-gimplify.c (cp_gimplify_init_expr): Don't look through TARGET_EXPR if it has been gimplified already. * g++.dg/ext/cond4.C: New test. From-SVN: r279884
2020-01-05Daily bump.GCC Administrator1-1/+1
From-SVN: r279883
2020-01-04* gnatvsn.ads: Bump copyright year.Eric Botcazou2-2/+6
From-SVN: r279880
2020-01-04Fortran] PR91640 – Fix call to contiguous dummyTobias Burnus4-9/+90
PR fortran/91640 * trans-expr.c (gfc_conv_procedure_call): Avoid copy-out for nonvariable arguments to contiguous dummy args. Avoid re-checking whether fsym is NULL. PR fortran/91640 * gfortran.dg/contiguous_10.f90: New. From-SVN: r279879
2020-01-04Daily bump.GCC Administrator1-1/+1
From-SVN: r279876
2020-01-03PR c++/93033 - incorrect tree node sharing with array init.Jason Merrill4-1/+30
The split_nonconstant_init piece is the only one necessary to fix the testcase, but it occurred to me that we might as well not split when -fno-exceptions. * typeck2.c (split_nonconstant_init): Unshare non-decl. * cp-gimplify.c (cp_gimplify_init_expr): Only split if -fexceptions. From-SVN: r279871
2020-01-03Reject class template placeholder as non-type template parm type in C++17.Jason Merrill3-2/+16
* pt.c (invalid_nontype_parm_type_p): Reject class placeholder in C++17. From-SVN: r279870
2020-01-03[testsuite, X86] Require effective target masm_intel for two tests.Iain Sandoe3-0/+8
These tests currently fail on targets that do not support intel asm syntax. gcc/testsuite/ChangeLog: 2020-01-03 Iain Sandoe <iain@sandoe.co.uk> * gcc.target/i386/avx512bw-pr92686-vpcmp-intelasm-1.c: Require effective target masm_intel. * gcc.target/i386/avx512vl-pr92686-vpcmp-intelasm-1.c: Likewise. From-SVN: r279869
2020-01-03gdbinit.in: call a function with "call", not "set"Konstantin Kharlamov2-12/+17
Calling a function foo in gdb as "set foo()" results in a warning. Disregarding, it looks wrong to call a function with "set". Let's use "call" instead. 2019-11-14 Konstantin Kharlamov <Hi-Angel@yandex.ru> * gdbinit.in (pr, prl, pt, pct, pgg, pgq, pgs, pge, pmz, pdd, pbs, pbm): Use "call" instead of "set". From-SVN: r279866
2020-01-03libstdc++: Only use std::compare_three_way when concepts are supportedJonathan Wakely2-0/+7
Clang now supports three-way comparisons. That causes both overloads of std::lexicographical_compare_three_way to be defined, but the second one uses std::compare_three_way which depends on concepts. Clang does not yet support concepts, so the second overload should also depend on __cpp_lib_concepts. * include/bits/stl_algobase.h (lexicographical_compare_three_way): Only define four-argument overload when __cpp_lib_concepts is defined. From-SVN: r279861
2020-01-03Avoid segfault when dumping IPA-CP lattices for unoptimized functions (PR 92917)Martin Jambor2-2/+8
2020-01-03 Martin Jambor <mjambor@suse.cz> PR ipa/92917 * ipa-cp.c (print_all_lattices): Skip functions without info. From-SVN: r279859
2020-01-03Fortran] OpenMP/OpenACC – fix more issues with OPTIONALTobias Burnus6-39/+260
gcc/fortran/ * trans-openmp.c (gfc_omp_check_optional_argument): Always return a Boolean expression; handle unallocated/disassociated actual arguments as absent if passed to nonallocatable/nonpointer dummy array arguments. (gfc_build_cond_assign): Change to assume a Boolean expr not a pointer. (gfc_omp_finish_clause, gfc_trans_omp_clauses): Assign NULL to generated array-data variable if the argument is absent. Simplify code as 'present' is now a Boolean expression. libgomp/ * testsuite/libgomp.fortran/optional-map.f90: Add test for unallocated/disassociated actual arguments to nonallocatable/nonpointer dummy arguments; those are/shall be regarded as absent arguments. * testsuite/libgomp.fortran/use_device_ptr-optional-2.f90: Ditto. * testsuite/libgomp.fortran/use_device_ptr-optional-3.f90: New. From-SVN: r279858
2020-01-03re PR target/93089 (Force mprefer-vector-width=512 in 'e' simd clones)Jakub Jelinek5-3/+58
PR target/93089 * config/i386/i386-options.c (ix86_simd_clone_adjust): If TARGET_PREFER_AVX128, use prefer-vector-width=256 for 'c' and 'd' simd clones. If TARGET_PREFER_AVX256, use prefer-vector-width=512 for 'e' simd clones. * gcc.target/i386/pr93089-2.c: New test. * gcc.target/i386/pr93089-3.c: New test. From-SVN: r279857
2020-01-03re PR target/93089 (Force mprefer-vector-width=512 in 'e' simd clones)Jakub Jelinek7-13/+86
PR target/93089 * config/i386/i386.opt (x_prefer_vector_width_type): Remove TargetSave entry. (mprefer-vector-width=): Add Save. * config/i386/i386-options.c (ix86_target_string): Add PVW argument, print -mprefer-vector-width= if non-zero. Fix up -mfpmath= comment. (ix86_debug_options, ix86_function_specific_print): Adjust ix86_target_string callers. (ix86_valid_target_attribute_inner_p): Handle prefer-vector-width=. (ix86_valid_target_attribute_tree): Likewise. * config/i386/i386-options.h (ix86_target_string): Add PVW argument. * config/i386/i386-expand.c (ix86_expand_builtin): Adjust ix86_target_string caller. * gcc.target/i386/pr93089-1.c: New test. From-SVN: r279856