diff mbox

[gomp4] Fix libgomp.oacc-c-c++-common/lib-3.c

Message ID 5593CBFE.8070609@mentor.com
State New
Headers show

Commit Message

Tom de Vries July 1, 2015, 11:16 a.m. UTC
Hi,

testcase libgomp.oacc-c-c++-common/lib-3.c is supposed to fail.

It fails currently in two ways:
- no device found, if there is no nonhost device type supported, so
   just host and host_nonshm
- no device initialized, if there is a nonhost device type supported,
   f.i. nvidia

The reason for the different failure modes is the usage of 
acc_device_not_host.

Neither of the current failure modes is matches by the current dg-output:
...
/* { dg-output "device \[0-9\]+\\\(\[0-9\]+\\\) is initialized" } */
...
I don't understand what this dg-output is trying to achieve.

Attached patch makes sure that both current failure modes are tested and 
accepted.

OK for gomp-4_0-branch?

Thanks,
- Tom

Comments

Tom de Vries July 22, 2015, 7:08 a.m. UTC | #1
On 01/07/15 13:16, Tom de Vries wrote:
> Hi,
>
> testcase libgomp.oacc-c-c++-common/lib-3.c is supposed to fail.
>
> It fails currently in two ways:
> - no device found, if there is no nonhost device type supported, so
>    just host and host_nonshm
> - no device initialized, if there is a nonhost device type supported,
>    f.i. nvidia
>
> The reason for the different failure modes is the usage of
> acc_device_not_host.
>
> Neither of the current failure modes is matches by the current dg-output:
> ...
> /* { dg-output "device \[0-9\]+\\\(\[0-9\]+\\\) is initialized" } */
> ...
> I don't understand what this dg-output is trying to achieve.
>
> Attached patch makes sure that both current failure modes are tested and
> accepted.
>
> OK for gomp-4_0-branch?
>

Ping.

Thanks,
- Tom

> 0003-Fix-libgomp.oacc-c-c-common-lib-3.c.patch
>
>
> Fix libgomp.oacc-c-c++-common/lib-3.c
>
> 2015-07-01  Tom de Vries<tom@codesourcery.com>
>
> 	* testsuite/lib/libgomp.exp (offload_targets_nonhost): New var.
> 	(check_effective_target_offload_target_nonhost_supported): New proc.
> 	* testsuite/libgomp.oacc-c-c++-common/lib-3.c: Only run if
> 	offload_target_nonhost_supported.
> 	* testsuite/libgomp.oacc-c-c++-common/lib-3b.c: New test.  Copy of
> 	lib-3.c, but only run if !offload_target_nonhost_supported.
> ---
>   libgomp/testsuite/lib/libgomp.exp                    | 13 +++++++++++++
>   libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c  |  4 ++--
>   libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c | 16 ++++++++++++++++
>   3 files changed, 31 insertions(+), 2 deletions(-)
>   create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c
>
> diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
> index 6dba22b..951e043 100644
> --- a/libgomp/testsuite/lib/libgomp.exp
> +++ b/libgomp/testsuite/lib/libgomp.exp
> @@ -38,9 +38,11 @@ load_file libgomp-test-support.exp
>   # Populate offload_targets_s (offloading targets separated by a space), and
>   # offload_targets_s_openacc (the same, but with OpenACC names; OpenACC spells
>   # some of them a little differently).
> +set offload_targets_nonhost 0
>   set offload_targets_s [split $offload_targets ","]
>   set offload_targets_s_openacc {}
>   foreach offload_target_openacc $offload_targets_s {
> +    set nonhost 1
>       switch $offload_target_openacc {
>   	intelmic {
>   	    # TODO.  Skip; will all FAIL because of missing
> @@ -50,8 +52,14 @@ foreach offload_target_openacc $offload_targets_s {
>   	nvptx {
>   	    set offload_target_openacc "nvidia"
>   	}
> +	host_nonshm {
> +	    set nonhost 0
> +	}
>       }
>       lappend offload_targets_s_openacc "$offload_target_openacc"
> +    if { $nonhost == 1 } {
> +	set offload_targets_nonhost 1
> +    }
>   }
>   lappend offload_targets_s_openacc "host"
>
> @@ -369,6 +377,11 @@ proc check_effective_target_offload_device { } {
>       } ]
>   }
>
> +proc check_effective_target_offload_target_nonhost_supported { } {
> +    global offload_targets_nonhost
> +    return $offload_targets_nonhost;
> +}
> +
>   proc check_effective_target_openacc_nvidia_accel_supported { } {
>       global offload_targets_s_openacc
>       set res [lsearch $offload_targets_s_openacc "nvidia" ]
> diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c
> index bb76c82..2a8c437 100644
> --- a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c
> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c
> @@ -1,4 +1,4 @@
> -/* { dg-do run } */
> +/* { dg-do run { target { offload_target_nonhost_supported } } } */
>
>   #include <openacc.h>
>
> @@ -12,5 +12,5 @@ main (int argc, char **argv)
>     return 0;
>   }
>
> -/* { dg-output "device \[0-9\]+\\\(\[0-9\]+\\\) is initialized" } */
> +/* { dg-output "no device initialized" } */
>   /* { dg-shouldfail "" } */
> diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c
> new file mode 100644
> index 0000000..f21830c
> --- /dev/null
> +++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c
> @@ -0,0 +1,16 @@
> +/* { dg-do run { target { ! offload_target_nonhost_supported } } } */
> +
> +#include <openacc.h>
> +
> +int
> +main (int argc, char **argv)
> +{
> +  acc_init (acc_device_host);
> +
> +  acc_shutdown (acc_device_not_host);
> +
> +  return 0;
> +}
> +
> +/* { dg-output "no device found" } */
> +/* { dg-shouldfail "" } */
> -- 1.9.1
>
diff mbox

