aboutsummaryrefslogtreecommitdiff
path: root/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c
diff options
context:
space:
mode:
Diffstat (limited to 'libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c')
-rw-r--r--libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c27
1 files changed, 23 insertions, 4 deletions
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 cf925a7b002..141c83b53dd 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-85.c
@@ -7,6 +7,14 @@
#include <stdio.h>
#include <cuda.h>
+#if !defined __cplusplus
+# undef static_assert
+# define static_assert _Static_assert
+#endif
+
+static_assert (acc_async_sync == -2, "acc_async_sync?");
+static_assert (acc_async_noval == -1, "acc_async_noval?");
+
int
main (int argc, char **argv)
{
@@ -20,9 +28,11 @@ main (int argc, char **argv)
(void) acc_get_device_num (acc_device_nvidia);
- streams = (CUstream *) malloc (N * sizeof (void *));
+ streams = (CUstream *) malloc ((2 + N) * sizeof (void *));
+ streams += 2;
+ /* "streams[i]" is valid for i in [acc_async_sync..N). */
- for (i = 0; i < N; i++)
+ for (i = acc_async_sync; i < N; i++)
{
streams[i] = (CUstream) acc_get_cuda_stream (i);
if (streams[i] != NULL)
@@ -35,8 +45,17 @@ main (int argc, char **argv)
abort ();
}
- if (!acc_set_cuda_stream (i, streams[i]))
- abort ();
+ int ret = acc_set_cuda_stream (i, streams[i]);
+ if (i == acc_async_sync)
+ {
+ if (ret == 1)
+ abort ();
+ }
+ else
+ {
+ if (ret != 1)
+ abort ();
+ }
}
s = NULL;