diff mbox

[gomp4,committed] Add goacc/kernels-acc-on-device.c

Message ID 561BACFD.6030001@mentor.com
State New
Headers show

Commit Message

Tom de Vries Oct. 12, 2015, 12:52 p.m. UTC
On 12/10/15 12:49, Thomas Schwinge wrote:
> Hi Tom!
>
> On Sat, 10 Oct 2015 12:49:01 +0200, Tom de Vries<Tom_deVries@mentor.com>  wrote:
>> >--- /dev/null
>> >+++ b/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c
>> >@@ -0,0 +1,39 @@
>> >+/* { dg-additional-options "-O2" } */
>> >+
>> >+#include <openacc.h>

Hi Thomas,

> That doesn't work (at least in build-tree testing), as gcc/testsuite/ is
> not set up to look for header files in [target]/libgomp/:
>
>      [...]/source-gcc/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c:3:21: fatal error: openacc.h: No such file or directory
>      compilation terminated.
>      compiler exited with status 1
>

Ah, I see. I was doing 'make' followed by 'make install', and then 
build-tree testing. The build-tree testing seems to pick up the header 
file from the install directory. So for me test passed.

>> >+
>> >+#define N 32
>> >+
>> >+void
>> >+foo (float *a, float *b)
>> >+{
>> >+  float exp;
>> >+  int i;
>> >+  int n;
>> >+
>> >+#pragma acc kernels copyin(a[0:N]) copyout(b[0:N])
>> >+  {
>> >+    int ii;
>> >+
>> >+    for (ii = 0; ii < N; ii++)
>> >+      {
>> >+	if (acc_on_device (acc_device_host))
> Your two options are: if that's applicable/sufficient for what you intend
> to test here, use __builtin_acc_on_device with a hard-coded acc_device_*,
> or duplicate part of <openacc.h> as done for example in
> gcc/testsuite/c-c++-common/goacc/acc_on_device-2.c.
>

Went with second option, committed as attached.

Thanks,
- Tom
diff mbox

Patch

Remove openacc.h include from goacc/kernels-acc-on-device.c

2015-10-12  Tom de Vries  <tom@codesourcery.com>

	* c-c++-common/goacc/kernels-acc-on-device.c: Remove openacc.h include.
	(enum acc_device_t, acc_on_device): Declare.
	(foo): Remove unused vars.  Use acc_device_X.
---
 .../c-c++-common/goacc/kernels-acc-on-device.c     | 27 ++++++++++++++++------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c b/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c
index e9e93c7..784c66a 100644
--- a/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c
+++ b/gcc/testsuite/c-c++-common/goacc/kernels-acc-on-device.c
@@ -1,23 +1,36 @@ 
 /* { dg-additional-options "-O2" } */
 
-#include <openacc.h>
+#if __cplusplus
+extern "C" {
+#endif
+
+#if __cplusplus >= 201103
+# define __GOACC_NOTHROW noexcept
+#elif __cplusplus
+# define __GOACC_NOTHROW throw ()
+#else /* Not C++ */
+# define __GOACC_NOTHROW __attribute__ ((__nothrow__))
+#endif
+
+typedef enum acc_device_t { acc_device_X = 123 } acc_device_t;
+int acc_on_device (int) __GOACC_NOTHROW;
+
+#if __cplusplus
+}
+#endif
 
 #define N 32
 
 void
 foo (float *a, float *b)
 {
-  float exp;
-  int i;
-  int n;
-
 #pragma acc kernels copyin(a[0:N]) copyout(b[0:N])
   {
     int ii;
 
     for (ii = 0; ii < N; ii++)
       {
-	if (acc_on_device (acc_device_host))
+	if (acc_on_device (acc_device_X))
 	  b[ii] = a[ii] + 1;
 	else
 	  b[ii] = a[ii];
@@ -30,7 +43,7 @@  foo (float *a, float *b)
 
     for (ii = 0; ii < N; ii++)
       {
-	if (acc_on_device (acc_device_host))
+	if (acc_on_device (acc_device_X))
 	  b[ii] = a[ii] + 2;
 	else
 	  b[ii] = a[ii];
-- 
1.9.1