Patch

Fix libgomp.oacc-c-c++-common/lib-3.c

2015-07-01  Tom de Vries  <tom@codesourcery.com>

	* testsuite/lib/libgomp.exp (offload_targets_nonhost): New var.
	(check_effective_target_offload_target_nonhost_supported): New proc.
	* testsuite/libgomp.oacc-c-c++-common/lib-3.c: Only run if
	offload_target_nonhost_supported.
	* testsuite/libgomp.oacc-c-c++-common/lib-3b.c: New test.  Copy of
	lib-3.c, but only run if !offload_target_nonhost_supported.
---
 libgomp/testsuite/lib/libgomp.exp                    | 13 +++++++++++++
 libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c  |  4 ++--
 libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c | 16 ++++++++++++++++
 3 files changed, 31 insertions(+), 2 deletions(-)
 create mode 100644 libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c

diff --git a/libgomp/testsuite/lib/libgomp.exp b/libgomp/testsuite/lib/libgomp.exp
index 6dba22b..951e043 100644
--- a/libgomp/testsuite/lib/libgomp.exp
+++ b/libgomp/testsuite/lib/libgomp.exp
@@ -38,9 +38,11 @@  load_file libgomp-test-support.exp
 # Populate offload_targets_s (offloading targets separated by a space), and
 # offload_targets_s_openacc (the same, but with OpenACC names; OpenACC spells
 # some of them a little differently).
+set offload_targets_nonhost 0
 set offload_targets_s [split $offload_targets ","]
 set offload_targets_s_openacc {}
 foreach offload_target_openacc $offload_targets_s {
+    set nonhost 1
     switch $offload_target_openacc {
 	intelmic {
 	    # TODO.  Skip; will all FAIL because of missing
@@ -50,8 +52,14 @@  foreach offload_target_openacc $offload_targets_s {
 	nvptx {
 	    set offload_target_openacc "nvidia"
 	}
+	host_nonshm {
+	    set nonhost 0
+	}
     }
     lappend offload_targets_s_openacc "$offload_target_openacc"
+    if { $nonhost == 1 } {
+	set offload_targets_nonhost 1
+    }
 }
 lappend offload_targets_s_openacc "host"
 
@@ -369,6 +377,11 @@  proc check_effective_target_offload_device { } {
     } ]
 }
 
+proc check_effective_target_offload_target_nonhost_supported { } {
+    global offload_targets_nonhost
+    return $offload_targets_nonhost;
+}
+
 proc check_effective_target_openacc_nvidia_accel_supported { } {
     global offload_targets_s_openacc
     set res [lsearch $offload_targets_s_openacc "nvidia" ]
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c
index bb76c82..2a8c437 100644
--- a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3.c
@@ -1,4 +1,4 @@ 
-/* { dg-do run } */
+/* { dg-do run { target { offload_target_nonhost_supported } } } */
 
 #include <openacc.h>
 
@@ -12,5 +12,5 @@  main (int argc, char **argv)
   return 0;
 }
 
-/* { dg-output "device \[0-9\]+\\\(\[0-9\]+\\\) is initialized" } */
+/* { dg-output "no device initialized" } */
 /* { dg-shouldfail "" } */
diff --git a/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c
new file mode 100644
index 0000000..f21830c
--- /dev/null
+++ b/libgomp/testsuite/libgomp.oacc-c-c++-common/lib-3b.c
@@ -0,0 +1,16 @@ 
+/* { dg-do run { target { ! offload_target_nonhost_supported } } } */
+
+#include <openacc.h>
+
+int
+main (int argc, char **argv)
+{
+  acc_init (acc_device_host);
+
+  acc_shutdown (acc_device_not_host);
+
+  return 0;
+}
+
+/* { dg-output "no device found" } */
+/* { dg-shouldfail "" } */
-- 
1.9.1