[llvm] [OpenMP] Fix redefining `stdint.h` types (PR #108607)
Joseph Huber via llvm-commits
llvm-commits at lists.llvm.org
Fri Sep 13 10:10:57 PDT 2024
https://github.com/jhuber6 created https://github.com/llvm/llvm-project/pull/108607
Summary:
We can include `stdint.h` just find as long as we don't allow it to find
system headers, passing `-nostdlibinc` and `-nogpuinc` suppresses these
extra paths so we will just use the clang resource headers for
`stdint.h` and `stddef.h`.
>From 145a3b06e96bc5bfcd916ae2658138305774c860 Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Fri, 13 Sep 2024 12:09:21 -0500
Subject: [PATCH] [OpenMP] Fix redefining `stdint.h` types
Summary:
We can include `stdint.h` just find as long as we don't allow it to find
system headers, passing `-nostdlibinc` and `-nogpuinc` suppresses these
extra paths so we will just use the clang resource headers for
`stdint.h` and `stddef.h`.
---
offload/DeviceRTL/CMakeLists.txt | 4 ++--
offload/DeviceRTL/include/DeviceTypes.h | 29 +++----------------------
offload/include/Shared/Environment.h | 6 ++---
offload/include/Shared/Types.h | 22 -------------------
offload/include/Shared/Utils.h | 2 +-
5 files changed, 9 insertions(+), 54 deletions(-)
delete mode 100644 offload/include/Shared/Types.h
diff --git a/offload/DeviceRTL/CMakeLists.txt b/offload/DeviceRTL/CMakeLists.txt
index 6b86c4d1ce0cfa..bb8dc4e1d9a8c7 100644
--- a/offload/DeviceRTL/CMakeLists.txt
+++ b/offload/DeviceRTL/CMakeLists.txt
@@ -125,7 +125,7 @@ list(TRANSFORM LIBOMPTARGET_LLVM_INCLUDE_DIRS_DEVICERTL PREPEND "-I")
# Set flags for LLVM Bitcode compilation.
set(bc_flags -c -foffload-lto -std=c++17 -fvisibility=hidden
${clang_opt_flags} --offload-device-only
- -nocudalib -nogpulib -nostdinc
+ -nocudalib -nogpulib -nogpuinc -nostdlibinc
-fopenmp -fopenmp-cuda-mode
-Wno-unknown-cuda-version
-DOMPTARGET_DEVICE_RUNTIME
@@ -270,7 +270,7 @@ function(compileDeviceRTLLibrary target_cpu target_name target_triple)
-fopenmp --offload-arch=${target_cpu} -fopenmp-cuda-mode
-mllvm -openmp-opt-disable
-foffload-lto -fvisibility=hidden --offload-device-only
- -nocudalib -nogpulib -nostdinc -Wno-unknown-cuda-version
+ -nocudalib -nogpulib -nogpuinc -nostdlibinc -Wno-unknown-cuda-version
)
target_compile_definitions(${ide_target_name} PRIVATE SHARED_SCRATCHPAD_SIZE=512)
target_include_directories(${ide_target_name} PRIVATE
diff --git a/offload/DeviceRTL/include/DeviceTypes.h b/offload/DeviceRTL/include/DeviceTypes.h
index c7132be345e0e4..8b8921bb4ca7d4 100644
--- a/offload/DeviceRTL/include/DeviceTypes.h
+++ b/offload/DeviceRTL/include/DeviceTypes.h
@@ -12,6 +12,9 @@
#ifndef OMPTARGET_TYPES_H
#define OMPTARGET_TYPES_H
+#include <stdint.h>
+#include <stddef.h>
+
// Tell the compiler that we do not have any "call-like" inline assembly in the
// device rutime. That means we cannot have inline assembly which will call
// another function but only inline assembly that performs some operation or
@@ -21,32 +24,6 @@
// TODO: Find a good place for this
#pragma omp assumes ext_no_call_asm
-/// Base type declarations for freestanding mode
-///
-///{
-using int8_t = char;
-using uint8_t = unsigned char;
-using int16_t = short;
-using uint16_t = unsigned short;
-using int32_t = int;
-using uint32_t = unsigned int;
-using int64_t = long;
-using uint64_t = unsigned long;
-using size_t = decltype(sizeof(char));
-// TODO: Properly implement this
-using intptr_t = int64_t;
-using uintptr_t = uint64_t;
-
-static_assert(sizeof(int8_t) == 1, "type size mismatch");
-static_assert(sizeof(uint8_t) == 1, "type size mismatch");
-static_assert(sizeof(int16_t) == 2, "type size mismatch");
-static_assert(sizeof(uint16_t) == 2, "type size mismatch");
-static_assert(sizeof(int32_t) == 4, "type size mismatch");
-static_assert(sizeof(uint32_t) == 4, "type size mismatch");
-static_assert(sizeof(int64_t) == 8, "type size mismatch");
-static_assert(sizeof(uint64_t) == 8, "type size mismatch");
-///}
-
enum omp_proc_bind_t {
omp_proc_bind_false = 0,
omp_proc_bind_true = 1,
diff --git a/offload/include/Shared/Environment.h b/offload/include/Shared/Environment.h
index d141146b6bd5a1..147583c209fc3e 100644
--- a/offload/include/Shared/Environment.h
+++ b/offload/include/Shared/Environment.h
@@ -13,13 +13,13 @@
#ifndef OMPTARGET_SHARED_ENVIRONMENT_H
#define OMPTARGET_SHARED_ENVIRONMENT_H
+#include <stdint.h>
+
#ifdef OMPTARGET_DEVICE_RUNTIME
-#include "Types.h"
+#include "DeviceTypes.h"
#else
#include "SourceInfo.h"
-#include <cstdint>
-
using IdentTy = ident_t;
#endif
diff --git a/offload/include/Shared/Types.h b/offload/include/Shared/Types.h
deleted file mode 100644
index 15e3cfefa37ed9..00000000000000
--- a/offload/include/Shared/Types.h
+++ /dev/null
@@ -1,22 +0,0 @@
-//===-- Shared/Types.h - Type defs shared between host and device - C++ -*-===//
-//
-// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
-// See https://llvm.org/LICENSE.txt for license information.
-// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
-//
-//===----------------------------------------------------------------------===//
-//
-// Environments shared between host and device.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef OMPTARGET_SHARED_TYPES_H
-#define OMPTARGET_SHARED_TYPES_H
-
-#ifndef OMPTARGET_DEVICE_RUNTIME
-#include <cstdint>
-#else
-#include "DeviceTypes.h"
-#endif
-
-#endif // OMPTARGET_SHARED_TYPES_H
diff --git a/offload/include/Shared/Utils.h b/offload/include/Shared/Utils.h
index da83551fffd543..83a82678312c13 100644
--- a/offload/include/Shared/Utils.h
+++ b/offload/include/Shared/Utils.h
@@ -14,7 +14,7 @@
#ifndef OMPTARGET_SHARED_UTILS_H
#define OMPTARGET_SHARED_UTILS_H
-#include "Types.h"
+#include <stdint.h>
namespace utils {
More information about the llvm-commits
mailing list