[libc] [llvm] [libc] Remove direct math.h includes from src (PR #84991)
Michael Jones via llvm-commits
llvm-commits at lists.llvm.org
Wed Mar 13 16:57:11 PDT 2024
https://github.com/michaelrj-google updated https://github.com/llvm/llvm-project/pull/84991
>From 9e78597a86a3b2aca8a8bea582b4200d9a1159d7 Mon Sep 17 00:00:00 2001
From: Michael Jones <michaelrj at google.com>
Date: Tue, 12 Mar 2024 16:12:22 -0700
Subject: [PATCH 1/2] [libc] Remove direct math.h includes from src
A downstream overlay mode user ran into issues with the isnan macro not
working in our sources with a specific libc configuration. This patch
replaces the last direct includes of math.h with our internal
math_macros.h, along with the necessary build system changes.
---
libc/src/__support/FPUtil/FEnvImpl.h | 2 +-
.../src/__support/FPUtil/ManipulationFunctions.h | 2 +-
.../__support/FPUtil/NearestIntegerOperations.h | 2 +-
libc/src/math/generic/math_utils.h | 2 +-
libc/test/src/math/ILogbTest.h | 2 +-
.../bazel/llvm-project-overlay/libc/BUILD.bazel | 16 +++++++++++++++-
.../libc/test/src/__support/BUILD.bazel | 1 +
.../libc/test/src/math/BUILD.bazel | 1 +
8 files changed, 22 insertions(+), 6 deletions(-)
diff --git a/libc/src/__support/FPUtil/FEnvImpl.h b/libc/src/__support/FPUtil/FEnvImpl.h
index 6810659733de2c..4a84d1dc086c07 100644
--- a/libc/src/__support/FPUtil/FEnvImpl.h
+++ b/libc/src/__support/FPUtil/FEnvImpl.h
@@ -14,8 +14,8 @@
#include "src/__support/macros/properties/architectures.h"
#include "src/errno/libc_errno.h"
+#include "include/llvm-libc-macros/math-macros.h"
#include <fenv.h>
-#include <math.h>
#if defined(LIBC_TARGET_ARCH_IS_AARCH64)
#if defined(__APPLE__)
diff --git a/libc/src/__support/FPUtil/ManipulationFunctions.h b/libc/src/__support/FPUtil/ManipulationFunctions.h
index f148d984f5f35c..1aa1efcb4eb7dd 100644
--- a/libc/src/__support/FPUtil/ManipulationFunctions.h
+++ b/libc/src/__support/FPUtil/ManipulationFunctions.h
@@ -22,7 +22,7 @@
#include "src/__support/macros/attributes.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
-#include <math.h>
+#include "include/llvm-libc-macros/math-macros.h"
namespace LIBC_NAMESPACE {
namespace fputil {
diff --git a/libc/src/__support/FPUtil/NearestIntegerOperations.h b/libc/src/__support/FPUtil/NearestIntegerOperations.h
index 19ae75ea788912..da3d80ceb097e5 100644
--- a/libc/src/__support/FPUtil/NearestIntegerOperations.h
+++ b/libc/src/__support/FPUtil/NearestIntegerOperations.h
@@ -16,7 +16,7 @@
#include "src/__support/CPP/type_traits.h"
#include "src/__support/common.h"
-#include <math.h>
+#include "include/llvm-libc-macros/math-macros.h"
namespace LIBC_NAMESPACE {
namespace fputil {
diff --git a/libc/src/math/generic/math_utils.h b/libc/src/math/generic/math_utils.h
index e884fe2deae284..396a70d7713b2c 100644
--- a/libc/src/math/generic/math_utils.h
+++ b/libc/src/math/generic/math_utils.h
@@ -14,7 +14,7 @@
#include "src/__support/common.h"
#include "src/errno/libc_errno.h"
-#include <math.h>
+#include "include/llvm-libc-macros/math-macros.h"
#include <stdint.h>
diff --git a/libc/test/src/math/ILogbTest.h b/libc/test/src/math/ILogbTest.h
index 3e2db33e2c0524..dcc9d554eb3c28 100644
--- a/libc/test/src/math/ILogbTest.h
+++ b/libc/test/src/math/ILogbTest.h
@@ -9,11 +9,11 @@
#ifndef LLVM_LIBC_TEST_SRC_MATH_ILOGBTEST_H
#define LLVM_LIBC_TEST_SRC_MATH_ILOGBTEST_H
+#include "include/llvm-libc-macros/math-macros.h"
#include "src/__support/CPP/limits.h" // INT_MAX
#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/ManipulationFunctions.h"
#include "test/UnitTest/Test.h"
-#include <math.h>
class LlvmLibcILogbTest : public LIBC_NAMESPACE::testing::Test {
public:
diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
index 5f6c43cd6af7c1..8fec108df3124a 100644
--- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel
@@ -62,7 +62,17 @@ config_setting(
flag_values = {":mpfr": "system"},
)
-############################## Support libraries #############################
+################################# Include Files ################################
+
+libc_support_library(
+ name = "internal_includes",
+ hdrs = glob([
+ "include/llvm-libc-macros/*.h",
+ "include/llvm-libc/types/*",
+ ]),
+)
+
+############################### Support libraries ##############################
libc_support_library(
name = "__support_macros_properties_architectures",
@@ -669,6 +679,7 @@ libc_support_library(
":__support_macros_properties_architectures",
":__support_macros_sanitizer",
":errno",
+ ":internal_includes",
],
)
@@ -738,6 +749,7 @@ libc_support_library(
":__support_fputil_normal_float",
":__support_macros_optimization",
":__support_uint128",
+ ":internal_includes",
],
)
@@ -751,6 +763,7 @@ libc_support_library(
":__support_fputil_fp_bits",
":__support_fputil_rounding_mode",
":__support_macros_attributes",
+ ":internal_includes",
],
)
@@ -1172,6 +1185,7 @@ libc_support_library(
"__support_cpp_type_traits",
":__support_common",
":errno",
+ ":internal_includes",
],
)
diff --git a/utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel
index 6837b9880d5a41..7c8ad71853e5e4 100644
--- a/utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/test/src/__support/BUILD.bazel
@@ -64,6 +64,7 @@ libc_test(
name = "integer_to_string_test",
srcs = ["integer_to_string_test.cpp"],
deps = [
+ "//libc:__support_cpp_limits",
"//libc:__support_cpp_span",
"//libc:__support_cpp_string_view",
"//libc:__support_integer_literals",
diff --git a/utils/bazel/llvm-project-overlay/libc/test/src/math/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/test/src/math/BUILD.bazel
index 63e18b83710918..391b509854f998 100644
--- a/utils/bazel/llvm-project-overlay/libc/test/src/math/BUILD.bazel
+++ b/utils/bazel/llvm-project-overlay/libc/test/src/math/BUILD.bazel
@@ -296,6 +296,7 @@ libc_support_library(
"//libc:__support_cpp_limits",
"//libc:__support_fputil_fp_bits",
"//libc:__support_fputil_manipulation_functions",
+ "//libc:internal_includes",
"//libc/test/UnitTest:LibcUnitTest",
],
)
>From 9cf73020a806bd6f783e8862b7e09c3038c1b9c8 Mon Sep 17 00:00:00 2001
From: Michael Jones <michaelrj at google.com>
Date: Wed, 13 Mar 2024 16:56:52 -0700
Subject: [PATCH 2/2] format includes
---
libc/src/__support/FPUtil/FEnvImpl.h | 3 +--
libc/src/__support/FPUtil/ManipulationFunctions.h | 3 +--
libc/src/__support/FPUtil/NearestIntegerOperations.h | 3 +--
libc/src/math/generic/math_utils.h | 3 +--
4 files changed, 4 insertions(+), 8 deletions(-)
diff --git a/libc/src/__support/FPUtil/FEnvImpl.h b/libc/src/__support/FPUtil/FEnvImpl.h
index 4a84d1dc086c07..a6a533dcfdf4aa 100644
--- a/libc/src/__support/FPUtil/FEnvImpl.h
+++ b/libc/src/__support/FPUtil/FEnvImpl.h
@@ -9,12 +9,11 @@
#ifndef LLVM_LIBC_SRC___SUPPORT_FPUTIL_FENVIMPL_H
#define LLVM_LIBC_SRC___SUPPORT_FPUTIL_FENVIMPL_H
+#include "include/llvm-libc-macros/math-macros.h"
#include "src/__support/macros/attributes.h" // LIBC_INLINE
#include "src/__support/macros/config.h" // LIBC_HAS_BUILTIN
#include "src/__support/macros/properties/architectures.h"
#include "src/errno/libc_errno.h"
-
-#include "include/llvm-libc-macros/math-macros.h"
#include <fenv.h>
#if defined(LIBC_TARGET_ARCH_IS_AARCH64)
diff --git a/libc/src/__support/FPUtil/ManipulationFunctions.h b/libc/src/__support/FPUtil/ManipulationFunctions.h
index 1aa1efcb4eb7dd..e9ca6dc33acc77 100644
--- a/libc/src/__support/FPUtil/ManipulationFunctions.h
+++ b/libc/src/__support/FPUtil/ManipulationFunctions.h
@@ -15,6 +15,7 @@
#include "dyadic_float.h"
#include "rounding_mode.h"
+#include "include/llvm-libc-macros/math-macros.h"
#include "src/__support/CPP/bit.h"
#include "src/__support/CPP/limits.h" // INT_MAX, INT_MIN
#include "src/__support/CPP/type_traits.h"
@@ -22,8 +23,6 @@
#include "src/__support/macros/attributes.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
-#include "include/llvm-libc-macros/math-macros.h"
-
namespace LIBC_NAMESPACE {
namespace fputil {
diff --git a/libc/src/__support/FPUtil/NearestIntegerOperations.h b/libc/src/__support/FPUtil/NearestIntegerOperations.h
index da3d80ceb097e5..e890e38ba4ae7d 100644
--- a/libc/src/__support/FPUtil/NearestIntegerOperations.h
+++ b/libc/src/__support/FPUtil/NearestIntegerOperations.h
@@ -13,11 +13,10 @@
#include "FPBits.h"
#include "rounding_mode.h"
+#include "include/llvm-libc-macros/math-macros.h"
#include "src/__support/CPP/type_traits.h"
#include "src/__support/common.h"
-#include "include/llvm-libc-macros/math-macros.h"
-
namespace LIBC_NAMESPACE {
namespace fputil {
diff --git a/libc/src/math/generic/math_utils.h b/libc/src/math/generic/math_utils.h
index 396a70d7713b2c..cced761fc8c822 100644
--- a/libc/src/math/generic/math_utils.h
+++ b/libc/src/math/generic/math_utils.h
@@ -9,13 +9,12 @@
#ifndef LLVM_LIBC_SRC_MATH_GENERIC_MATH_UTILS_H
#define LLVM_LIBC_SRC_MATH_GENERIC_MATH_UTILS_H
+#include "include/llvm-libc-macros/math-macros.h"
#include "src/__support/CPP/bit.h"
#include "src/__support/CPP/type_traits.h"
#include "src/__support/common.h"
#include "src/errno/libc_errno.h"
-#include "include/llvm-libc-macros/math-macros.h"
-
#include <stdint.h>
// TODO: evaluate which functions from this file are actually used.
More information about the llvm-commits
mailing list