mirror of
https://gcc.gnu.org/git/gcc.git
synced 2024-11-28 06:14:10 +08:00
[PR92854] Add 'libgomp.oacc-c-c++-common/acc_map_data-device_already-*.c', 'libgomp.oacc-c-c++-common/acc_map_data-host_already-*.c'
... to document the status quo. libgomp/ PR libgomp/92854 * testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-1.c: New file. * testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-3.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-1.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-2.c: Likewise. * testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-3.c: Likewise. From-SVN: r279231
This commit is contained in:
parent
5e93943822
commit
3d1b5e710e
@ -1,3 +1,19 @@
|
||||
2019-12-11 Thomas Schwinge <thomas@codesourcery.com>
|
||||
|
||||
PR libgomp/92854
|
||||
* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-1.c:
|
||||
New file.
|
||||
* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-2.c:
|
||||
Likewise.
|
||||
* testsuite/libgomp.oacc-c-c++-common/acc_map_data-device_already-3.c:
|
||||
Likewise.
|
||||
* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-1.c:
|
||||
Likewise.
|
||||
* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-2.c:
|
||||
Likewise.
|
||||
* testsuite/libgomp.oacc-c-c++-common/acc_map_data-host_already-3.c:
|
||||
Likewise.
|
||||
|
||||
2019-12-11 Thomas Schwinge <thomas@codesourcery.com>
|
||||
Julian Brown <julian@codesourcery.com>
|
||||
|
||||
|
@ -0,0 +1,36 @@
|
||||
/* Verify that we refuse 'acc_map_data' when the "device address [...] is
|
||||
already mapped". */
|
||||
|
||||
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <openacc.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
const int N = 131;
|
||||
|
||||
char *h1 = (char *) malloc (N);
|
||||
assert (h1);
|
||||
void *d = acc_malloc (N);
|
||||
assert (d);
|
||||
acc_map_data (h1, d, N);
|
||||
|
||||
char *h2 = (char *) malloc (N);
|
||||
assert (h2);
|
||||
/* Try to arrange a setting such that a later 'acc_unmap_data' would find the
|
||||
device memory object still referenced elsewhere. This is not possible,
|
||||
given the semantics of 'acc_map_data'. */
|
||||
fprintf (stderr, "CheCKpOInT\n");
|
||||
acc_map_data (h2, d, N);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* { dg-output "CheCKpOInT(\n|\r\n|\r).*" } */
|
||||
/* { dg-output "device address \\\[\[0-9a-fA-FxX\]+, \\\+131\\\] is already mapped" } */
|
||||
/* { dg-shouldfail "" } */
|
@ -0,0 +1,35 @@
|
||||
/* Verify that we refuse 'acc_map_data' when the "device address [...] is
|
||||
already mapped". */
|
||||
|
||||
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <openacc.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
const int N = 132;
|
||||
|
||||
char *h1 = (char *) malloc (N);
|
||||
assert (h1);
|
||||
void *d = acc_create (h1, N);
|
||||
assert (d);
|
||||
|
||||
char *h2 = (char *) malloc (N);
|
||||
assert (h2);
|
||||
/* Try to arrange a setting such that a later 'acc_unmap_data' would find the
|
||||
device memory object still referenced elsewhere. This is not possible,
|
||||
given the semantics of 'acc_map_data'. */
|
||||
fprintf (stderr, "CheCKpOInT\n");
|
||||
acc_map_data (h2, d, N);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* { dg-output "CheCKpOInT(\n|\r\n|\r).*" } */
|
||||
/* { dg-output "device address \\\[\[0-9a-fA-FxX\]+, \\\+132\\\] is already mapped" } */
|
||||
/* { dg-shouldfail "" } */
|
@ -0,0 +1,31 @@
|
||||
/* Verify that we refuse 'acc_map_data' when the "device address [...] is
|
||||
already mapped". */
|
||||
|
||||
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <openacc.h>
|
||||
|
||||
double global_var;
|
||||
#pragma acc declare create (global_var)
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
double var;
|
||||
void *d = acc_deviceptr (&global_var);
|
||||
assert (d);
|
||||
/* Try to arrange a setting such that a later 'acc_unmap_data' would find the
|
||||
device memory object still referenced elsewhere. This is not possible,
|
||||
given the semantics of 'acc_map_data'. */
|
||||
fprintf (stderr, "CheCKpOInT\n");
|
||||
acc_map_data (&var, d, sizeof var);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* { dg-output "CheCKpOInT(\n|\r\n|\r).*" } */
|
||||
/* { dg-output "device address \\\[\[0-9a-fA-FxX\]+, \\\+8\\\] is already mapped" { xfail *-*-* } } TODO PR92888 */
|
||||
/* { dg-shouldfail "TODO PR92888" { this-really-should-fail } } */
|
@ -0,0 +1,33 @@
|
||||
/* Verify that we refuse 'acc_map_data' when the "host address [...] is already
|
||||
mapped". */
|
||||
|
||||
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <openacc.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
const int N = 101;
|
||||
|
||||
char *h = (char *) malloc (N);
|
||||
assert (h);
|
||||
void *d1 = acc_malloc (N);
|
||||
assert (d1);
|
||||
acc_map_data (h, d1, N);
|
||||
|
||||
void *d2 = acc_malloc (N);
|
||||
assert (d2);
|
||||
fprintf (stderr, "CheCKpOInT\n");
|
||||
acc_map_data (h, d2, N);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* { dg-output "CheCKpOInT(\n|\r\n|\r).*" } */
|
||||
/* { dg-output "host address \\\[\[0-9a-fA-FxX\]+, \\\+101\\\] is already mapped" } */
|
||||
/* { dg-shouldfail "" } */
|
@ -0,0 +1,32 @@
|
||||
/* Verify that we refuse 'acc_map_data' when the "host address [...] is already
|
||||
mapped". */
|
||||
|
||||
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <openacc.h>
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
const int N = 102;
|
||||
|
||||
char *h = (char *) malloc (N);
|
||||
assert (h);
|
||||
void *d1 = acc_create (h, N);
|
||||
assert (d1);
|
||||
|
||||
void *d2 = acc_malloc (N);
|
||||
assert (d2);
|
||||
fprintf (stderr, "CheCKpOInT\n");
|
||||
acc_map_data (h, d2, N);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* { dg-output "CheCKpOInT(\n|\r\n|\r).*" } */
|
||||
/* { dg-output "host address \\\[\[0-9a-fA-FxX\]+, \\\+102\\\] is already mapped" } */
|
||||
/* { dg-shouldfail "" } */
|
@ -0,0 +1,27 @@
|
||||
/* Verify that we refuse 'acc_map_data' when the "host address [...] is already
|
||||
mapped". */
|
||||
|
||||
/* { dg-skip-if "" { *-*-* } { "*" } { "-DACC_MEM_SHARED=0" } } */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdio.h>
|
||||
#include <openacc.h>
|
||||
|
||||
float global_var;
|
||||
#pragma acc declare create (global_var)
|
||||
|
||||
int
|
||||
main ()
|
||||
{
|
||||
void *d = acc_malloc (sizeof global_var);
|
||||
assert (d);
|
||||
fprintf (stderr, "CheCKpOInT\n");
|
||||
acc_map_data (&global_var, d, sizeof global_var);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
/* { dg-output "CheCKpOInT(\n|\r\n|\r).*" } */
|
||||
/* { dg-output "host address \\\[\[0-9a-fA-FxX\]+, \\\+4\\\] is already mapped" } */
|
||||
/* { dg-shouldfail "" } */
|
Loading…
Reference in New Issue
Block a user