[Openmp-commits] [openmp] 1568429 - [libomptarget][amdgcn] Drop use of inttypes.h, moving closer to freestanding

Jon Chesterfield via Openmp-commits openmp-commits at lists.llvm.org
Mon Mar 15 09:55:09 PDT 2021


Author: Jon Chesterfield
Date: 2021-03-15T16:54:58Z
New Revision: 156842937f5117176afae659d413f2891b81d4b9

URL: https://github.com/llvm/llvm-project/commit/156842937f5117176afae659d413f2891b81d4b9
DIFF: https://github.com/llvm/llvm-project/commit/156842937f5117176afae659d413f2891b81d4b9.diff

LOG: [libomptarget][amdgcn] Drop use of inttypes.h, moving closer to freestanding

[libomptarget][amdgcn] Drop use of inttypes.h, moving closer to freestanding

The glibc headers are a periodic source of problems compiling the devicertl.
This patch resolves the following error run into while building llvm on a slightly
different linux system.
```
In file included from .../lib/clang/13.0.0/include/inttypes.h:21:
In file included from /usr/include/inttypes.h:25:
/usr/include/features.h:461:12: fatal error: 'sys/cdefs.h' file not found
#  include <sys/cdefs.h>
           ^~~~~~~~~~~~~
```
As a second patch, removing assert.h from shuffle will let amdgcn build as
-ffreestanding, at which point only the headers that clang itself provides are
used and interactions with the host glibc are eliminated. Doing the same for
nvptx is complicated by printf handling but also seems worthwhile.

Reviewed By: tianshilei1992

Differential Revision: https://reviews.llvm.org/D98565

Added: 
    

Modified: 
    openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h
    openmp/libomptarget/deviceRTLs/common/include/target/shuffle.h

Removed: 
    


################################################################################
diff  --git a/openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h b/openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h
index 6a40c18728bf..b8d112c3f834 100644
--- a/openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h
+++ b/openmp/libomptarget/deviceRTLs/amdgcn/src/target_impl.h
@@ -18,10 +18,13 @@
 
 #include "amdgcn_interface.h"
 
-#include <inttypes.h>
 #include <stddef.h>
 #include <stdint.h>
 
+// subset of inttypes.h
+#define PRId64 "ld"
+#define PRIu64 "lu"
+
 #define DEVICE
 #define INLINE inline DEVICE
 #define NOINLINE __attribute__((noinline)) DEVICE

diff  --git a/openmp/libomptarget/deviceRTLs/common/include/target/shuffle.h b/openmp/libomptarget/deviceRTLs/common/include/target/shuffle.h
index 26e29e83ee03..e61c3798bfe1 100644
--- a/openmp/libomptarget/deviceRTLs/common/include/target/shuffle.h
+++ b/openmp/libomptarget/deviceRTLs/common/include/target/shuffle.h
@@ -16,7 +16,7 @@
 #define LIBOMPTARGET_DEVICERTL_SHUFFLE_H
 
 #include <assert.h>
-#include <inttypes.h>
+#include <stdint.h>
 
 #pragma omp declare target
 


        


More information about the Openmp-commits mailing list