1. 08 Jun, 2020 3 commits
    • ipa-sra: Do not remove statements necessary because of non-call EH (PR 95113) · 127bf422
      PR 95113 revealed that when reasoning about which parameters are dead,
      IPA-SRA does not perform the same check related to non-call exceptions
      as tree DCE.  It most certainly should and so this patch moves the
      condition used in tree-ssa-dce.c into a separate predicate (in
      tree-eh.c) and uses it from both places.
      
      gcc/ChangeLog:
      
      2020-05-27  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/95113
      	* tree-ssa-dce.c (mark_stmt_if_obviously_necessary): Move non-call
      	exceptions check to...
      	* tree-eh.c (stmt_unremovable_because_of_non_call_eh_p): ...this
      	new function.
      	* tree-eh.h (stmt_unremovable_because_of_non_call_eh_p): Declare it.
      	* ipa-sra.c (isra_track_scalar_value_uses): Use it.  New parameter
      	fun.
      
      gcc/testsuite/ChangeLog:
      
      2020-05-27  Martin Jambor  <mjambor@suse.cz>
      
      	PR ipa/95113
      	* gcc.dg/ipa/pr95113.c: New test.
      
      (cherry picked from commit 1980ffec48c6fa41396bea66366f2e591798e1e1)
      Martin Jambor committed
    • Fortran : ICE in maybe_canonicalize_comparison_1 PR92993 · e4f719b4
      This issue has been fixed by PR94090.  Add test case to ensure that
      this does not re-occur.
      
      2020-06-08  Mark Eggleston  <markeggleston@gcc.gnu.org>
      
      gcc/testsuite/
      
      	PR fortran/92993
      	* gfortran.dg/pr92993.f90: New test.
      
      (cherry picked from commit 5dc3986103d8908c802e940dea8f2def3a6989c2)
      Mark Eggleston committed
    • Daily bump. · ad48414d
      GCC Administrator committed
  2. 07 Jun, 2020 2 commits
    • coroutines: Wrap co_await in a target expr where needed [PR95050] · ac9b0530
      Since the co_await expression is mostly opaque to the existing
      machinery, we were hiding the details of the await_resume return
      value.  If that needs to be wrapped in a target expression, then
      emulate this with the whole co_await.  Similarly, if the await
      expression we build in response to co_await p.yield_value (e)
      is wrapped in a target expression, then we need to transfer that
      wrapper to the resultant CO_YIELD_EXPR (which is, itself, just
      a proxy for the underlying co_await).
      
      gcc/cp/ChangeLog:
      
      	PR c++/95050
      	* coroutines.cc (build_co_await): Wrap the co_await expression
      	in a TARGET_EXPR, where needed.
      	(finish_co_yield_expr): Likewise.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/95050
      	* g++.dg/coroutines/pr95050.C: New test.
      
      (cherry picked from commit 324276ff9b1aa5128e5cb9f5d43182d1ebab0752)
      Iain Sandoe committed
    • Daily bump. · 5025a854
      GCC Administrator committed
  3. 06 Jun, 2020 2 commits
    • coroutines: Improve error recovery [PR94817, PR94829, PR95087]. · 03da8723
      When we have completely missing key information (e.g. the
      coroutine_traits) or a partially transformed function body, we
      need to try and balance returning useful information about
      failures with the possibility that some part of the diagnostics
      machinery or following code will not be able to handle the
      state.
      
      The PRs (and revised testcase) point to cases where that processing
      has failed.
      
      This revises the process to avoid special handling for the
      ramp, and falls back on the same code used for regular function
      fails.
      
      There are test-cases (in addition to the ones for the PRs) that now
      cover all early exit points [where the transforms are considered
      to have failed in a manner that does not allow compilation to
      continue].
      
      Diagnosing bad uses of 'return' in coroutines is somewhat
      tricky, since the user can use the keyword before we know
      that the function is a coroutine (where such returns are not
      permitted).  At present, we are just doing a check for any
      use of 'return' and erroring on that.  However, we can't then
      pass the function body on, since it will contain unlowered
      coroutine trees.
      
      This avoids the issue by dropping the entire function body
      under that circumstance.
      
      	Backport c7100843831147a034fe37d231c54ac53ceace45 and a1bb808504643e6c3c0df0fdd68a941ed2a64c7f0
      
      gcc/cp/ChangeLog:
      
      	PR c++/94817
      	PR c++/94829
      	PR c++/95087
      	* coroutines.cc (morph_fn_to_coro): Set unformed outline
      	functions to error_mark_node.  For early error returns suppress
      	warnings about missing ramp return values.  Fix reinstatement
      	of the function body on pre-existing initial error.  If we see
      	an early fatal error, drop the erroneous function body.
      	* decl.c (finish_function): Use the normal error path for fails
      	in the ramp function, do not try to compile the helpers if the
      	transform fails.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/94817
      	PR c++/94829
      	PR c++/95087
      	* g++.dg/coroutines/coro-missing-final-suspend.C: New test.
      	* g++.dg/coroutines/coro-missing-initial-suspend.C: New test.
      	* g++.dg/coroutines/coro-missing-promise-yield.C: Check for
      	continuation of compilation.
      	* g++.dg/coroutines/coro-missing-promise.C: Likewise.
      	* g++.dg/coroutines/coro-missing-ret-value.C: Likewise
      	* g++.dg/coroutines/coro-missing-ret-void.C: Likewise
      	* g++.dg/coroutines/coro-missing-ueh-3.C: Likewise
      	* g++.dg/coroutines/pr94817.C: New test.
      	* g++.dg/coroutines/pr94829.C: New test.
      	* g++.dg/coroutines/co-return-syntax-08-bad-return.C:
      	Adjust the testcase to do the compile (rather than an
      	-fsyntax-only parse).
      	* g++.dg/coroutines/coro1-ret-int-yield-int.h
      	(MISSING_INITIAL_SUSPEND, MISSING_FINAL_SUSPEND): New.
      Iain Sandoe committed
    • Daily bump. · 7eb958eb
      GCC Administrator committed
  4. 05 Jun, 2020 14 commits
    • PR fortran/95373 - ICE in build_reference_type, at tree.c:7942 · 2927ec5b
      The use of KIND, LEN, RE, and IM inquiry references for applicable intrinsic
      types is valid only for suffienctly new Fortran standards.  Add appropriate
      checks in the appropriate place.
      
      2020-05-30  Harald Anlauf  <anlauf@gmx.de>
      
      gcc/fortran/
      	PR fortran/95373
      	* primary.c (is_inquiry_ref): Move validity check of inquiry
      	references against selected Fortran standard from here...
      	(gfc_match_varspec) ...to here.
      
      gcc/testsuite/
      	PR fortran/95373
      	* gfortran.dg/pr95373_1.f90: Adjust error messages.
      	* gfortran.dg/pr95373_2.f90: Adjust error message.
      
      (cherry picked from commit dd38c765a04d06c775134a135f68b18c3b7c9c78)
      Harald Anlauf committed
    • PR fortran/95373 - ICE in build_reference_type, at tree.c:7942 · d7760318
      The use of KIND, LEN, RE, and IM inquiry references for applicable intrinsic
      types is valid only for suffienctly new Fortran standards.  Add appropriate
      check.
      
      2020-05-28  Harald Anlauf  <anlauf@gmx.de>
      
      gcc/fortran/
      	PR fortran/95373
      	* primary.c (is_inquiry_ref): Check validity of inquiry
      	references against selected Fortran standard.
      
      gcc/testsuite/
      	PR fortran/95373
      	* gfortran.dg/pr95373_1.f90: New test.
      	* gfortran.dg/pr95373_2.f90: New test.
      
      (cherry picked from commit 5c715e6a2990cfb6c15acc1ee14219523534ec69)
      Harald Anlauf committed
    • PR fortran/95106 - truncation of long symbol names with EQUIVALENCE · 1e20cd1b
      	For long module names, the generated name-mangled symbol was
      	truncated, leading to bogus warnings about COMMON block
      	mismatches.  Provide sufficiently large temporaries.
      
      gcc/fortran/
      
      2020-05-24  Harald Anlauf  <anlauf@gmx.de>
      
      	PR fortran/95106
      	* trans-common.c (gfc_sym_mangled_common_id): Enlarge temporaries
      	for name-mangling.
      
      gcc/testsuite/
      
      2020-05-24  Harald Anlauf  <anlauf@gmx.de>
      
      	PR fortran/95106
      	* gfortran.dg/equiv_11.f90: New test.
      Harald Anlauf committed
    • PR fortran/95530, PR fortran/95537 - Buffer overflows with long symbols · 36442ee2
      The testcases for PR95090 and PR95106 trigger buffer overflows with long
      symbols that were found with an instrumented compiler.  Enlarge the
      affected buffers, and add checks that the buffers will suffice.
      
      2020-06-05  Harald Anlauf  <anlauf@gmx.de>
      
      gcc/fortran/
      	PR fortran/95530
      	PR fortran/95537
      	* decl.c (gfc_match_decl_type_spec): Enlarge buffer, and enhance
      	string copy to detect buffer overflow.
      	* gfortran.h (gfc_common_head): Enlarge buffer.
      	* trans-common.c (finish_equivalences): Enhance string copy to
      	detect buffer overflow.
      
      (cherry picked from commit bcd96c9cce962ca5b2c6f8459597fb759f945ccf)
      Harald Anlauf committed
    • PR fortran/95090 - ICE: identifier overflow · b3c17dfe
      Implement buffer overrun check for temporary that holds mangled names.
      
      2020-05-30  Harald Anlauf  <anlauf@gmx.de>
      
      gcc/fortran/
      	PR fortran/95090
      	* class.c (get_unique_type_string): Use buffer overrun check.
      
      (cherry picked from commit bf5fbbbd8c9a3385c1083cc80683bdb0195b1ffc)
      Harald Anlauf committed
    • PR fortran/95090 - ICE: identifier overflow · 78c4b06a
      The initial fix for this PR uncovered several latent issues with further
      too small string buffers which showed up only when testing on i686.
      Provide sufficiently large temporaries.
      
      2020-05-29  Harald Anlauf  <anlauf@gmx.de>
      
      gcc/fortran/
      	PR fortran/95090
      	* class.c (get_unique_type_string): Enlarge temporary for
      	name-mangling.  Use strncpy to prevent buffer overrun.
      	(get_unique_hashed_string): Enlarge temporary.
      	(gfc_hash_value): Enlarge temporary for name-mangling.
      
      (cherry picked from commit 7deca8c0b3765787627b11387b56b97b01a8bf33)
      Harald Anlauf committed
    • PR fortran/95090 - ICE: identifier overflow · 2ee8913b
      For long module name, derive type and component name, the generated
      name-mangled symbol did not fit into a buffer when coarrays were
      enabled.  Provide sufficiently large temporary.
      
      2020-05-27  Harald Anlauf  <anlauf@gmx.de>
      
      gcc/fortran/
      	PR fortran/95090
      	* iresolve.c (gfc_get_string): Enlarge temporary for
      	name-mangling.
      
      gcc/testsuite/
      	PR fortran/95090
      	* gfortran.dg/pr95090.f90: New test.
      
      (cherry picked from commit c949ec9c4e88d2ff6dbd5b179abddf3703129577)
      Harald Anlauf committed
    • PR fortran/95500 - Segfault compiling extra interface on intrinsic · 4b3ea558
      Converting an expression so that it can be passed by reference could
      result in a NULL pointer dereference.
      
      2020-06-04  Steven G. Kargl  <kargl@gcc.gnu.org>
      	    Harald Anlauf  <anlauf@gmx.de>
      
      gcc/fortran/
      	PR fortran/95500
      	* trans-expr.c (gfc_conv_expr_reference): Do not dereference NULL
      	pointer.
      
      gcc/testsuite/
      	PR fortran/95500
      	* gfortran.dg/pr95500.f90: New test.
      
      (cherry picked from commit 8c727bdf4acf28c8315b119a1c8f6d6af745c2af)
      Harald Anlauf committed
    • [OpenACC 'exit data'] Strip 'GOMP_MAP_STRUCT' mappings · 27e98547
      These are not itself necessary for OpenACC 'exit data' directives, and are
      skipped over (now) in libgomp.  We might as well not emit them to start with,
      in line with the equivalent OpenMP directive.  We keep the no-op handling in
      libgomp for the reason of backward compatibility.
      
      	gcc/
      	* gimplify.c (gimplify_adjust_omp_clauses): Remove
      	'GOMP_MAP_STRUCT' mapping from OpenACC 'exit data' directives.
      	gcc/testsuite/
      	* c-c++-common/goacc/struct-enter-exit-data-1.c: New file.
      	libgomp/
      	* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>: Explain
      	special handling.
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      (cherry picked from commit 1afc4672561a41dfbf4e3f2c1f35f7a5b7a20339)
      Thomas Schwinge committed
    • [OpenACC 'exit data'] Simplify 'GOMP_MAP_STRUCT' handling · 96d8d068
      	libgomp/
      	* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
      	Simplify.
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      (cherry picked from commit 1809628fcff6f512206efd0ae03a3faccc4096f2)
      Thomas Schwinge committed
    • Add 'libgomp.oacc-c-c++-common/struct-copyout-{1,2}.c' · 52d73705
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/struct-copyout-1.c: New test.
      	* testsuite/libgomp.oacc-c-c++-common/struct-copyout-2.c: New test.
      
      Reviewed-by: Thomas Schwinge <thomas@codesourcery.com>
      (cherry picked from commit 9643f5bbe237764cbefc975e934d1281f47ee3c2)
      Julian Brown committed
    • x86: Update Intel processor detection · 26b07cf9
      Add cpu model numbers for Intel Airmont, Tremont, Comet Lake, Ice Lake
      and Tiger Lake processor families.
      
      	* config/i386/driver-i386.c (host_detect_local_cpu): Support
      	Intel Airmont, Tremont, Comet Lake, Ice Lake and Tiger Lake
      	processor families.
      H.J. Lu committed
    • Fix bitmask conflict between PTA_AVX512VP2INTERSECT and PTA_WAITPKG in gcc/config/i386/i386.h · 676250d6
      2020-06-05  Lili Cui  <lili.cui@intel.com>
      
      gcc/ChangeLog:
      	PR target/95525
      	* config/i386/i386.h (PTA_WAITPKG): Change bitmask value.
      Cui,Lili committed
    • Daily bump. · ae7aed03
      GCC Administrator committed
  5. 04 Jun, 2020 17 commits
    • c++: Fix complex constexpr virtual cases [PR93310]. · 6b45b400
      The code in constexpr for looking up the actual type of the object and then
      getting the virtual function from there broke for both of these tests: for
      16, it assumed incorrectly that the DECL_VINDEX would apply to the most
      derived type's vtable; for 17, it failed to consider that during
      construction the base subobject is treated as being of the base type.
      
      Fixed by just doing constant evaluation of the expression that looks up the
      function in the vtable.  This means that a virtual call will involve loading
      the vptr, so we will reject some calls through non-constexpr variables that
      we previously accepted, but this seems appropriate to me.  None of our
      testcases were affected.
      
      gcc/cp/ChangeLog:
      
      	PR c++/93310
      	* constexpr.c (cxx_eval_constant_expression) [OBJ_TYPE_REF]:
      	Evaluate OBJ_TYPE_REF_EXPR.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/93310
      	* g++.dg/cpp2a/constexpr-virtual16.C: New test.
      	* g++.dg/cpp2a/constexpr-virtual17.C: New test.
      	* g++.dg/cpp2a/constexpr-new12.C: Adjust diagnostic.
      Jason Merrill committed
    • c++: Fix FE devirt with diamond inheritance [PR95158] · e244b0ac
      This started breaking in GCC 8 because of the fix for PR15272; after that
      change, we (correctly) remember the lookup from template parsing time that
      found Base::foo through the non-dependent MiddleB base, and so we overlook
      the overrider in MiddleA.  But given that, the devirtualization condition
      from the fix for PR59031 is insufficient; we know that d has to be a
      Derived, and we found Base::foo in Base, but forcing a non-virtual call
      gets the wrong function.
      
      Fixed by removing the PR59031 code that the PR67184 patch moved to
      build_over_call, and instead looking up the overrider in BINFO_VIRTUALS.
      
      gcc/cp/ChangeLog:
      
      	PR c++/95158
      	* class.c (lookup_vfn_in_binfo): New.
      	* call.c (build_over_call): Use it.
      	* cp-tree.h (resolves_to_fixed_type_p): Add default argument.
      	(lookup_vfn_in_binfo): Declare.
      
      gcc/testsuite/ChangeLog:
      
      	PR c++/95158
      	* g++.dg/template/virtual5.C: New test.
      Jason Merrill committed
    • [OpenACC 'exit data'] Evaluate 'copyfrom' individually for 'GOMP_MAP_STRUCT' entries · 4664ca1b
      Currently, we don't at all evaluate 'copyfrom' for 'GOMP_MAP_STRUCT' entries.
      Fix this by copying/adapting the corresponding non-'GOMP_MAP_STRUCT' code.
      
      	libgomp/
      	* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
      	Evaluate 'copyfrom' individually for each entry.
      	* testsuite/libgomp.oacc-c-c++-common/struct-1.c: Update.
      
      (cherry picked from commit 2c838a3e4ea06c69c856d074ae5b0400e08ae3c2)
      Thomas Schwinge committed
    • [OpenACC 'exit data'] Evaluate 'finalize' individually for 'GOMP_MAP_STRUCT' entries · 5a1b479a
      Currently, we don't at all evaluate 'finalize' for 'GOMP_MAP_STRUCT' entries.
      Fix this by copying/adapting the corresponding non-'GOMP_MAP_STRUCT' code.
      
      	libgomp/
      	* oacc-mem.c (goacc_exit_data_internal) <GOMP_MAP_STRUCT>:
      	Evaluate 'finalize' individually for each entry.
      	* testsuite/libgomp.oacc-c-c++-common/struct-1.c: New file.
      	* testsuite/libgomp.oacc-c-c++-common/struct-refcount-1.c: Remove
      	file.
      
      (cherry picked from commit a02f1adbfe619ab19cf142438e0a02950d3594da)
      Thomas Schwinge committed
    • Fix 'sizeof' usage in 'libgomp.oacc-c-c++-common/deep-copy-{7,8}.c' · 62eeb367
      	libgomp/
      	* testsuite/libgomp.oacc-c-c++-common/deep-copy-7.c: Fix 'sizeof'
      	usage.
      	* testsuite/libgomp.oacc-c-c++-common/deep-copy-8.c: Likewise.
      
      (cherry picked from commit db7179ec74dda8c92db18399e5041a96ece8d56d)
      Thomas Schwinge committed
    • [OpenACC] Repair/restore 'is_tgt_unmapped' checking · 125621f5
      	libgomp/
      	* oacc-mem.c (goacc_exit_datum): Repair 'is_tgt_unmapped'
      	checking.
      	(acc_unmap_data, goacc_exit_data_internal): Restore
      	'is_tgt_unmapped' checking.
      	* testsuite/libgomp.oacc-c-c++-common/struct-refcount-1.c: New
      	file.
      	* testsuite/libgomp.oacc-fortran/deep-copy-6.f90: Adjust.
      	* testsuite/libgomp.oacc-fortran/mdc-refcount-1-1-1.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-4-1.f90: Likewise.
      
      Co-Authored-By: Julian Brown <julian@codesourcery.com>
      (cherry picked from commit 06ec61726d192659cd446e59a91e78745037f0fd)
      Thomas Schwinge committed
    • [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
  6. 03 Jun, 2020 2 commits