https://gcc.gnu.org/g:9707e3cd58f569a555800f673c41f69bb95af073
commit 9707e3cd58f569a555800f673c41f69bb95af073 Author: Julian Brown <jul...@codesourcery.com> Date: Tue Feb 12 06:36:03 2019 -0800 Tweak error return value for acc_set_cuda_stream. The return value of acc_set_cuda_stream is unspecified in OpenACC 2.6. The testsuite changes might be unnecessary with the current async code. libgomp/ * oacc-cuda.c (acc_set_cuda_stream): Return 0 on error/invalid arguments. * testsuite/libgomp.oacc-c-c++-common/lib-84.c: Handle unnumbered async stream being an alias for a numbered async stream. * testsuite/libgomp.oacc-c-c++-common/lib-85.c: Likewise. Diff: --- libgomp/ChangeLog.omp | 8 ++++++++ libgomp/oacc-cuda.c | 5 ++++- libgomp/testsuite/libgomp.oacc-c-c++-common/lib-84.c | 6 ++++++ libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c | 6 ++++++ 4 files changed, 24 insertions(+), 1 deletion(-) diff --git a/libgomp/ChangeLog.omp b/libgomp/ChangeLog.omp index 1bfebcb3217..2769eb88dad 100644 --- a/libgomp/ChangeLog.omp +++ b/libgomp/ChangeLog.omp @@ -1,3 +1,11 @@ +2019-02-12 Julian Brown <jul...@codesourcery.com> + + * oacc-cuda.c (acc_set_cuda_stream): Return 0 on error/invalid + arguments. + * testsuite/libgomp.oacc-c-c++-common/lib-84.c: Handle unnumbered + async stream being an alias for a numbered async stream. + * testsuite/libgomp.oacc-c-c++-common/lib-85.c: Likewise. + 2020-04-19 Chung-Lin Tang <clt...@codesourcery.com> PR other/76739 diff --git a/libgomp/oacc-cuda.c b/libgomp/oacc-cuda.c index 83bbb37c0e9..74cb95b4c1c 100644 --- a/libgomp/oacc-cuda.c +++ b/libgomp/oacc-cuda.c @@ -115,6 +115,9 @@ acc_get_cuda_stream (int async) return ret; } +/* As of OpenACC 2.6, the return code of this function appears to be + unspecified. We choose to return 1 for success, or 0 for failure. */ + int acc_set_cuda_stream (int async, void *stream) { @@ -127,7 +130,7 @@ acc_set_cuda_stream (int async, void *stream) thr = goacc_thread (); - int ret = -1; + int ret = 0; if (thr && thr->dev && thr->dev->openacc.cuda.set_stream_func) { acc_prof_info prof_info; diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-84.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-84.c index c1ff76372fc..674e09a251d 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-84.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-84.c @@ -39,6 +39,12 @@ main (int argc, char **argv) if (streams[i] != NULL) abort (); + /* The no-value async may be an alias for a numbered async stream. + Skip over setting it below else the above NULL check will fail for + the aliased stream. */ + if (i == acc_async_noval) + continue; + r = cuStreamCreate (&streams[i], CU_STREAM_DEFAULT); if (r != CUDA_SUCCESS) { diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c index db250657ac5..4e5c7b1b905 100644 --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c @@ -39,6 +39,12 @@ main (int argc, char **argv) if (streams[i] != NULL) abort (); + /* The no-value async may be an alias for a numbered async stream. + Skip over setting it below else the above NULL check will fail for + the aliased stream. */ + if (i == acc_async_noval) + continue; + r = cuStreamCreate (&streams[i], CU_STREAM_DEFAULT); if (r != CUDA_SUCCESS) {