diff mbox series

[committed] Fix libgomp hsa plugin build on x32 (PR libgomp/90585)

Message ID 20190524090423.GP19695@tucnak
State New
Headers show
Series [committed] Fix libgomp hsa plugin build on x32 (PR libgomp/90585) | expand

Commit Message

Jakub Jelinek May 24, 2019, 9:04 a.m. UTC
Hi!

The hsa plugin assumes that %lu can be used for uint64_t, which is not
always the case.
Other spots in libgomp use inttypes.h only conditionally and have fallbacks
with casts to unsigned long and using %lu, this patch does the same.
Furthermore, libgomp configury prepares gstdint.h which includes stdint.h
if available, but fills the types in otherwise; libgomp.h already includes
that, this patch includes it in this plugin too (and in nvptx plugin as
well).  Plus some header cleanups, libgomp.h already includes config.h and
gstdint.h.

Tested on x86_64-linux with hsa plugin enabled, including forcefully
undefining HAVE_INTTYPES_H, committed to trunk.

2019-05-24  Jakub Jelinek  <jakub@redhat.com>

	PR libgomp/90585
	* plugin/plugin-hsa.c: Include gstdint.h.  Include inttypes.h only if
	HAVE_INTTYPES_H is defined.
	(print_uint64_t): New typedef.
	(PRIu64): Define if HAVE_INTTYPES_H is not defined.
	(print_kernel_dispatch, run_kernel): Use PRIu64 macro instead of
	"lu", cast uint64_t HSA_DEBUG and fprintf arguments to print_uint64_t.
	(release_kernel_dispatch): Likewise.  Cast shadow->debug to uintptr_t
	before casting to void *.
	* plugin/plugin-nvptx.c: Include gstdint.h instead of stdint.h.
	* oacc-mem.c: Don't include config.h nor stdint.h.
	* target.c: Don't include config.h.
	* oacc-cuda.c: Likewise.
	* oacc-host.c: Don't include stdint.h.

	Jakub
diff mbox series

Patch

--- libgomp/plugin/plugin-hsa.c.jj	2019-01-02 00:11:51.903434368 +0100
+++ libgomp/plugin/plugin-hsa.c	2019-05-24 10:42:11.436041458 +0200
@@ -28,11 +28,14 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include "config.h"
+#include "gstdint.h"
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <pthread.h>
+#ifdef HAVE_INTTYPES_H
 #include <inttypes.h>
+#endif
 #include <stdbool.h>
 #include <hsa.h>
 #include <plugin/hsa_ext_finalize.h>
@@ -41,6 +44,13 @@ 
 #include "gomp-constants.h"
 #include "secure_getenv.h"
 
+#ifdef HAVE_INTTYPES_H
+typedef uint64_t print_uint64_t;
+#else
+#define PRIu64 "lu"
+typedef unsigned long print_uint64_t; 
+#endif
+
 /* As an HSA runtime is dlopened, following structure defines function
    pointers utilized by the HSA plug-in.  */
 
