Skip to content
Snippets Groups Projects
  1. Jul 30, 2020
    • H.J. Lu's avatar
      Require CET support only for the final GCC build · 4712bde3
      H.J. Lu authored
      With --enable-cet, require CET support only for the final GCC build.
      Don't enable CET without CET support for non-bootstrap build, in stage1
      nor for build support.
      
      config/
      
      	PR bootstrap/96202
      	* cet.m4 (GCC_CET_HOST_FLAGS): Don't enable CET without CET
      	support in stage1 nor for build support.
      
      gcc/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libbacktrace/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libcc1/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libcpp/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libdecnumber/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      libiberty/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      
      lto-plugin/
      
      	PR bootstrap/96202
      	* configure: Regenerated.
      4712bde3
    • Jonathan Wakely's avatar
      libstdc++: cv bool can't be an integer-like type (LWG 3467) · 9e67b435
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* include/bits/iterator_concepts.h (__detail::__cv_bool): New
      	helper concept.
      	(__detail::__integral_nonbool): Likewise.
      	(__detail::__is_integer_like): Use __integral_nonbool.
      	* testsuite/std/ranges/access/lwg3467.cc: New test.
      9e67b435
    • Jonathan Wakely's avatar
      libstdc++: Add options for ieee float to relevant tests · eeb45f8a
      Jonathan Wakely authored
      libstdc++-v3/ChangeLog:
      
      	* testsuite/20_util/from_chars/4.cc: Use dg-add-options ieee.
      	* testsuite/29_atomics/atomic_float/1.cc: Likewise.
      eeb45f8a
    • Jonathan Wakely's avatar
      libstdc++: Make testsuite usable with -fno-exceptions · 4c27c658
      Jonathan Wakely authored
      Previously it was not possible to add -fno-exceptions to the testsuite
      flags, because some files that are compiled by the v3-build_support
      procedure failed with exceptions disabled.
      
      This adjusts those files to still compile without exceptions (with
      degraded functionality in some cases).
      
      The sole testcase that explicitly checks for -fno-exceptions has also
      been adjusted to use the more robust exceptions_enabled effective-target
      keyword from gcc/testsuite/lib/target-supports.exp.
      
      libstdc++-v3/ChangeLog:
      
      	* testsuite/23_containers/vector/bool/72847.cc: Use the
      	exceptions_enabled effective-target keyword instead of
      	checking for an explicit -fno-exceptions option.
      	* testsuite/util/testsuite_abi.cc (examine_symbol): Remove
      	redundant try-catch.
      	* testsuite/util/testsuite_allocator.h [!__cpp_exceptions]:
      	Do not define check_allocate_max_size and memory_resource.
      	* testsuite/util/testsuite_containers.h: Replace comment with
      	#error if wrong standard dialect used.
      	* testsuite/util/testsuite_shared.cc: Likewise.
      4c27c658
    • Iain Buclaw's avatar
      d: Implement core.bitop.rol() and core.bitop.ror() as intrinsics. · 7d4ee8bc
      Iain Buclaw authored
      gcc/d/ChangeLog:
      
      	* intrinsics.cc (expand_intrinsic_rotate): Add function.
      	(maybe_expand_intrinsic): Handle rol and ror intrinsics.
      	* intrinsics.def (ROL): Add intrinsic.
      	(ROL_TIARG): Add intrinsic.
      	(ROR): Add intrinsic.
      	(ROR_TIARG): Add intrinsic.
      
      gcc/testsuite/ChangeLog:
      
      	* gdc.dg/intrinsics.d: Add ror and rol tests.
      7d4ee8bc
    • Iain Buclaw's avatar
      d: Refactor matching and lowering of intrinsic functions. · 6ee874f1
      Iain Buclaw authored
      Intrinsics are now matched explicitly, rather than through a common
      alias where there are multiple overrides for a common intrinsic.
      Where there is a corresponding DECL_FUNCTION_CODE, that is now stored in
      the D intrinsic array.  All run-time std.math intrinsics have been
      removed, as the library implementation already forwards to core.math.
      
      gcc/d/ChangeLog:
      
      	* d-tree.h (DEF_D_INTRINSIC): Rename second argument from A to B.
      	* intrinsics.cc (intrinsic_decl): Add built_in field.
      	(DEF_D_INTRINSIC): Rename second argument from ALIAS to BUILTIN.
      	(maybe_set_intrinsic): Handle new intrinsic codes.
      	(expand_intrinsic_bt): Likewise.
      	(expand_intrinsic_checkedint): Likewise.
      	(expand_intrinsic_bswap): Remove.
      	(expand_intrinsic_sqrt): Remove.
      	(maybe_expand_intrinsic): Group together intrinsic cases that map
      	directly to gcc built-ins.
      	* intrinsics.def (DEF_D_BUILTIN): Rename second argument from A to B.
      	Update all callers to pass equivalent DECL_FUNCTION_CODE.
      	(DEF_CTFE_BUILTIN): Likewise.
      	(STD_COS): Remove intrinsic.
      	(STD_FABS): Remove intrinsic.
      	(STD_LDEXP): Remove intrinsic.
      	(STD_RINT): Remove intrinsic.
      	(STD_RNDTOL): Remove intrinsic.
      	(STD_SIN): Remove intrinsic.
      	(STD_SQRTF): Remove intrinsic.
      	(STD_SQRT): Remove intrinsic.
      	(STD_SQRTL): Remove intrinsic.
      
      gcc/testsuite/ChangeLog:
      
      	* gdc.dg/intrinsics.d: New test.
      6ee874f1
    • Richard Biener's avatar
      tree-optimization/96370 - make reassoc expr rewrite more robust · 2c558d26
      Richard Biener authored
      In the face of the more complex tricks in reassoc with respect
      to negate processing it can happen that the expression rewrite
      is fooled to recurse on a leaf and pick up a bogus expression
      code.  The following patch makes the expression rewrite more
      robust in providing the expression code to it directly since
      it is the same for all operations in a chain.
      
      2020-07-30  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/96370
      	* tree-ssa-reassoc.c (rewrite_expr_tree): Add operation
      	code parameter and use it instead of picking it up from
      	the stmt that is being rewritten.
      	(reassociate_bb): Pass down the operation code.
      
      	* gcc.dg/pr96370.c: New testcase.
      2c558d26
    • Roger Sayle's avatar
      nvptx: Provide vec_set<mode> and vec_extract<vmode><mode> patterns · 8240f2f4
      Roger Sayle authored
      This patch provides standard vec_extract and vec_set patterns to the
      nvptx backend, to extract an element from a PTX vector and set an
      element of a PTX vector respectively.  PTX vectors (I hesitate to
      call them SIMD vectors) may contain up to four elements, so vector
      modes up to size four are supported by this patch even though the
      nvptx backend currently only allows V2SI and V2DI, i.e. two out
      of the ten possible vector modes.
      
      As an example of the improvement, the following C function:
      
      typedef int __v2si __attribute__((__vector_size__(8)));
      int foo (__v2si arg) { return arg[0]+arg[1]; }
      
      previously generated this code using a shift:
      
        mov.u64     %r25, %ar0;
        ld.v2.u32   %r26, [%r25];
        mov.b64     %r28, %r26;
        shr.s64     %r30, %r28, 32;
        cvt.u32.u32 %r31, %r26.x;
        cvt.u32.u64 %r32, %r30;
        add.u32     %value, %r31, %r32;
      
      but with this patch now generates:
      
        mov.u64   %r25, %ar0;
        ld.v2.u32 %r26, [%r25];
        mov.u32   %r28, %r26.x;
        mov.u32   %r29, %r26.y;
        add.u32   %value, %r28, %r29;
      
      I've implemented these getters and setters as their own instructions
      instead of attempting the much more intrusive patch of changing the
      backend's definition of register_operand.  Given the limited utility
      of PTX vectors, I'm not convinced that attempting to support them as
      operands in every instruction would be worth the effort involved.
      
      This patch has been tested on nvptx-none hosted on x86_64-pc-linux-gnu
      with "make" and "make check" with no new regressions.
      
      2020-07-15  Roger Sayle  <roger@nextmovesoftware.com>
      	    Tom de Vries  <tdevries@suse.de>
      
      gcc/ChangeLog:
      
      	* config/nvptx/nvptx.md (nvptx_vector_index_operand): New predicate.
      	(VECELEM): New mode attribute for a vector's uppercase element mode.
      	(Vecelem): New mode attribute for a vector's lowercase element mode.
      	(*vec_set<mode>_0, *vec_set<mode>_1, *vec_set<mode>_2)
      	(*vec_set<mode>_3): New instructions.
      	(vec_set<mode>): New expander to generate one of the above insns.
      	(vec_extract<mode><Vecelem>): New instruction.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/nvptx/v2si-vec-set-extract.c: New test.
      8240f2f4
    • Martin Liska's avatar
      Tune memcpy and memset for Zen cores. · dc65aba7
      Martin Liska authored
      Based on the collected numbers in PR95435, I suggest the following
      tuning changes:
      
      gcc/ChangeLog:
      
      	PR target/95435
      	* config/i386/x86-tune-costs.h: Use libcall for large sizes for
      	-m32. Start using libcall from 128+ bytes.
      dc65aba7
    • Martin Liska's avatar
      Re-format zen memcpy/memset costs. · da346efd
      Martin Liska authored
      The patch improves readability of the memcpy and memset
      expansion strategies.
      
      gcc/ChangeLog:
      
      	* config/i386/x86-tune-costs.h: Change code formatting.
      da346efd
    • Patrick Palka's avatar
      c++: overload sets and placeholder return type [PR64194] · 2c58f5ca
      Patrick Palka authored
      In the testcase below, template argument deduction for the call
      g(id<int>) goes wrong because the functions in the overload set id<int>
      each have a yet-undeduced auto return type, and this undeduced return
      type makes try_one_overload fail to match up any of the overloads with
      g's parameter type, leading to g's template argument going undeduced and
      to the overload set going unresolved.
      
      This patch fixes this issue by performing return type deduction via
      instantiation before doing try_one_overload, in a manner similar to what
      resolve_address_of_overloaded_function does.
      
      gcc/cp/ChangeLog:
      
      	PR c++/64194
      	* pt.c (resolve_overloaded_unification): If the function
      	template specialization has a placeholder return type,
      	then instantiate it before attempting unification.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/64194
      	* g++.dg/cpp1y/auto-fn60.C: New test.
      2c58f5ca
    • Patrick Palka's avatar
      c++: alias_ctad_tweaks and constrained dguide [PR95486] · 71141b1b
      Patrick Palka authored
      In the below testcase, we're ICEing from alias_ctad_tweaks ultimately
      because the implied deduction guide for X's user-defined constructor
      already has constraints associated with it.  We then carry over these
      constraints to 'fprime', the overlying deduction guide for the alias
      template Y, via tsubst_decl from alias_ctad_tweaks.  Later in
      alias_ctad_tweaks we call get_constraints followed by set_constraints
      without doing remove_constraints in between, which triggers the !found
      assert in set_constraints.
      
      This patch fixes this issue by adding an intervening call to
      remove_constraints.
      
      gcc/cp/ChangeLog:
      
      	PR c++/95486
      	* pt.c (alias_ctad_tweaks): Call remove_constraints before
      	calling set_constraints.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/95486
      	* g++.dg/cpp2a/class-deduction-alias3.C: New test.
      71141b1b
    • Patrick Palka's avatar
      c++: abbreviated function template friend matching [PR96106] · f31dd9be
      Patrick Palka authored
      In the below testcase, duplicate_decls wasn't merging the tsubsted
      friend declaration for 'void add(auto)' with its definition, because
      reduce_template_parm_level (during tsubst_friend_function) lost the
      DECL_VIRTUAL_P flag on the auto's invented template parameter, which
      caused template_heads_equivalent_p to deem the two template heads as not
      equivalent in C++20 mode.
      
      This patch makes reduce_template_parm_level carry over the
      DECL_VIRTUAL_P flag from the original TEMPLATE_PARM_DECL.
      
      gcc/cp/ChangeLog:
      
      	PR c++/96106
      	* pt.c (reduce_template_parm_level): Propagate DECL_VIRTUAL_P
      	from the original TEMPLATE_PARM_DECL to the new lowered one.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/96106
      	* g++.dg/concepts/abbrev7.C: New test.
      f31dd9be
    • Patrick Palka's avatar
      c++: constraints and explicit instantiation [PR96164] · dc3d1e18
      Patrick Palka authored
      When considering to instantiate a member of a class template as part of
      an explicit instantiation of the class template, we need to first check
      the member's constraints before proceeding with the instantiation of the
      member.
      
      gcc/cp/ChangeLog:
      
      	PR c++/96164
      	* constraint.cc (constraints_satisfied_p): Return true if
      	!flags_concepts.
      	* pt.c (do_type_instantiation): Update a paragraph taken from
      	[temp.explicit] to reflect the latest specification.  Don't
      	instantiate a member with unsatisfied constraints.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/96164
      	* g++.dg/cpp2a/concepts-explicit-inst5.C: New test.
      dc3d1e18
    • GCC Administrator's avatar
      Daily bump. · bea7a391
      GCC Administrator authored
      bea7a391
  2. Jul 29, 2020
    • Roger Sayle's avatar
      nvptx: Support floating point reciprocal instructions · a0d007d6
      Roger Sayle authored
      The following patch addds support for PTX's rcp.rn.f32 and rcp.rn.f64
      instructions.  Note that the "rcp.rn" forms of this instruction
      calculate the fully IEEE compliant result for the reciprocal, unlike
      the rcp.approx variants that just provide fast approximations.
      
      This patch has been tested on nvptx-none hosted on x86_64-pc-linux-gnu
      with "make" and "make check" with no new regressions.
      
      2020-07-12  Roger Sayle  <roger@nextmovesoftware.com>
      
      gcc/ChangeLog:
      
      	* config/nvptx/nvptx.md (recip<mode>2): New instruction.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.target/nvptx/recip-1.c: New test.
      a0d007d6
    • Joseph Myers's avatar
      Update gcc ja.po, sv.po. · 0f4a54cc
      Joseph Myers authored
      	* ja.po, sv.po: Update.
      0f4a54cc
    • François Dumont's avatar
      libstdc++: Review _Local_iterator/_Local_const_iterator implementations. · acc1d1a9
      François Dumont authored
      _Local_iterator_base inherits _Node_iterator_base and so share the same
      comparison operators. It avoids to expose special method _M_curr for debug
      mode to compare such iterators.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/hashtable_policy.h (_Node_iterator_base()): New.
      	(operator==(const _Node_iterator_base&, const _Node_iterator_base&)):
      	Make hidden friend.
      	(operator!=(const _Node_iterator_base&, const _Node_iterator_base&)):
      	Make hidden friend.
      	(_Local_iterator_base<>): Inherits _Node_iterator_base.
      	(_Local_iterator_base<>::_M_cur): Remove.
      	(_Local_iterator_base<>::_M_curr()): Remove.
      	(operator==(const _Local_iterator_base&, const _Local_iterator_base&)):
      	Remove.
      	(operator!=(const _Local_iterator_base&, const _Local_iterator_base&)):
      	Remove.
      	* include/debug/unordered_map (unordered_map<>::_M_invalidate): Adapt.
      	(unordered_multimap<>::_M_invalidate): Adapt.
      	* include/debug/unordered_set (unordered_set<>::_M_invalidate): Adapt.
      	(unordered_multiset<>::_M_invalidate): Adapt.
      acc1d1a9
    • Jason Merrill's avatar
      c++: Implement C++20 implicit move changes. [PR91427] · 1722e201
      Jason Merrill authored
      P1825R0 extends the C++11 implicit move on return by removing the
      constraints on the called constructor: previously, it needed to take an
      rvalue reference to the type of the returned variable.  The paper also
      allows move on throw of parameters and implicit move of rvalue references.
      
      Discussion on the CWG reflector about how to avoid breaking the PR91212 test
      in the new model settled on the model of doing only a single overload
      resolution, with the variable treated as an xvalue that can bind to
      non-const lvalue references.  So this patch implements that approach.  The
      implementation does not use the existing LOOKUP_PREFER_RVALUE flag, but
      instead sets a flag on the representation of the static_cast turning the
      variable into an xvalue.
      
      For the time being I'm limiting the new semantics to C++20 mode; since it
      was moved as a DR, we will probably want to apply the change to other
      standard modes as well once we have a better sense of the impact on existing
      code, probably in GCC 12.
      
      gcc/cp/ChangeLog:
      
      	PR c++/91427
      	* cp-tree.h (IMPLICIT_RVALUE_P): New.
      	(enum cp_lvalue_kind_flags): Add clk_implicit_rval.
      	(implicit_rvalue_p, set_implicit_rvalue_p): New.
      	* call.c (reference_binding): Check clk_implicit_rval.
      	(build_over_call): Adjust C++20 implicit move.
      	* coroutines.cc (finish_co_return_stmt): Simplify implicit move.
      	* except.c (build_throw): Adjust C++20 implicit move.
      	* pt.c (tsubst_copy_and_build) [STATIC_CAST_EXPR]: Propagate
      	IMPLICIT_RVALUE_P.
      	* tree.c (lvalue_kind): Set clk_implicit_rval.
      	* typeck.c (treat_lvalue_as_rvalue_p): Overhaul.
      	(maybe_warn_pessimizing_move): Adjust.
      	(check_return_expr): Adjust C++20 implicit move.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/91427
      	* g++.dg/coroutines/co-return-syntax-10-movable.C: Extend.
      	* g++.dg/cpp0x/Wredundant-move1.C: Adjust for C++20.
      	* g++.dg/cpp0x/Wredundant-move7.C: Adjust for C++20.
      	* g++.dg/cpp0x/Wredundant-move9.C: Adjust for C++20.
      	* g++.dg/cpp0x/elision_neg.C: Adjust for C++20.
      	* g++.dg/cpp0x/move-return2.C: Adjust for C++20.
      	* g++.dg/cpp0x/ref-qual20.C: Adjust for C++20.
      	* g++.dg/cpp2a/implicit-move1.C: New test.
      	* g++.dg/cpp2a/implicit-move2.C: New test.
      	* g++.dg/cpp2a/implicit-move3.C: New test.
      1722e201
    • Jason Merrill's avatar
      c++: Avoid calling const copy ctor on implicit move. [PR91212] · 81bc0ec3
      Jason Merrill authored
      Our implementation of C++11 implicit move was wrong for return; we didn't
      actually hit the check for the type of the first parameter of the selected
      constructor, because we didn't see LOOKUP_PREFER_RVALUE set properly.
      
      Fixing that to look at the right flags fixed the issue for this testcase,
      but broke implicit move for a by-value converting constructor (PR58051).  I
      think this was not allowed in C++17, but it is allowed under the implicit
      move changes from C++20, and those changes were voted to apply as a DR to
      earlier standards as well, so I don't want to break it now.
      
      So after fixing the flags check I changed the test to allow value
      parameters.
      
      gcc/cp/ChangeLog:
      
      	PR c++/91212
      	* call.c (build_over_call): Don't call a const ref
      	overload for implicit move.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/91212
      	* g++.dg/cpp0x/move-return3.C: New test.
      81bc0ec3
    • Tobias Burnus's avatar
      OpenMP: Handle order(concurrent) clause in gfortran · d8140b9e
      Tobias Burnus authored
      gcc/fortran/ChangeLog:
      
      	* dump-parse-tree.c (show_omp_clauses): Handle order(concurrent).
      	* gfortran.h (struct gfc_omp_clauses): Add order_concurrent.
      	* openmp.c (enum omp_mask1, OMP_DO_CLAUSES, OMP_SIMD_CLAUSES):
      	Add OMP_CLAUSE_ORDER.
      	* trans-openmp.c (gfc_trans_omp_clauses, gfc_split_omp_clauses):
      	Handle order(concurrent) clause.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/gomp/order-3.f90: New test.
      	* gfortran.dg/gomp/order-4.f90: New test.
      d8140b9e
    • Tiziano Müller's avatar
      preprocessor: Teach traditional about has_include [PR95889] · f6fe3bbf
      Tiziano Müller authored
      Traditional cpp (used by fortran) didn;t know about the new
      __has_include__ implementation.  Hey, since when did traditional cpp
      grow __has_include__? That wasn't in knr!
      
      	libcpp/
      	* init.c (builtin_array): Add xref comment.
      	* traditional.c (fun_like_macro): Add HAS_INCLUDE codes.
      	gcc/testsuite/
      	* c-c++-common/cpp/has-include-1-traditional.c: New.
      f6fe3bbf
    • David Edelsohn's avatar
      testsuite: libstdc++ atomic_float/value_init.cc requires libatomic · 55ede0bb
      David Edelsohn authored
      atomic_float/value_init.cc requires libatomic for some targets, i.e., when
      it tries to perform an atomic operation with a 64 bit floating point
      double type on a 32 bit target.  This patch adds AIX and Darwin to the
      list of targets that require the libatomic option and adds the option to
      the atomic_float/value_init.cc testcase.
      
      libstdc++-v3/ChangeLog:
      
      2020-07-28  David Edelsohn  <dje.gcc@gmail.com>
      	    Jonathan Wakely  <jwakely@redhat.com>
      	    Rainer Orth  <ro@CeBiTec.Uni-Bielefeld.DE>
      
      	* testsuite/lib/dg-options.exp (add_options_for_libatomic): Add
      	target powerpc-ibm-aix* and powerpc*-*-darwin*.
      	* testsuite/29_atomics/atomic_float/value_init.cc: Add options
      	for libatomic.
      55ede0bb
    • Fangrui Song's avatar
      Don't make -gsplit-dwarf imply -g · c8d3f2b6
      Fangrui Song authored
      -gsplit-dwarf introduces order dependency: it overrides previous -g0 and -g1.
      
      Don't imply -g so that it can be plugged into a build without worrying
      that unnecessary debugging information may be generated.
      
      2020-05-13  Fangrui Song  <maskray@google.com>
      
      	PR debug/95096
      	* opts.c (common_handle_option): Don't make -gsplit-dwarf imply -g.
      	* doc/invoke.texi (-gsplit-dwarf): Update documentation.
      c8d3f2b6
    • Tobias Burnus's avatar
      OpenMP: Permit in Fortran omp target data without map · d6cd139c
      Tobias Burnus authored
      gcc/fortran/ChangeLog:
      
      	* openmp.c (resolve_omp_clauses): Permit 'omp target data' without
      	map if use_device_{addr,ptr} is present.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/gomp/map-3.f90: New test.
      	* gfortran.dg/gomp/map-4.f90: New test.
      d6cd139c
    • Joe Ramsay's avatar
      arm: Enable no-writeback vldr.16/vstr.16. · 9f6abd2d
      Joe Ramsay authored
      There was previously no way to specify that a register operand cannot
      have any writeback modifiers, and as a result the argument to vldr.16
      and vstr.16 could be erroneously output with post-increment. This
      change adds a constraint which forbids all writeback, and
      selects it in the relevant case for vldr.16 and vstr.16
      
      Bootstrapped on arm-linux, gcc and CMSIS-DSP testsuites are clean.
      Is this patch OK for trunk? If yes, please commit on my behalf as I
      don't
      have commit rights.
      
      gcc/ChangeLog:
      
      	* config/arm/arm-protos.h (arm_coproc_mem_operand_no_writeback):
      	Declare prototype.
      	(arm_mve_mode_and_operands_type_check): Declare prototype.
      	* config/arm/arm.c (arm_coproc_mem_operand): Refactor to use
      	_arm_coproc_mem_operand.
      	(arm_coproc_mem_operand_wb): New function to cover full, limited
      	and no writeback.
      	(arm_coproc_mem_operand_no_writeback): New constraint for memory
      	operand with no writeback.
      	(arm_print_operand): Extend 'E' specifier for memory operand
      	that does not support writeback.
      	(arm_mve_mode_and_operands_type_check): New constraint check for
      	MVE memory operands.
      	* config/arm/constraints.md: Add Uj constraint for VFP vldr.16
      	and vstr.16.
      	* config/arm/vfp.md (*mov_load_vfp_hf16): New pattern for
      	vldr.16.
      	(*mov_store_vfp_hf16): New pattern for vstr.16.
      	(*mov<mode>_vfp_<mode>16): Remove MVE moves.
      9f6abd2d
    • Martin Liska's avatar
      gcc-changelog: fix combining of arguments. · 51758577
      Martin Liska authored
      contrib/ChangeLog:
      
      2020-07-29  Martin Liska  <mliska@suse.cz>
      
      	* git-backport.py: fix how are ChangeLog paths combined.
      51758577
    • Mark Eggleston's avatar
      Fortran : Don't warn for LOGICAL kind conversion PR96319 · 6af82847
      Mark Eggleston authored
      LOGICAL values will always fit regardless of kind so there
      is no need for warnings.
      
      2020-07-29  Mark Eggleston  <markeggleston@gcc.gnu.org>
      
      gcc/fortran/
      
      	PR fortran/96319
      	* intrinsic.c (gfc_convert_type_warn):  Add check for
      	LOGICAL type so that warnings are not output.
      
      2020-07-29  Mark Eggleston  <markeggleston@gcc.gnu.org>
      
      gcc/testsuite/
      
      	PR fortran/96319
      	* gfortran.dg/pr96319.f90: New test.
      6af82847
    • Richard Biener's avatar
      tree-optimization/96349 - avoid abnormal coalescing issues in loop split · 2b2f3867
      Richard Biener authored
      This avoids splitting a loop when the entry value of a loop PHI is
      involved with abnormal coalescing.
      
      2020-07-28  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/96349
      	* tree-ssa-loop-split.c (stmt_semi_invariant_p_1): When the
      	condition runs into a loop PHI with an abnormal entry value give up.
      
      	* gcc.dg/torture/pr96349.c: New testcase.
      2b2f3867
    • Richard Biener's avatar
      more SCEV cache clearing · 883eec66
      Richard Biener authored
      This fixes two more places, in loop interchange and in the
      vectorizer where the SCEV verifier sees stale entries.
      
      2020-07-29  Richard Biener  <rguenther@suse.de>
      
      	* tree-vectorizer.c (vectorize_loops): Reset the SCEV
      	cache if we removed any SIMD UID SSA defs.
      	* gimple-loop-interchange.cc (pass_linterchange::execute):
      	Reset the scev cache if we interchanged a loop.
      883eec66
    • Richard Biener's avatar
      tree-optimization/95679 - properly signal changes from propagate_into_phi_args · 8e8792a3
      Richard Biener authored
      This restores a lost setting of something_changed with the
      recent refactoring of the substitute and fold engine.  The
      reported ICE in the PR was meanwhile mitigated in other ways
      but the issue can still result in missed optimizations via
      failed runs of CFG cleanup.
      
      2020-07-29  Richard Biener  <rguenther@suse.de>
      
      	PR tree-optimization/95679
      	* tree-ssa-propagate.h
      	(substitute_and_fold_engine::propagate_into_phi_args): Return
      	whether anything changed.
      	* tree-ssa-propagate.c
      	(substitute_and_fold_engine::propagate_into_phi_args): Likewise.
      	(substitute_and_fold_dom_walker::before_dom_children): Update
      	something_changed.
      8e8792a3
    • Tobias Burnus's avatar
      gcc/fortran/module.c: Fix indentation · 6de5600a
      Tobias Burnus authored
      gcc/fortran/ChangeLog:
      
      	* module.c (mio_symbol_attribute): Fix indent of previous
      	commit.
      6de5600a
    • Mark Eggleston's avatar
      Fortran : ICE in gfc_conv_scalarized_array_ref PR53298 · c2e99836
      Mark Eggleston authored
      When an array of characters is an argument to a subroutine and
      is accessed using (:)(1:) an ICE occurs.  The upper bound of the
      substring does not have an expression and such should not have
      a Scalarization State structure added to the Scalarization State
      chain.
      
      2020-07-29  Mark Eggleston  <markeggleston@gcc.gnu.org>
      
      gcc/fortran/
      
      	PR fortran/53298
      	* trans-array.c (gfc_walk_array_ref): If ref->ss.end is set
      	call gfc_get_scalar_ss.
      
      2020-07-29  Mark Eggleston  <markeggleston@gcc.gnu.org>
      
      gcc/testsuite/
      
      	PR fortran/53298
      	* gfortran.dg/pr53298.f90: New test.
      c2e99836
    • François Dumont's avatar
      libstdc++: Fix unordered containers move constructors noexcept qualification · 12324b9a
      François Dumont authored
      _Hashtable move constructor is wrongly qualified as noexcept(true) regardless of
      _Equal and _H1 copy constructor qualifications.
      _Hashtable allocator-aware move constructor is missing its noexcept
      qualification like the depending unordered containers ones.
      
      libstdc++-v3/ChangeLog:
      
      	* include/bits/hashtable.h
      	(_Hashtable(_Hashtable&& __ht, __node_alloc_type&& __a, true_type)):
      	Add noexcept qualification.
      	(_Hashtable(_Hashtable&&)): Fix noexcept qualification.
      	(_Hashtable(_Hashtable&&, const allocator_type&)): Add noexcept
      	qualification.
      	* include/bits/unordered_map.h
      	(unordered_map(unordered_map&&, const allocator_type&)): Add noexcept
      	qualification.
      	(unordered_multimap(unordered_multimap&&, const allocator_type&)):
      	Likewise.
      	* include/bits/unordered_set.h
      	(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
      	(unordered_multiset(unordered_multiset&&, const allocator_type&)):
      	Likewise.
      	* include/debug/unordered_map
      	(unordered_map(unordered_map&&, const allocator_type&)): Likewise.
      	(unordered_multimap(unordered_multimap&&, const allocator_type&)):
      	Likewise.
      	* include/debug/unordered_set
      	(unordered_set(unordered_set&&, const allocator_type&)): Likewise.
      	(unordered_multiset(unordered_multiset&&, const allocator_type&)):
      	Likewise.
      	* testsuite/23_containers/unordered_map/allocator/default_init.cc:
      	New test.
      	* testsuite/23_containers/unordered_map/cons/noexcept_default_construct.cc:
      	New test.
      	* testsuite/23_containers/unordered_map/cons/noexcept_move_construct.cc:
      	New test.
      	* testsuite/23_containers/unordered_map/modifiers/move_assign.cc:
      	New test.
      	* testsuite/23_containers/unordered_multimap/cons/noexcept_default_construct.cc:
      	New test.
      	* testsuite/23_containers/unordered_multimap/cons/noexcept_move_construct.cc:
      	New test.
      	* testsuite/23_containers/unordered_multiset/cons/noexcept_default_construct.cc:
      	New test.
      	* testsuite/23_containers/unordered_multiset/cons/noexcept_move_construct.cc:
      	New test.
      	* testsuite/23_containers/unordered_set/allocator/default_init.cc:
      	New test.
      	* testsuite/23_containers/unordered_set/cons/noexcept_default_construct.cc:
      	New test.
      	* testsuite/23_containers/unordered_set/cons/noexcept_move_construct.cc:
      	New test.
      12324b9a
    • Stefan Schulze Frielinghaus's avatar
      vect: Fix infinite loop while determining peeling amount · f1660ceb
      Stefan Schulze Frielinghaus authored
      This is a follow up to commit 5c9669a0 respectively discussion
      https://gcc.gnu.org/pipermail/gcc-patches/2020-June/549132.html
      
      In case a type has a lower alignment than its size, ensure that we
      advance.  For example, on s390x we have for a long double an alignment
      constraint of 8 bytes whereas the size is 16 bytes.  Increasing the loop
      variable only by TARGET_ALIGN / DR_SIZE which equals zero in case of a
      long double results in an infinite loop.  This is fixed by ensuring that
      we advance at least by one.
      
      gcc/ChangeLog:
      
      	* tree-vect-data-refs.c (vect_enhance_data_refs_alignment):
      	Ensure that loop variable npeel_tmp advances in each iteration.
      f1660ceb
    • Tobias Burnus's avatar
      OpenMP: Add 'omp requires' to Fortran (mostly parsing) · 269322ec
      Tobias Burnus authored
      gcc/fortran/ChangeLog:
      
      	* gfortran.h (enum gfc_statement): Add ST_OMP_REQUIRES.
      	(enum gfc_omp_requires_kind): New.
      	(enum gfc_omp_atomic_op): Add GFC_OMP_ATOMIC_ACQ_REL.
      	(struct gfc_namespace): Add omp_requires and omp_target_seen.
      	(gfc_omp_requires_add_clause,
      	(gfc_check_omp_requires): New.
      	* match.h (gfc_match_omp_requires): New.
      	* module.c (enum ab_attribute, attr_bits): Add omp requires clauses.
      	(mio_symbol_attribute): Read/write them.
      	* openmp.c (gfc_check_omp_requires, (gfc_omp_requires_add_clause,
      	gfc_match_omp_requires): New.
      	(gfc_match_omp_oacc_atomic): Use requires's default mem-order.
      	* parse.c (decode_omp_directive): Match requires, set omp_target_seen.
      	(gfc_ascii_statement): Handle ST_OMP_REQUIRES.
      	* trans-openmp.c (gfc_trans_omp_atomic): Handle GFC_OMP_ATOMIC_ACQ_REL.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/gomp/requires-1.f90: New test.
      	* gfortran.dg/gomp/requires-2.f90: New test.
      	* gfortran.dg/gomp/requires-3.f90: New test.
      	* gfortran.dg/gomp/requires-4.f90: New test.
      	* gfortran.dg/gomp/requires-5.f90: New test.
      	* gfortran.dg/gomp/requires-6.f90: New test.
      	* gfortran.dg/gomp/requires-7.f90: New test.
      	* gfortran.dg/gomp/requires-8.f90: New test.
      	* gfortran.dg/gomp/requires-9.f90: New test.
      269322ec
    • Hans-Peter Nilsson's avatar
      config/mmix/mmix.h (NO_FUNCTION_CSE): Define to 1. · 5c180464
      Hans-Peter Nilsson authored
      The tests gcc.dg/tree-ssa/loop-1.c and gcc.dg/weak/typeof-2.c
      assume this setting and are as a consequence riddled with
      exceptions for targets that actually do yield better code when
      calling through a register rather than repeatedly the same
      symbol.  Nonetheless, defining it makes sense for MMIX.
      
      (Even better IMHO, this macro shouldn't exist and instead rtx
      costs be used or perhaps just a target-specific default of
      flag_no_function_cse.)
      
      gcc:
      	* config/mmix/mmix.h (NO_FUNCTION_CSE): Define to 1.
      5c180464
    • Hans-Peter Nilsson's avatar
      mmix.h (ASM_OUTPUT_EXTERNAL): Define to default_elf_asm_output_external. · eb08b5d1
      Hans-Peter Nilsson authored
      Whoops.  When un-disabling visibility support for mmix, I missed that
      some of the newly enabled tests were FAILs, for not emitting .hidden
      for references to external declarations.  This takes care of
      gcc.dg/visibility-14.c .. -19.c, and gcc.dg/visibility-23.c.
      
      gcc:
      	* config/mmix/mmix.h (ASM_OUTPUT_EXTERNAL): Define to
      	default_elf_asm_output_external.
      eb08b5d1
    • GCC Administrator's avatar
      Daily bump. · 7ebb7d0c
      GCC Administrator authored
      7ebb7d0c
  3. Jul 28, 2020
    • Sergei Trofimovich's avatar
      ipa/96291: don't crash on unoptimized lto functions · cbf10ac5
      Sergei Trofimovich authored
      In PR ipa/96291 the test contained an SCC with one
      unoptimized function. This tricked ipa-cp into NULL dereference.
      
      has_undead_caller_from_outside_scc_p() did not take into account
      that unoptimized funtions don't have IPA summary analysis. And
      dereferenced NULL pointer causing an ICE.
      
      gcc/
      	PR ipa/96291
      	* ipa-cp.c (has_undead_caller_from_outside_scc_p): Consider
      	unoptimized callers as undead.
      
      gcc/testsuite/
      	PR ipa/96291
      	* gcc.dg/lto/pr96291_0.c: New testcase.
      	* gcc.dg/lto/pr96291_1.c: Support file.
      	* gcc.dg/lto/pr96291_2.c: Likewise.
      	* gcc.dg/lto/pr96291.h: Likewise.
      cbf10ac5
Loading