Skip to content
Snippets Groups Projects
  1. May 19, 2021
    • Jonathan Wright's avatar
      aarch64: Refactor aarch64_<sur>q<r>shr<u>n_n<mode> RTL pattern · ddbdb9a3
      Jonathan Wright authored
      Split the aarch64_<sur>q<r>shr<u>n_n<mode> pattern into separate
      scalar and vector variants. Further split the vector pattern into
      big/little endian variants that model the zero-high-half semantics
      of the underlying instruction - allowing for more combinations with
      the write-to-high-half variant (aarch64_<sur>q<r>shr<u>n2_n<mode>.)
      
      gcc/ChangeLog:
      
      2021-05-14  Jonathan Wright  <jonathan.wright@arm.com>
      
      	* config/aarch64/aarch64-simd-builtins.def: Split builtin
      	generation for aarch64_<sur>q<r>shr<u>n_n<mode> pattern into
      	separate scalar and vector generators.
      	* config/aarch64/aarch64-simd.md
      	(aarch64_<sur>q<r>shr<u>n_n<mode>): Define as an expander and
      	split into...
      	(aarch64_<sur>q<r>shr<u>n_n<mode>_insn_le): This and...
      	(aarch64_<sur>q<r>shr<u>n_n<mode>_insn_be): This.
      	* config/aarch64/iterators.md: Define SD_HSDI iterator.
      ddbdb9a3
    • Jonathan Wright's avatar
      aarch64: Relax aarch64_sqxtun2<mode> RTL pattern · 778ac63f
      Jonathan Wright authored
      Use UNSPEC_SQXTUN instead of UNSPEC_SQXTUN2 in aarch64_sqxtun2<mode>
      patterns. This allows for more more aggressive combinations and
      ultimately better code generation. The now redundant UNSPEC_SQXTUN2
      is removed.
      
      gcc/ChangeLog:
      
      2021-05-14  Jonathn Wright  <jonathan.wright@arm.com>
      
      	* config/aarch64/aarch64-simd.md: Use UNSPEC_SQXTUN instead
      	of UNSPEC_SQXTUN2.
      	* config/aarch64/iterators.md: Remove UNSPEC_SQXTUN2.
      778ac63f
    • Jonathan Wright's avatar
      aarch64: Relax aarch64_<sur>q<r>shr<u>n2_n<mode> RTL pattern · 4e26303e
      Jonathan Wright authored
      Implement saturating right-shift and narrow high Neon intrinsic RTL
      patterns using a vec_concat of a register_operand and a VQSHRN_N
      unspec - instead of just a VQSHRN_N unspec. This more relaxed pattern
      allows for more aggressive combinations and ultimately better code
      generation.
      
      gcc/ChangeLog:
      
      2021-03-04  Jonathan Wright  <jonathan.wright@arm.com>
      
      	* config/aarch64/aarch64-simd.md (aarch64_<sur>q<r>shr<u>n2_n<mode>):
      	Implement as an expand emitting a big/little endian
      	instruction pattern.
      	(aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_le): Define.
      	(aarch64_<sur>q<r>shr<u>n2_n<mode>_insn_be): Define.
      4e26303e
    • Jonathan Wright's avatar
      aarch64: Relax aarch64_<sur><addsub>hn2<mode> RTL pattern · 3eddaad0
      Jonathan Wright authored
      Implement v[r]addhn2 and v[r]subhn2 Neon intrinsic RTL patterns using
      a vec_concat of a register_operand and an ADDSUBHN unspec - instead
      of just an ADDSUBHN2 unspec. This more relaxed pattern allows for
      more aggressive combinations and ultimately better code generation.
      
      This patch also removes the now redundant [R]ADDHN2 and [R]SUBHN2
      unspecs and their iterator.
      
      gcc/ChangeLog:
      
      2021-03-03  Jonathan Wright  <jonathan.wright@arm.com>
      
      	* config/aarch64/aarch64-simd.md (aarch64_<sur><addsub>hn2<mode>):
      	Implement as an expand emitting a big/little endian
      	instruction pattern.
      	(aarch64_<sur><addsub>hn2<mode>_insn_le): Define.
      	(aarch64_<sur><addsub>hn2<mode>_insn_be): Define.
      	* config/aarch64/iterators.md: Remove UNSPEC_[R]ADDHN2 and
      	UNSPEC_[R]SUBHN2 unspecs and ADDSUBHN2 iterator.
      3eddaad0
    • Richard Biener's avatar
      middle-end/100672 - fix bogus right shift folding · 8d51039c
      Richard Biener authored
      This fixes the bogus use of TYPE_PRECISION on vector types
      from optimizing -((int)x >> 31) into (unsigned)x >> 31.
      
      2021-05-19  Richard Biener  <rguenther@suse.de>
      
      	PR middle-end/100672
      	* fold-const.c (fold_negate_expr_1): Use element_precision.
      	(negate_expr_p): Likewise.
      
      	* gcc.dg/torture/pr100672.c: New testcase.
      8d51039c
    • Martin Liska's avatar
      Fix typos. · 32bd0353
      Martin Liska authored
      	PR testsuite/100658
      
      gcc/cp/ChangeLog:
      
      	* mangle.c (write_encoding): Fix typos.
      
      gcc/jit/ChangeLog:
      
      	* libgccjit.c (gcc_jit_context_new_function): Fix typos.
      
      gcc/testsuite/ChangeLog:
      
      	* gcc.dg/local1.c: Fix typos.
      	* gcc.dg/ucnid-5-utf8.c: Likewise.
      	* gcc.dg/ucnid-5.c: Likewise.
      32bd0353
    • Andre Simoes Dias Vieira's avatar
      aarch64: Enable aarch64_load to use UNSPEC_PRED_X loads · 7bb4b7a5
      Andre Simoes Dias Vieira authored
      This patch will enable the use of loads using the UNSPEC_PRED_X enum in the
      aarch64_load pattern, thus enabling combine to combine such loads with extends.
      
      gcc/ChangeLog:
      2021-05-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	* config/aarch64/iterators.md (SVE_PRED_LOAD): New iterator.
      	(pred_load): New int attribute.
      	* config/aarch64/aarch64-sve.md
      	(aarch64_load_<ANY_EXTEND:optab><SVE_HSDI:mode><SVE_PARTIAL_I:mode>): Use
      	SVE_PRED_LOAD enum iterator and corresponding pred_load attribute.
      	* config/aarch64/aarch64-sve-builtins-base.cc (expand): Update call to
      	code_for_aarch64_load.
      
      gcc/testsuite/ChangeLog:
      2021-05-19  Andre Vieira  <andre.simoesdiasvieira@arm.com>
      
      	* gcc.target/aarch64/sve/logical_unpacked_and_2.c: Change
      	scan-assembly-times to scan-assembly not for superfluous uxtb.
      	* gcc.target/aarch64/sve/logical_unpacked_and_3.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_and_4.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_and_6.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_and_7.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_eor_2.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_eor_3.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_eor_4.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_eor_6.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_eor_7.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_orr_2.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_orr_3.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_orr_4.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_orr_6.c: Likewise.
      	* gcc.target/aarch64/sve/logical_unpacked_orr_7.c: Likewise.
      	* gcc.target/aarch64/sve/ld1_extend.c: New test.
      7bb4b7a5
    • Richard Biener's avatar
      Avoid marking TARGET_MEM_REF bases addressable · 35a16e4b
      Richard Biener authored
      The following does no longer mark TARGET_MEM_REF bases addressable,
      mimicing MEM_REFs beahvior here.  In contrast to the latter,
      TARGET_MEM_REF RTL expansion expects to always operate on memory
      though, so make sure we expand them so.
      
      2021-05-19  Richard Biener  <rguenther@suse.de>
      
      	* cfgexpand.c (discover_nonconstant_array_refs_r): Make
      	sure TARGET_MEM_REF bases are expanded as memory.
      	* tree-ssa-operands.c (operands_scanner::get_tmr_operands):
      	Do not mark TARGET_MEM_REF bases addressable.
      	* tree-ssa.c (non_rewritable_mem_ref_base): Handle
      	TARGET_MEM_REF bases as never rewritable.
      	* gimple-walk.c (walk_stmt_load_store_addr_ops): Do not
      	walk TARGET_MEM_REF bases as address-takens.
      	* tree-ssa-dce.c (ref_may_be_aliased): Handle TARGET_MEM_REF.
      35a16e4b
    • Richard Biener's avatar
      Enable more WITH_SIZE_EXPR processing · 2e6ad1ba
      Richard Biener authored
      This enables the alias machinery for WITH_SIZE_EXPR which can appear
      in call LHS and arguments.  In particular this drops the NULL
      return from get_base_address and it adjusts get_ref_base_and_extent
      and friends to use the size information in WITH_SIZE_EXPR and
      look through it for further processing.
      
      2021-05-19  Richard Biener  <rguenther@suse.de>
      
      	* builtins.c (get_object_alignment_1): Strip outer
      	WITH_SIZE_EXPR.
      	* tree-dfa.c (get_ref_base_and_extent): Handle outer
      	WITH_SIZE_EXPR for size processing and process the
      	containing ref.
      	* tree-ssa-alias.c (ao_ref_base_alias_set): Strip
      	outer WITH_SIZE_EXPR.
      	(ao_ref_base_alias_ptr_type): Likewise.
      	(refs_may_alias_p_2): Allow WITH_SIZE_EXPR in ref->ref
      	and handle that accordingly, stripping it for the
      	core alias workers.
      	* tree.c (get_base_address): Handle WITH_SIZE_EXPR by
      	looking through it instead of returning NULL.
      2e6ad1ba
    • Thomas Schwinge's avatar
      Add 'libgomp.oacc-c-c++-common/private-atomic-1.c' [PR83812] · 1467100f
      Thomas Schwinge authored
      ... to at least document/test/XFAIL nvptx offloading: PR83812 "operation not
      supported on global/shared address space".
      
      	libgomp/
      	PR target/83812
      	* testsuite/libgomp.oacc-c-c++-common/private-atomic-1.c: New.
      1467100f
    • Julian Brown's avatar
      Add 'libgomp.oacc-c-c++-common/loop-gwv-2.c' · 5a16fb19
      Julian Brown authored
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/loop-gwv-2.c: New.
      5a16fb19
    • Jakub Jelinek's avatar
      builtins: Fix ICE with unprototyped builtin call [PR100576] · e6683450
      Jakub Jelinek authored
      For unprototyped builtins the checking we perform is only about whether
      the used argument is integral, pointer etc., not the exact precision.
      We emit a warning about the problem though:
      pr100576.c: In function ‘foo’:
      pr100576.c:9:11: warning: implicit declaration of function ‘memcmp’ [-Wimplicit-function-declaration]
          9 |   int n = memcmp (p, v, b);
            |           ^~~~~~
      pr100576.c:1:1: note: include ‘<string.h>’ or provide a declaration of ‘memcmp’
        +++ |+#include <string.h>
          1 | /* PR middle-end/100576 */
      pr100576.c:9:25: warning: ‘memcmp’ argument 3 type is ‘int’ where ‘long unsigned int’ is expected in a call to built-in function declared without prototype
      +[-Wbuiltin-declaration-mismatch]
          9 |   int n = memcmp (p, v, b);
            |                         ^
      It means in the testcase below where the user incorrectly called memcmp
      with last argument int rather then size_t, the warning stuff in builtins.c
      ICEs because it compares a wide_int from such a bound with another wide_int
      which has precision of size_t/sizetype and wide_int asserts the compared
      wide_ints are compatible.
      
      Fixed by forcing the bound to have the right type.
      
      2021-05-19  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/100576
      	* builtins.c (check_read_access): Convert bound to size_type_node if
      	non-NULL.
      
      	* gcc.c-torture/compile/pr100576.c: New test.
      e6683450
    • Richard Biener's avatar
      apply TLC to GIMPLE reference verification · a73a5af2
      Richard Biener authored
      This inlines verify_types_in_gimple_min_lval and makes sure we
      also verify call lhs and arguments.  It also asserts that
      WITH_SIZE_EXPR in plain assignments does not happen, instead
      those should have become memcpy/memset.
      
      2021-05-18  Richard Biener  <rguenther@suse.de>
      
      	* tree-cfg.c (verify_types_in_gimple_min_lval): Inline...
      	(verify_types_in_gimple_reference): ... here.  Sanitize.
      	(verify_gimple_call): Verify references in LHS and arguments.
      	(verify_gimple_assign_single): Reject WITH_SIZE_EXPR.
      a73a5af2
    • Uros Bizjak's avatar
      i386: Allow 64bit vector modes in general registers · ea30c7bd
      Uros Bizjak authored
      Allow V8QI, V4HI and V2SI modes in 64bit general registers for
      TARGET_64BIT and add alternatives using general registers
      to 64bit vector logic instructions.
      
      2021-05-19  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/
      	* config/i386/i386.h (VALID_INT_MODE_P):
      	Add V8QI, V4HI and V2SI modes for TARGET_64BIT.
      	* config/i386/i386.md (isa): Add x64_bmi.
      	(enabled): Handle x64_bmi.
      	* config/i386/mmx.md (mmx_andnot<MMXMODEI:mode>3):
      	Add alternative using 64bit general registers.
      	(*mmx_<any_logic:code><MMXMODEI:mode>3): Ditto.
      ea30c7bd
    • Bernd Edlinger's avatar
      Fix commit mistake in testcase gcc.dg/tree-ssa/ssa-sink-3.c · 51cfa554
      Bernd Edlinger authored
      the test case was accidenally changed to empty file.
      
      2021-05-19  Bernd Edlinger  <bernd.edlinger@hotmail.de>
      
      	* gcc.dg/tree-ssa/ssa-sink-3.c: Fix test case.
      51cfa554
    • Jakub Jelinek's avatar
      openmp: Handle lastprivate on combined target correctly [PR99928] · 780e5d4a
      Jakub Jelinek authored
      This patch deals with 2 issues:
      1) the gimplifier couldn't differentiate between
       #pragma omp parallel master
       #pragma omp taskloop simd
      and
       #pragma omp parallel master taskloop simd
      when there is a significant difference for clause handling between
      the two; as master construct doesn't have any clauses, we don't currently
      represent it during gimplification by an gimplification omp context at all,
      so this patch makes sure we don't set OMP_PARALLEL_COMBINED on parallel master
      when not combined further.  If we ever add a separate master context during
      gimplification, we'd use ORT_COMBINED_MASTER vs. ORT_MASTER (or MASKED probably).
      2) lastprivate when combined with target should be map(tofrom:) on the target,
      this change handles it only when not combined with firstprivate though, that
      will need further work (similarly to linear or reduction).
      
      2021-05-19  Jakub Jelinek  <jakub@redhat.com>
      
      	PR middle-end/99928
      gcc/
      	* tree.h (OMP_MASTER_COMBINED): Define.
      	* gimplify.c (gimplify_scan_omp_clauses): Rewrite lastprivate
      	handling for outer combined/composite constructs to a loop.
      	Handle lastprivate on combined target.
      	(gimplify_expr): Formatting fix.
      gcc/c/
      	* c-parser.c (c_parser_omp_master): Set OMP_MASTER_COMBINED on
      	master when combined with taskloop.
      	(c_parser_omp_parallel): Don't set OMP_PARALLEL_COMBINED on
      	parallel master when not combined with taskloop.
      gcc/cp/
      	* parser.c (cp_parser_omp_master): Set OMP_MASTER_COMBINED on
      	master when combined with taskloop.
      	(cp_parser_omp_parallel): Don't set OMP_PARALLEL_COMBINED on
      	parallel master when not combined with taskloop.
      gcc/testsuite/
      	* c-c++-common/gomp/pr99928-2.c: Remove all xfails.
      	* c-c++-common/gomp/pr99928-12.c: New test.
      780e5d4a
    • Ian Lance Taylor's avatar
    • Ian Lance Taylor's avatar
      gofrontend: revert startswith change · 2ebddf2e
      Ian Lance Taylor authored
      This file is copied from a different repo and should not be changed
      directly in the GCC repo.
      2ebddf2e
    • Ian Lance Taylor's avatar
      libgo: update configure to current sources · c922c653
      Ian Lance Taylor authored
      Change-Id: I12766baf02bfdf2233f1c5bde1a270f06b020aa7
      Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/321076
      
      
      Trust: Ian Lance Taylor <iant@golang.org>
      Reviewed-by: default avatarCherry Mui <cherryyz@google.com>
      Reviewed-by: default avatarThan McIntosh <thanm@google.com>
      c922c653
    • Ian Lance Taylor's avatar
    • Xionghu Luo's avatar
      Run pass_sink_code once more before store_merging · de56f95a
      Xionghu Luo authored
      Gimple sink code pass runs quite early, there may be some new
      oppertunities exposed by later gimple optmization passes, this patch
      runs the sink code pass once more before store_merging.  For detailed
      discussion, please refer to:
      https://gcc.gnu.org/pipermail/gcc-patches/2020-December/562352.html
      
      Tested the SPEC2017 performance on P8LE, 544.nab_r is improved
      by 2.43%, but no big changes to other cases, GEOMEAN is improved quite
      small with 0.25%.
      
      gcc/ChangeLog:
      
      2021-05-18  Xionghu Luo  <luoxhu@linux.ibm.com>
      
      	* passes.def: Add sink_code pass before store_merging.
      	* tree-ssa-sink.c (pass_sink_code:clone): New.
      
      gcc/testsuite/ChangeLog:
      
      2021-05-18  Xionghu Luo  <luoxhu@linux.ibm.com>
      
      	* gcc.dg/tree-ssa/ssa-sink-1.c: Adjust.
      	* gcc.dg/tree-ssa/ssa-sink-2.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-3.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-4.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-5.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-6.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-7.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-8.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-9.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-10.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-13.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-14.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-16.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-17.c: Ditto.
      	* gcc.dg/tree-ssa/ssa-sink-18.c: New.
      de56f95a
    • Ian Lance Taylor's avatar
      39ed6a88
    • Jason Merrill's avatar
      c++: ICE with bad definition of decimal32 [PR100261] · 01b28647
      Jason Merrill authored
      The change to only look at the global binding for non-classes meant that
      here, when dealing with decimal32 which is magically mangled like its first
      non-static data member, we got a collision with the mangling for float.
      Fixed by also looking up an existing binding for such magical classes.
      
      	PR c++/100261
      
      gcc/cp/ChangeLog:
      
      	* rtti.c (get_tinfo_decl_direct): Check TYPE_TRANSPARENT_AGGR.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/dfp/mangle-6.C: New test.
      01b28647
    • Jason Merrill's avatar
      c++: template template parm pack expansion [PR100372] · 061fe8c5
      Jason Merrill authored
      Here we have a pack expansion of a template template parameter pack, of
      which the pattern is a TEMPLATE_DECL, which strip_typedefs doesn't want to
      see.
      
      	PR c++/100372
      
      gcc/cp/ChangeLog:
      
      	* tree.c (strip_typedefs): Only look at the pattern of a
      	TYPE_PACK_EXPANSION if it's a type.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/alias-decl-ttp1.C: New test.
      061fe8c5
    • GCC Administrator's avatar
      Daily bump. · a8daf9a1
      GCC Administrator authored
      a8daf9a1
  2. May 18, 2021
    • Mike Frysinger's avatar
      sim: depend on gnulib · 17af39e1
      Mike Frysinger authored
      We're going to start using gnulib in the sim, so make sure it exists.
      
      ChangeLog:
      
      	* Makefile.def: Add configure-sim dependency on all-gnulib.
      	* Makefile.in: Regenerated.
      17af39e1
    • Bill Schmidt's avatar
      rs6000: Remove old psabi warnings · 79cf0004
      Bill Schmidt authored
      Long ago we were forced to make some small ABI breaks to correct errors
      in the implementation, and we added warning messages for the changes
      from GCC 4.9 to GCC 5.  Enough time has passed that these are now just
      irritants, so let's remove them.  Also clean up associated macros using
      rs6000_special_adjust_field_align_p, which has been always returning
      false for a long time.
      
      2021-05-18  Bill Schmidt  <wschmidt@linux.ibm.com>
      
      gcc/
      	* config/rs6000/freebsd64.h (ADJUST_FIELD_ALIGN): Remove call to
      	rs6000_special_adjust_field_align_p.
      	* config/rs6000/linux64.h (ADJUST_FIELD_ALIGN): Likewise.
      	* config/rs6000/rs6000-call.c (rs6000_function_arg_boundary):
      	Remove ABI warning.
      	(rs6000_function_arg): Likewise.
      	* config/rs6000/rs6000-protos.h
      	(rs6000_special_adjust_field_align_p): Remove prototype.
      	* config/rs6000/rs6000.c (rs6000_special_adjust_field_align_p):
      	Remove.
      	* config/rs6000/sysv4.h (ADJUST_FIELD_ALIGN): Remove call to
      	rs6000_special_adjust_field_align_p.
      
      gcc/testsuite/
      	* gcc.target/powerpc/ppc64-abi-warn-1.c: Remove.
      	* gcc.target/powerpc/ppc64-abi-warn-2.c: Remove.
      	* gcc.target/powerpc/ppc64-abi-warn-3.c: Remove.
      79cf0004
    • Iain Buclaw's avatar
      d: Use filename_ncmp instead of strncmp · 5c66a1a3
      Iain Buclaw authored
      gcc/d/ChangeLog:
      
      	* d-incpath.cc (prefixed_path): Use filename_ncmp instead of strncmp.
      5c66a1a3
    • Iain Buclaw's avatar
      d: Use startswith function instead of strncmp · f87ce014
      Iain Buclaw authored
      gcc/d/ChangeLog:
      
      	* types.cc (TypeVisitor::visit (TypeEnum *)): Use startswith function
      	instead of strncmp.
      f87ce014
    • Iain Buclaw's avatar
      d: Revert "Come up with startswith function." · 3e0ad856
      Iain Buclaw authored
      This reverts changes to the DMD front-end in commit
      6ba3079d.
      
      Changes were incorrectly committed directly to the GCC repo instead of
      the master repository.
      
      gcc/d/ChangeLog:
      
      	* dmd/dinterpret.c (evaluateIfBuiltin): Revert last change.
      	* dmd/dmangle.c: Likewise.
      	* dmd/hdrgen.c: Likewise.
      	* dmd/identifier.c (Identifier::toHChars2): Likewise.
      3e0ad856
    • Marek Polacek's avatar
      c++: Prune dead functions. · fef7c899
      Marek Polacek authored
      I was looking at the LCOV coverage report for the C++ FE and
      found a bunch of unused functions that I think we can remove.
      Obviously, I left alone various dump_* and debug_* routines.
      I haven't removed cp_build_function_call although it is also
      currently unused.
      
      * lambda_return_type: was used in parser.c in GCC 7, unused since r255950,
      * classtype_has_non_deleted_copy_ctor: appeared in GCC 10, its usage
        was removed in c++/95350,
      * contains_wildcard_p: used in GCC 9, unused since r276764,
      * get_template_head_requirements: seems to never have been used,
      * check_constrained_friend: seems to never have been used,
      * subsumes_constraints: unused since r276764,
      * push_void_library_fn: usage removed in r248328,
      * get_template_parms_at_level: unused since r157857,
      * get_pattern_parm: unused since r275387.
      
      (Some of the seemingly unused functions, such as set_global_friend, are
      actually used in libcc1.)
      
      gcc/cp/ChangeLog:
      
      	* class.c (classtype_has_non_deleted_copy_ctor): Remove.
      	* constraint.cc (contains_wildcard_p): Likewise.
      	(get_template_head_requirements): Likewise.
      	(check_constrained_friend): Likewise.
      	(subsumes_constraints): Likewise.
      	* cp-tree.h (classtype_has_non_deleted_copy_ctor): Likewise.
      	(push_void_library_fn): Likewise.
      	(get_pattern_parm): Likewise.
      	(get_template_parms_at_level): Likewise.
      	(lambda_return_type): Likewise.
      	(get_template_head_requirements): Likewise.
      	(check_constrained_friend): Likewise.
      	(subsumes_constraints): Likewise.
      	* decl.c (push_void_library_fn): Likewise.
      	* lambda.c (lambda_return_type): Likewise.
      	* pt.c (get_template_parms_at_level): Likewise.
      	(get_pattern_parm): Likewise.
      fef7c899
    • Jason Merrill's avatar
      c++: non-static member, decltype, {} [PR100205] · 8c114759
      Jason Merrill authored
      This test was fixed by my second patch for PR93314, which distinguishes
      between constant-expression and potentially-constant-evaluated contexts in a
      way that my first patch did not.
      
      	PR c++/100205
      	PR c++/99314
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/decltype-nonstatic1.C: New test.
      8c114759
    • Jason Merrill's avatar
      c++: "perfect" implicitly deleted move [PR100644] · f71ca97d
      Jason Merrill authored
      Here we were ignoring the template constructor because the implicit move
      constructor had all perfect conversions.  But CWG1402 says that an
      implicitly deleted move constructor is ignored by overload resolution; we
      implement that instead by preferring any other candidate in joust, to get
      better diagnostics, but that means we need to handle that case here as well.
      
      gcc/cp/ChangeLog:
      
      	PR c++/100644
      	* call.c (perfect_candidate_p): An implicitly deleted move
      	is not perfect.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp0x/implicit-delete1.C: New test.
      f71ca97d
    • David Malcolm's avatar
      analyzer: fix missing leak after call to strsep [PR100615] · cd323d97
      David Malcolm authored
      PR analyzer/100615 reports a missing leak diagnostic.
      The issue is that the code calls strsep which the analyzer doesn't
      have special knowledge of, and so conservatively assumes that it
      could free the pointer, so drops malloc state for it.
      
      Properly "teaching" the analyzer about strsep would require it
      to support bifurcating state at a call, which is currently fiddly to
      do, so for now this patch notes that strsep doesn't affect the
      malloc state machine, allowing the analyzer to correctly detect the leak.
      
      gcc/analyzer/ChangeLog:
      	PR analyzer/100615
      	* sm-malloc.cc: Include "analyzer/function-set.h".
      	(malloc_state_machine::on_stmt): Call unaffected_by_call_p and
      	bail on the functions it recognizes.
      	(malloc_state_machine::unaffected_by_call_p): New.
      
      gcc/testsuite/ChangeLog:
      	PR analyzer/100615
      	* gcc.dg/analyzer/pr100615.c: New test.
      cd323d97
    • Uros Bizjak's avatar
      i386: Implement 4-byte vector support [PR100637] · 46ca31d6
      Uros Bizjak authored
      Add infrastructure, logic and arithmetic support for 4-byte vectors.
      These can be used with SSE2 targets, where movd instructions from/to
      XMM registers are available.  x86_64 ABI passes 4-byte vectors in
      integer registers, so also add logic operations with integer registers.
      
      2021-05-18  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/
      	PR target/100637
      	* config/i386/i386.h (VALID_SSE2_REG_MODE):
      	Add V4QI and V2HI modes.
      	(VALID_INT_MODE_P): Ditto.
      	* config/i386/mmx.md (VI_32): New mode iterator.
      	(mmxvecsize): Handle V4QI and V2HI.
      	(Yv_Yw): Ditto.
      	(mov<VI_32:mode>): New expander.
      	(*mov<mode>_internal): New insn pattern.
      	(movmisalign<VI_32:mode>): New expander.
      	(neg<VI_32:mode>): New expander.
      	(<plusminus:insn><VI_32:mode>3): New expander.
      	(*<plusminus:insn><VI_32:mode>3): New insn pattern.
      	(mulv2hi3): New expander.
      	(*mulv2hi3): New insn pattern.
      	(one_cmpl<VI_32:mode>2): New expander.
      	(*andnot<VI_32:mode>3): New insn pattern.
      	(<any_logic:code><VI_32:mode>3): New expander.
      	(*<any_logic:code><VI_32:mode>3): New insn pattern.
      
      gcc/testsuite/
      
      	PR target/100637
      	* gcc.target/i386/pr100637-1b.c: New test.
      	* gcc.target/i386/pr100637-1w.c: Ditto.
      
      	* gcc.target/i386/pr92658-avx2-2.c: Do not XFAIL scan for pmovsxbq.
      	* gcc.target/i386/pr92658-avx2.c: Do not XFAIL scan for pmovzxbq.
      	* gcc.target/i386/pr92658-avx512vl.c: Do not XFAIL scan for vpmovdb.
      	* gcc.target/i386/pr92658-sse4-2.c: Do not XFAIL scan for
      	pmovsxbd and pmovsxwq.
      	* gcc.target/i386/pr92658-sse4.c: Do not XFAIL scan for
      	pmovzxbd and pmovzxwq.
      46ca31d6
    • Mike Frysinger's avatar
      config: delete unused sim macros · 7d3711a5
      Mike Frysinger authored
      Nothing in gcc or binutils or gdb or anything anywhere uses these.
      
      config/
      
      	* acinclude.m4 (CYG_AC_PATH_SIM, CYG_AC_PATH_DEVO): Delete.
      7d3711a5
    • Tobias Burnus's avatar
      Fortran/OpenMP: Add missing EXEC_OMP_DEPOBJ case val [PR100642] · cc193ac8
      Tobias Burnus authored
      	PR fortran/100642
      
      gcc/fortran/ChangeLog:
      
      	* openmp.c (omp_code_to_statement): Add missing EXEC_OMP_DEPOBJ.
      
      gcc/testsuite/ChangeLog:
      
      	* gfortran.dg/goacc-gomp/depobj.f90: New test.
      cc193ac8
    • Patrick Palka's avatar
      libstdc++: Fix access issue in elements_view::_Sentinel [PR100631] · 38751c4d
      Patrick Palka authored
      In the earlier commit r12-854 I forgot to also rewrite the other operator-
      overload in terms of the split-out member function _M_distance_from.
      
      libstdc++-v3/ChangeLog:
      
      	PR libstdc++/100631
      	* include/std/ranges (elements_view::_Sentinel::operator-): Use
      	_M_distance_from in the other operator- overload too.
      	* testsuite/std/ranges/adaptors/elements.cc (test06): Augment test.
      38751c4d
    • Uros Bizjak's avatar
      i386: Fix <any_extend:insn>v4qiv4di2 expander · 8b9484c5
      Uros Bizjak authored
      Fix a mode mismatch.
      
      2021-05-18  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/
      	* config/i386/sse.md (<any_extend:insn>v4qiv4di2):
      	Fix a mode mismatch with operand 1.
      8b9484c5
    • Uros Bizjak's avatar
      i386: Fix split_double_mode with paradoxical subreg [PR100626] · d39fbed7
      Uros Bizjak authored
      split_double_mode calls simplify_gen_subreg, which fails for the
      high half of the paradoxical subreg.  Return temporary register
      instead of NULL RTX in this case.
      
      2021-05-18  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/
      	PR target/100626
      	* config/i386/i386-expand.c (split_double_mode): Return
      	temporary register when simplify_gen_subreg fails with
      	the high half od the paradoxical subreg.
      d39fbed7
Loading