@@ -1154,8 +1164,9 @@  create_single_kernel_dispatch (struct ke
 static void
 release_kernel_dispatch (struct GOMP_hsa_kernel_dispatch *shadow)
 {
-  HSA_DEBUG ("Released kernel dispatch: %p has value: %lu (%p)\n", shadow,
-	     shadow->debug, (void *) shadow->debug);
+  HSA_DEBUG ("Released kernel dispatch: %p has value: %" PRIu64 " (%p)\n",
+	     shadow, (print_uint64_t) shadow->debug,
+	     (void *) (uintptr_t) shadow->debug);
 
   hsa_fns.hsa_memory_free_fn (shadow->kernarg_address);
 
@@ -1276,9 +1287,9 @@  print_kernel_dispatch (struct GOMP_hsa_k
   indent_stream (stderr, indent);
   fprintf (stderr, "kernarg_address: %p\n", dispatch->kernarg_address);
   indent_stream (stderr, indent);
-  fprintf (stderr, "object: %lu\n", dispatch->object);
+  fprintf (stderr, "object: %" PRIu64 "\n", (print_uint64_t) dispatch->object);
   indent_stream (stderr, indent);
-  fprintf (stderr, "signal: %lu\n", dispatch->signal);
+  fprintf (stderr, "signal: %" PRIu64 "\n", (print_uint64_t) dispatch->signal);
   indent_stream (stderr, indent);
   fprintf (stderr, "private_segment_size: %u\n",
 	   dispatch->private_segment_size);
@@ -1286,8 +1297,8 @@  print_kernel_dispatch (struct GOMP_hsa_k
   fprintf (stderr, "group_segment_size: %u\n",
 	   dispatch->group_segment_size);
   indent_stream (stderr, indent);
-  fprintf (stderr, "children dispatches: %lu\n",
-	   dispatch->kernel_dispatch_count);
+  fprintf (stderr, "children dispatches: %" PRIu64 "\n",
+	   (print_uint64_t) dispatch->kernel_dispatch_count);
   indent_stream (stderr, indent);
   fprintf (stderr, "omp_num_threads: %u\n",
 	   dispatch->omp_num_threads);
@@ -1594,8 +1605,8 @@  run_kernel (struct kernel_info *kernel,
 	hsa_signal_t child_s;
 	child_s.handle = shadow->children_dispatches[i]->signal;
 
-	HSA_DEBUG ("Waiting for children completion signal: %lu\n",
-		   shadow->children_dispatches[i]->signal);
+	HSA_DEBUG ("Waiting for children completion signal: %" PRIu64 "\n",
+		   (print_uint64_t) shadow->children_dispatches[i]->signal);
 	hsa_fns.hsa_signal_load_acquire_fn (child_s);
       }
 
--- libgomp/plugin/plugin-nvptx.c.jj	2019-05-20 21:59:18.816737553 +0200
+++ libgomp/plugin/plugin-nvptx.c	2019-05-24 10:40:31.521668336 +0200
@@ -34,6 +34,7 @@ 
 #define _GNU_SOURCE
 #include "openacc.h"
 #include "config.h"
+#include "gstdint.h"
 #include "libgomp-plugin.h"
 #include "oacc-plugin.h"
 #include "gomp-constants.h"
@@ -42,7 +43,6 @@ 
 #include <pthread.h>
 #include <cuda.h>
 #include <stdbool.h>
-#include <stdint.h>
 #include <limits.h>
 #include <string.h>
 #include <stdio.h>
--- libgomp/oacc-mem.c.jj	2019-05-20 21:59:18.831737310 +0200
+++ libgomp/oacc-mem.c	2019-05-24 10:44:11.544085774 +0200
@@ -27,11 +27,9 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include "openacc.h"
-#include "config.h"
 #include "libgomp.h"
 #include "gomp-constants.h"
 #include "oacc-int.h"
-#include <stdint.h>
 #include <string.h>
 #include <assert.h>
 
--- libgomp/target.c.jj	2019-05-14 23:22:56.776497310 +0200
+++ libgomp/target.c	2019-05-24 10:44:30.863771195 +0200
@@ -25,7 +25,6 @@ 
 
 /* This file contains the support of offloading.  */
 
-#include "config.h"
 #include "libgomp.h"
 #include "oacc-plugin.h"
 #include "oacc-int.h"
--- libgomp/oacc-cuda.c.jj	2019-05-20 21:59:18.803737764 +0200
+++ libgomp/oacc-cuda.c	2019-05-24 10:44:50.978443673 +0200
@@ -27,7 +27,6 @@ 
    <http://www.gnu.org/licenses/>.  */
 
 #include "openacc.h"
-#include "config.h"
 #include "libgomp.h"
 #include "oacc-int.h"
 #include <assert.h>
--- libgomp/oacc-host.c.jj	2019-05-14 23:22:56.776497310 +0200
+++ libgomp/oacc-host.c	2019-05-24 10:43:53.577378320 +0200
@@ -32,7 +32,6 @@ 
 
 #include <stdbool.h>
 #include <stddef.h>
-#include <stdint.h>
 
 static struct gomp_device_descr host_dispatch;