1. 04 Jun, 2020 11 commits
    • [OpenACC] Don't open-code 'gomp_remove_var' in 'acc_unmap_data' · 1bca30ef
      	libgomp/
      	* oacc-mem.c (acc_unmap_data): Don't open-code 'gomp_remove_var'.
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      (cherry picked from commit 2112d3242f413979931e371423dcead9d19440e7)
      Thomas Schwinge committed
    • [OpenACC] Remove 'tgt' reference counting from 'acc_unmap_data' [PR92854] · 0c59837c
      	libgomp/
      	PR libgomp/92854
      	* oacc-mem.c (acc_unmap_data): Remove 'tgt' reference counting.
      
      (cherry picked from commit 4662f7fe7863b19fcc20ba58c22880f8d6661f3a)
      Thomas Schwinge committed
    • Extend 'libgomp.oacc-c-c++-common/pr92854-1.c' some more [PR92854] · 364f46de
      	libgomp/
      	PR libgomp/92854
      	* testsuite/libgomp.oacc-c-c++-common/pr92854-1.c: Extend some
      	more.
      
      (cherry picked from commit af8fd1a99d9a21f8088ebb11250cd06a3f275052)
      Thomas Schwinge committed
    • [OpenACC] Use 'tgt' returned from 'gomp_map_vars' · c44c9858
      	libgomp/
      	* oacc-mem.c (goacc_enter_datum): Use 'tgt' returned from
      	'gomp_map_vars'.
      	 (acc_map_data): Clean up accordingly.
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      (cherry picked from commit f233418ccf6a16eb3bf53018852c5f8926780143)
      Thomas Schwinge committed
    • [OpenACC] XFAIL behavior of over-eager 'finalize' clause · d7af812a
      	libgomp/
      	* testsuite/libgomp.oacc-fortran/deep-copy-6.f90: XFAIL behavior
      	of over-eager 'finalize' clause.
      	* testsuite/libgomp.oacc-fortran/deep-copy-6-no_finalize.F90: New
      	file.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-2.F90: Likewise.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-2-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-3-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-3-2.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-4-1.f90: Likewise.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-4-2.f90: Likewise.
      
      (cherry picked from commit 8d7794c0a2aa6696ab1a91ef209e8a9fe2df56ac)
      Thomas Schwinge committed
    • [OpenACC] Missing unlocking on error paths in attach/detach code, part II · 52022880
      	libgomp/
      	* oacc-mem.c (goacc_exit_data_internal): Unlock on error path.
      
      (cherry picked from commit 2e24d457d8c97e409549848715ff046cfa9efd3d)
      Thomas Schwinge committed
    • [OpenACC] Missing unlocking on error paths in attach/detach code · 16faaf52
      	libgomp/
      	* oacc-mem.c (acc_attach_async): Add missing gomp_mutex_unlock on
      	error path.
      	(goacc_detach_internal): Likewise.
      
      Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      (cherry picked from commit dc9541545d9e5705a97c41713c557f55522b54dc)
      Julian Brown committed
    • 'libgomp.oacc-fortran/{error_,}stop-{1,2,3}.f': initialize before the checkpoint · 96bfb6e1
      If, for example, GCC is configured such that 'libgomp-plugin-nvptx.so.1'
      dynamically links against 'libcuda.so.1', but testing is run on a system where
      there is no 'libcuda.so.1', this produces output such as:
      
          PASS: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable  -O0  (test for excess errors)
          PASS: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable  -O0  execution test
          FAIL: libgomp.oacc-fortran/error_stop-1.f -DACC_DEVICE_TYPE_host=1 -DACC_MEM_SHARED=1 -foffload=disable  -O0  output pattern test, is  CheCKpOInT
      
          libgomp: while loading libgomp-plugin-nvptx.so.1: libcuda.so.1: cannot open shared object file: No such file or directory
          ERROR STOP
      
          Error termination. Backtrace: [...]
          , should match CheCKpOInT(
          |
          |^M)+ERROR STOP (
          |
          |^M)+Error termination.*
      
      ..., where after 'CheCKpOInT' we got 'libgomp: while loading [...]' injected
      before the expected 'ERROR STOP'.
      
      	libgomp/
      	* testsuite/libgomp.oacc-fortran/error_stop-1.f: Initialize before
      	the checkpoint.
      	* testsuite/libgomp.oacc-fortran/error_stop-2.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/error_stop-3.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/stop-1.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/stop-2.f: Likewise.
      	* testsuite/libgomp.oacc-fortran/stop-3.f: Likewise.
      
      (cherry picked from commit 1e378edd8f038c52914bc6cac8f6dd5a5c4f8a98)
      Thomas Schwinge committed
    • c++: more constrained nested partial specialization · 6effd8a7
      When checking that a constrained partial specialization is more
      constrained than the primary template, we pass only the innermost level
      of generic template arguments to strictly_subsumes.  This leads to us
      doing a nonsensical substitution from normalize_concept_check if the
      full set of template arguments has multiple levels, and it ultimately
      causes strictly_subsumes to sometimes erroneously return false as in the
      testcase below.
      
      gcc/cp/ChangeLog:
      
      	* pt.c (process_partial_specialization): Pass the full set of
      	generic template arguments to strictly_subsumes.
      
      gcc/testsuite/ChangeLog:
      
      	* g++.dg/cpp2a/concepts-partial-spec8.C: New test.
      
      (cherry picked from commit c06280ac4c34b0aff8cfa2e74ae8c7afd759d52f)
      Patrick Palka committed
    • c++: constrained nested partial specialization [PR92103] · a3a71447
      When determining the most specialized partial specialization of a
      primary template that is nested inside a class template, we first
      tsubst the outer template arguments into the TEMPLATE_DECL of each
      partial specialization, and then check for satisfaction of each of the
      new TEMPLATE_DECL's constraints.
      
      But tsubst_template_decl does not currently guarantee that constraints
      from the original DECL_TEMPLATE_RESULT get reattached to the new
      DECL_TEMPLATE_RESULT.  In the testcase below, this leads to the
      constraints_satisfied_p check in most_specialized_partial_spec to
      trivially return true for each of the partial specializations.
      
      I'm not sure if such a guarantee would be desirable, but in this case we
      can just check constraints_satisfied_p on the original TEMPLATE_DECL
      instead of on the tsubsted TEMPLATE_DECL here, which is what this patch
      does (alongside some reorganizing).
      
      gcc/cp/ChangeLog:
      
      	PR c++/92103
      	* pt.c (most_specialized_partial_spec): Reorganize the loop over
      	DECL_TEMPLATE_SPECIALIZATIONS.  Check constraints_satisfied_p on
      	the original template declaration, not on the tsubsted one.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/92103
      	* g++.dg/cpp2a/concepts-partial-spec7.C: New test.
      
      (cherry picked from commit aee69073cdb8086d393f12474c6177e75467ceaa)
      Patrick Palka committed
    • Daily bump. · 5006eb93
      GCC Administrator committed
  2. 03 Jun, 2020 2 commits
  3. 02 Jun, 2020 6 commits
    • aarch64: Add initial support for -mcpu=zeus · e2ce47e3
      This patch adds support for the Arm Zeus CPU.
      Bootstrapped and tested on aarch64-none-linux-gnu.
      
      gcc/
      
      2020-06-02  Kyrylo Tkachov  <kyrylo.tkachov@arm.com>
      
      	* config/aarch64/aarch64-cores.def (zeus): Define.
      	* config/aarch64/aarch64-tune.md: Regenerate.
      	* doc/invoke.texi (AArch64 Options): Document zeus -mcpu option.
      Kyrylo Tkachov committed
    • c++: constrained lambda inside template [PR92633] · 40912c25
      When regenerating a constrained lambda during instantiation of an
      enclosing template, we are forgetting to substitute into the lambda's
      constraints.  Fix this by substituting through the constraints during
      tsubst_lambda_expr.
      
      gcc/cp/ChangeLog:
      
      	PR c++/92633
      	PR c++/92838
      	* pt.c (tsubst_function_decl): Don't do set_constraints when
      	regenerating a lambda.
      	(tsubst_lambda_expr): Substitute into the lambda's constraints
      	and do set_constraints here.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/92633
      	PR c++/92838
      	* g++.dg/cpp2a/concepts-lambda11.C: New test.
      	* g++.dg/cpp2a/concepts-lambda12.C: New test.
      
      (cherry picked from commit c2449995ca36ea955e3c6d4ee7f0d401b512c897)
      Patrick Palka committed
    • c++: premature requires-expression folding [PR95020] · 0971201a
      In the testcase below we're prematurely folding away the
      requires-expression to 'true' after substituting in the function's
      template arguments, but before substituting in the lambda's deduced
      template arguments.
      
      This patch removes the uses_template_parms check when deciding in
      tsubst_requires_expr whether to keep around a new requires-expression.
      Regardless of whether the template arguments are dependent, there still
      might be more template parameters to later substitute in (as in the
      below testcase) and even if not, tsubst_expr doesn't perform full
      semantic processing unless !processing_template_decl, so we should still
      wait until then to fold away the requires-expression.
      
      gcc/cp/ChangeLog:
      
      	PR c++/95020
      	* constraint.cc (tsubst_requires_expr): Produce a new
      	requires-expression when processing_template_decl, even if
      	template arguments are not dependent.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/95020
      	* g++.dg/cpp2a/concepts-lambda7.C: New test.
      
      (cherry picked from commit 7e52f8b1e03776575b92574252d9b6bbed9f1af4)
      Patrick Palka committed
    • Fix unrecognised -mcpu target 'armv7-a' on arm-wrs-vxworks7 · 89b625be
      In the removal of arm-wrs-vxworks, the default cpu was updated from arm8
      to armv7-a, but this is not recognized as a valid -mcpu target.  There
      is however generic-armv7-a, which was likely the intended cpu that
      should have been used instead.
      
      gcc/ChangeLog:
      
      	PR target/95420
      	* config.gcc (arm-wrs-vxworks7*): Set default cpu to generic-armv7-a.
      
      (cherry picked from commit 86b14bb1a93d8ef01678d132013a2006a4f00deb)
      Iain Buclaw committed
    • d: Fix segfault in build_frontend_type on alpha-*-* · e1ed5881
      The va_list type for Alpha includes a nameless dummy field for alignment
      purposes.  To transpose this into D, a field named "__pad%d" is inserted
      into the struct definition.
      
      It was also noticed that in the D front-end AST copy of the backend
      type, all offsets for fields generated by build_frontend_type were set
      to zero due to a wrong assumption that DECL_FIELD_OFFSET would have a
      non-zero value.  This has been fixed to use byte_position instead.
      
      gcc/d/ChangeLog:
      
      	* d-builtins.cc (build_frontend_type): Handle struct fields with NULL
      	DECL_NAME.  Use byte_position to get the real field offset.
      
      (cherry picked from commit 70f6320462d91e5add99ae5b50226356302a8c0b)
      Iain Buclaw committed
    • Daily bump. · cc2da346
      GCC Administrator committed
  4. 01 Jun, 2020 2 commits
    • Finalization depends on the expression, not on the component. · b703627d
      This patch fixes a 8/9/10/11 regression, where finalized types
      were not finalized (and deallocated), which led to memory
      leaks.
      
      gcc/fortran/ChangeLog:
      
      2020-05-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/94361
      	* class.c (finalize_component): Use expr->finalized instead of
      	comp->finalized.
      	* gfortran.h (gfc_component): Remove finalized member.
      	(gfc_expr): Add it here instead.
      
      gcc/testsuite/ChangeLog:
      
      2020-05-24  Thomas Koenig  <tkoenig@gcc.gnu.org>
      
      	PR fortran/94361
      	* gfortran.dg/finalize_28.f90: Adjusted free counts.
      	* gfortran.dg/finalize_33.f90: Likewise.
      	* gfortran.dg/finalize_34.f90: Likewise.
      	* gfortran.dg/finalize_35.f90: New test.
      
      (cherry picked from commit 811f902b764c5a13178cbd7588e96c16b3fab504)
      Thomas Koenig committed
    • Daily bump. · 5b546b19
      GCC Administrator committed
  5. 31 May, 2020 1 commit
  6. 30 May, 2020 6 commits
    • c++: satisfaction value of type typedef to bool [PR95386] · 6632f292
      In the testcase below, the satisfaction value of fn1<int>'s constraint
      is INTEGER_CST '1' of type BOOLEAN_TYPE value_type, which is a typedef
      to the standard boolean_type_node.  But satisfaction_value expects to
      see exactly boolean_true_node or integer_one_node, which this value is
      neither, causing us to trip over the assert therein.
      
      This patch relaxes satisfaction_value to accept any INTEGER_CST which
      satisfies integer_zerop or integer_onep.
      
      gcc/cp/ChangeLog:
      
      	PR c++/95386
      	* constraint.cc (satisfaction_value): Relax to accept any
      	INTEGER_CST that satisfies integer_zerop or integer_onep.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/95386
      	* g++.dg/concepts/pr95386.C: New test.
      Patrick Palka committed
    • c++: lambdas inside constraints [PR92652] · 03c344ad
      When parsing a constraint-expression, a requires-clause or a
      requires-expression, we temporarily increment processing_template_decl
      so that we always obtain template trees which we could later reduce via
      substitution even when not inside a template.
      
      But incrementing processing_template_decl when we're already inside a
      template has the unintended side effect of shifting up the template
      parameter levels of a lambda defined inside one of these constructs,
      which leads to confusion later during substitution into the lambda.
      
      This patch fixes this issue by incrementing processing_template_decl
      during parsing of these constructs only if it is 0.
      
      gcc/cp/ChangeLog:
      
      	PR c++/92652
      	PR c++/93698
      	PR c++/94128
      	* parser.c (cp_parser_requires_clause_expression): Temporarily
      	increment processing_template_decl only if it is 0.
      	(cp_parser_constraint_expression): Likewise.
      	(cp_parser_requires_expression): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/92652
      	PR c++/93698
      	PR c++/94128
      	* g++.dg/cpp2a/concepts-lambda8.C: New test.
      	* g++.dg/cpp2a/concepts-lambda9.C: New test.
      	* g++.dg/cpp2a/concepts-lambda10.C: New test.
      
      (cherry picked from commit 020d86db8896f088435830595640e6fc21bc64ad)
      Patrick Palka committed
    • c++: constexpr ctor with RANGE_EXPR index [PR95241] · 798a9da4
      In the testcase below, the CONSTRUCTOR for 'field' contains a RANGE_EXPR
      index:
      
        {{aggr_init_expr<...>, [1...2]={.off=1}}}
      
      but get_or_insert_ctor_field isn't prepared to handle looking up a
      RANGE_EXPR index.
      
      This patch adds limited support to get_or_insert_ctor_field for looking
      up a RANGE_EXPR index.  The limited scope of this patch should make it
      more suitable for backporting, and more extensive support would be
      needed only to handle self-modifying CONSTRUCTORs that contain a
      RANGE_EXPR index, but I haven't yet been able to come up with a testcase
      that actually creates such a CONSTRUCTOR.
      
      gcc/cp/ChangeLog:
      
      	PR c++/95241
      	* constexpr.c (get_or_insert_ctor_field): Add limited support
      	for RANGE_EXPR index lookups.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/95241
      	* g++.dg/cpp0x/constexpr-array25.C: New test.
      
      (cherry picked from commit e069285cdf457cc85070e522380c4e25b0d2ed25)
      Patrick Palka committed
    • c++: P0848R3 and member function templates [PR95181] · 9e81c820
      When comparing two special member function templates to see if one hides
      the other (as per P0848R3), we need to check satisfaction which we can't
      do on templates.  So this patch makes add_method skip the eligibility
      test on member function templates and just lets them coexist.
      
      gcc/cp/ChangeLog:
      
      	PR c++/95181
      	* class.c (add_method): Let special member function templates
      	coexist if they are not equivalently constrained, or in a class
      	template.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/95181
      	* g++.dg/concepts/pr95181.C: New test.
      	* g++.dg/concepts/pr95181-2.C: New test.
      
      Co-authored-by: Jason Merrill <jason@redhat.com>
      (cherry picked from commit 6b449b74c590f5a6f66c73aed894e5b5b36aa59d)
      Patrick Palka committed
    • c++: Template template parameter in constraint [PR95371] · c07c745b
      gcc/cp/ChangeLog:
      
      	PR c++/95371
      	* pt.c (process_template_parm): Set DECL_TEMPLATE_INFO
      	on the DECL_TEMPLATE_RESULT.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/95371
      	* g++.dg/cpp2a/concepts-ttp1.C: New test.
      
      (cherry picked from commit d91b3aea7a5bdfbdaec746af2d62894812e6fd86)
      Jason Merrill committed
    • Daily bump. · af254bf1
      GCC Administrator committed
  7. 29 May, 2020 7 commits
    • libgfortran: Export forgotten _gfortran_{,m,s}findloc{0,1}_c10 [PR95390] · f123dbb2
      I have noticed we don't export these 6 symbols and thus the testcase
      below fails to link.
      
      2020-05-29  Jakub Jelinek  <jakub@redhat.com>
      
      	PR libfortran/95390
      	* gfortran.dg/findloc_8.f90: New test.
      
      	* Makefile.am (i_findloc0_c): Add findloc0_i10.c.
      	(i_findloc1_c): Add findloc1_i10.c.
      	* gfortran.map (GFORTRAN_10.2): New symbol version, export
      	_gfortran_{,m,s}findloc{0,1}_c10 symbols.
      	* Makefile.in: Regenerated.
      	* generated/findloc0_c10.c: Generated.
      	* generated/findloc1_c10.c: Generated.
      
      (cherry picked from commit 316fe6b40165c26b30375f8ad85384379133f89b)
      Jakub Jelinek committed
    • c++: Fix tmplattr10.C · 2991e83b
      This test uses C++11 features so should only run in c++11.
      
      	* g++.dg/ext/tmplattr10.C: Only run in c++11.
      Marek Polacek committed
    • aarch64: PR target/94591: Don't generate invalid REV64 insns · 49824d35
      This fixes PR94591. The problem was the function aarch64_evpc_rev_local()
      matching vector permutations that were not reversals. In particular, prior to
      this patch, this function matched the identity permutation which led to
      generating bogus REV64 insns which were rejected by the assembler.
      
      gcc/
      	PR target/94591
      	* config/aarch64/aarch64.c (aarch64_evpc_rev_local): Don't match
      	identity permutation.
      
      gcc/testsuite/
      	PR target/94591
      	* gcc.c-torture/execute/pr94591.c: New test.
      
      (cherry picked from commit 98452668d362bb9e6358f7eb5cff69f4f5ab1d45)
      Alex Coplan committed
    • amdgcn: fix vcc clobber in vector load/store · 49a35d1f
      This switches the code that expands scalar addresses to vectors of addresses
      from using VCC to using CC_SAVE_REG, for the lo-part to hi-part carry values.
      These were fine in code expanded in earlier passes, but addresses expanded
      late, such as for stack spills or reloads, could clobber live VCC values,
      causing execution failures.
      
      This is the first target-specific testcase for GCN, so the new .exp file is
      included.
      
      Backport from master:
      
      	gcc/
      	* config/gcn/gcn-valu.md (add<mode>3_zext_dup): Change to a
      	define_expand, and rename the original to ...
      	(add<mode>3_vcc_zext_dup): ... this, and add a custom VCC operand.
      	(add<mode>3_zext_dup_exec): Likewise, with ...
      	(add<mode>3_vcc_zext_dup_exec): ... this.
      	(add<mode>3_zext_dup2): Likewise, with ...
      	(add<mode>3_zext_dup_exec): ... this.
      	(add<mode>3_zext_dup2_exec): Likewise, with ...
      	(add<mode>3_zext_dup2): ... this.
      	* config/gcn/gcn.c (gcn_expand_scalar_to_vector_address): Switch
      	addv64di3_zext* calls to use addv64di3_vcc_zext*.
      
      	gcc/testsuite/
      	* gcc.target/gcn/gcn.exp: New file.
      	* gcc.target/gcn/vcc-clobber.c: New file.
      Andrew Stubbs committed
    • gcov-tool: Flexible endian adjustment for merging coverage data · 0579f339
      gcc/ChangeLog:
      2020-05-27  Dong JianQiang  <dongjianqiang2@huawei.com>
      
      	PR gcov-profile/95332
      	* gcov-io.c (gcov_var::endian): Move field.
      	(from_file): Add IN_GCOV_TOOL check.
      	* gcov-io.h (gcov_magic): Ditto.
      
      libgcc/ChangeLog:
      2020-05-27  Dong JianQiang  <dongjianqiang2@huawei.com>
      
      	PR gcov-profile/95332
      	* libgcov-util.c (read_gcda_file): Call gcov_magic.
      	* libgcov.h (gcov_magic): Disable GCC poison.
      
      (cherry picked from commit 17d1594bfe08f3c768e024b180816cbe37ac08ac)
      Martin Liska committed
    • Fix various limitations of git-backport.py. · 81211dbf
      I've just tested the script and I'm going to install the patch
      to all active branches.
      
      contrib/ChangeLog:
      
      	* git-backport.py: The script did 'git co HEAD~' when
      	there was no modified ChangeLog file in a successful
      	git cherry pick.
      	Run cherry-pick --continue without editor.
      
      (cherry picked from commit 24663f1f6d709daf8913484914ed01af9f7a480a)
      Martin Liska committed
    • Daily bump. · 77836300
      GCC Administrator committed
  8. 28 May, 2020 5 commits
    • PR fortran/95104 - Segfault on a legal WAIT statement · e1396ee7
      The initial commit for this PR uncovered a latent issue with unit locking
      in the Fortran run-time library.  Add check for valid unit.
      
      2020-05-28  Harald Anlauf  <anlauf@gmx.de>
      
      libgfortran/
      	PR libfortran/95104
      	* io/unit.c (unlock_unit): Guard by check for NULL pointer.
      
      (cherry picked from commit 6ce3d791dfcba469e709935aba5743640f7d4959)
      Harald Anlauf committed
    • aarch64: Fix segfault in aarch64_expand_epilogue [PR95361] · c082cb8a
      The stack frame for the function in the testcase consisted of two
      SVE save slots.  Both saves had been shrink-wrapped, but for different
      blocks, meaning that the stack allocation and deallocation were
      separate from the saves themselves.  Before emitting the deallocation,
      we tried to attach a REG_CFA_DEF_CFA note to the preceding instruction,
      to redefine the CFA in terms of the stack pointer.  But in this case
      there was no preceding instruction.
      
      This in practice only happens for SVE because:
      
      (a) We don't try to shrink-wrap wb_candidate* registers even when
          we've decided to treat them as normal saves and restores.
          I have a fix for that.
      
      (b) Even with (a) fixed, we're (almost?) guaranteed to emit
          a stack tie for frames that are 64k or larger, so we end
          up hanging the REG_CFA_DEF_CFA note on that instead.
      
      We should only need to redefine the CFA if it was previously
      defined in terms of the frame pointer.  In other cases the CFA
      should already be defined in terms of the stack pointer,
      so redefining it is unnecessary but usually harmless.
      
      2020-05-28  Richard Sandiford  <richard.sandiford@arm.com>
      
      gcc/
      	PR testsuite/95361
      	* config/aarch64/aarch64.c (aarch64_expand_epilogue): Only
      	redefine the CFA if we have CFI operations.
      
      gcc/testsuite/
      	PR testsuite/95361
      	* gcc.target/aarch64/sve/pr95361.c: New test.
      Richard Sandiford committed
    • Fortran : "type is( real(kind(1.)) )" spurious syntax error PR94397 · f2fe2ad8
      Based on a patch in the comments of the PR. That patch fixed this
      problem but caused the test cases for PR93484 to fail. It has been
      changed to reduce initialisation expressions if the expression is
      not EXPR_VARIABLE and not EXPR_CONSTANT.
      
      2020-05-28  Steven G. Kargl  <kargl@gcc.gnu.org>
      	    Mark Eggleston  <markeggleston@gcc.gnu.org>
      
      gcc/fortran/
      
      	PR fortran/94397
      	* match.c (gfc_match_type_spec): New variable ok initialised
      	to true. Set ok with the return value of gfc_reduce_init_expr
      	called only if the expression is not EXPR_CONSTANT and is not
      	EXPR_VARIABLE. Add !ok to the check for type not being integer
      	or the rank being greater than zero.
      
      2020-05-28  Mark Eggleston  <markeggleston@gcc.gnu.org>
      
      gcc/testsuite/
      
      	PR fortran/94397
      	* gfortran.dg/pr94397.F90: New test.
      
      (cherry picked from commit 3ea6977d0f1813d982743a09660eec1760e981ec)
      Mark Eggleston committed
    • i386: Fix V2SF horizontal addsub insn · 04b13483
      PFPNACC insn is incorrectly modelled to perform addition and subtraction
      of two operands, but in reality it performs horizontal addition and
      subtraction:
      
      Instruction: PFPNACC dest,src
      
      Description:
      dest[31:0] <- dest[31:0] - dest[63:32];
      dest[63:32] <- src[31:0] + src[63:32];
      
      2020-05-28  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/ChangeLog:
      	* config/i386/mmx.md (mmx_haddsubv2sf3): Correct
      	RTL template to model horizontal subtraction and addition.
      Uros Bizjak committed
    • i386: Remove %q modifier from two pmov insn templates [PR95355] · 31d827e9
      2020-05-28  Uroš Bizjak  <ubizjak@gmail.com>
      
      gcc/ChangeLog:
      	PR target/95355
      	* config/i386/sse.md
      	(<mask_codefor>avx512f_<code>v16qiv16si2<mask_name>):
      	Remove %q operand modifier from insn template.
      	(avx512f_<code>v8hiv8di2<mask_name>): Ditto.
      
      gcc/testsuite/ChangeLog:
      	PR target/95355
      	* gcc.target/i386/pr95355.c: New test.
      Uros Bizjak committed