[libcxx-commits] [libcxx] aa7f377 - [libc++] Remove libc++'s own stdint.h and locale.h (#107436)

via libcxx-commits libcxx-commits at lists.llvm.org
Sun Oct 20 07:01:25 PDT 2024


Author: Louis Dionne
Date: 2024-10-20T16:01:21+02:00
New Revision: aa7f377c965ca79cf3022ddafe6cbd419bd52db5

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

LOG: [libc++] Remove libc++'s own stdint.h and locale.h (#107436)

These headers are not doing anything beyond the system or compiler
provided equivalent headers, so there's no real reason to keep them
around. Reducing the number of C headers we provide in libc++ simplifies
our header layering and reduces the potential for confusion when headers
are layered incorrectly.

Added: 
    

Modified: 
    libcxx/include/CMakeLists.txt
    libcxx/include/clocale
    libcxx/include/cstdint
    libcxx/include/module.modulemap
    libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
    libcxx/utils/libcxx/header_information.py

Removed: 
    libcxx/include/locale.h
    libcxx/include/stdint.h


################################################################################
diff  --git a/libcxx/include/CMakeLists.txt b/libcxx/include/CMakeLists.txt
index 3431ea7dab386b..a107314518b1fa 100644
--- a/libcxx/include/CMakeLists.txt
+++ b/libcxx/include/CMakeLists.txt
@@ -967,7 +967,6 @@ set(files
   limits
   list
   locale
-  locale.h
   map
   math.h
   mdspan
@@ -998,7 +997,6 @@ set(files
   stdbool.h
   stddef.h
   stdexcept
-  stdint.h
   stdio.h
   stdlib.h
   stop_token

diff  --git a/libcxx/include/clocale b/libcxx/include/clocale
index c689a64be288a3..4d53aa7eb29b29 100644
--- a/libcxx/include/clocale
+++ b/libcxx/include/clocale
@@ -38,14 +38,6 @@ lconv* localeconv();
 
 #include <locale.h>
 
-#ifndef _LIBCPP_LOCALE_H
-#   error <clocale> tried including <locale.h> but didn't find libc++'s <locale.h> header. \
-          This usually means that your header search paths are not configured properly. \
-          The header search paths should contain the C++ Standard Library headers before \
-          any C Standard Library, and you are probably using compiler flags that make that \
-          not be the case.
-#endif
-
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
 #endif

diff  --git a/libcxx/include/cstdint b/libcxx/include/cstdint
index 8c4782859426dd..9c9b2323d06ea9 100644
--- a/libcxx/include/cstdint
+++ b/libcxx/include/cstdint
@@ -144,14 +144,6 @@ Types:
 
 #include <stdint.h>
 
-#ifndef _LIBCPP_STDINT_H
-#   error <cstdint> tried including <stdint.h> but didn't find libc++'s <stdint.h> header. \
-          This usually means that your header search paths are not configured properly. \
-          The header search paths should contain the C++ Standard Library headers before \
-          any C Standard Library, and you are probably using compiler flags that make that \
-          not be the case.
-#endif
-
 #if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 #  pragma GCC system_header
 #endif

diff  --git a/libcxx/include/locale.h b/libcxx/include/locale.h
deleted file mode 100644
index 425bf47d437ac8..00000000000000
--- a/libcxx/include/locale.h
+++ /dev/null
@@ -1,46 +0,0 @@
-// -*- 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef _LIBCPP_LOCALE_H
-#define _LIBCPP_LOCALE_H
-
-/*
-    locale.h synopsis
-
-Macros:
-
-    LC_ALL
-    LC_COLLATE
-    LC_CTYPE
-    LC_MONETARY
-    LC_NUMERIC
-    LC_TIME
-
-Types:
-
-    lconv
-
-Functions:
-
-   setlocale
-   localeconv
-
-*/
-
-#include <__config>
-
-#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-#  pragma GCC system_header
-#endif
-
-#if __has_include_next(<locale.h>)
-#  include_next <locale.h>
-#endif
-
-#endif // _LIBCPP_LOCALE_H

diff  --git a/libcxx/include/module.modulemap b/libcxx/include/module.modulemap
index 5a0e199394d018..06e93d2452904d 100644
--- a/libcxx/include/module.modulemap
+++ b/libcxx/include/module.modulemap
@@ -2184,10 +2184,6 @@ module std_inttypes_h [system] {
   header "inttypes.h"
   export *
 }
-module std_locale_h [system] {
-  header "locale.h"
-  export *
-}
 module std_math_h [system] {
   header "math.h"
   export *
@@ -2204,10 +2200,6 @@ module std_stddef_h [system] {
   // <stddef.h>'s __need_* macros require textual inclusion.
   textual header "stddef.h"
 }
-module std_stdint_h [system] {
-  header "stdint.h"
-  export *
-}
 module std_stdio_h [system] {
   // <stdio.h>'s __need_* macros require textual inclusion.
   textual header "stdio.h"

diff  --git a/libcxx/include/stdint.h b/libcxx/include/stdint.h
deleted file mode 100644
index 35e5b8cbdad264..00000000000000
--- a/libcxx/include/stdint.h
+++ /dev/null
@@ -1,127 +0,0 @@
-// -*- 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
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef _LIBCPP_STDINT_H
-// AIX system headers need stdint.h to be re-enterable while _STD_TYPES_T
-// is defined until an inclusion of it without _STD_TYPES_T occurs, in which
-// case the header guard macro is defined.
-#if !defined(_AIX) || !defined(_STD_TYPES_T)
-#  define _LIBCPP_STDINT_H
-#endif // _STD_TYPES_T
-
-/*
-    stdint.h synopsis
-
-Macros:
-
-    INT8_MIN
-    INT16_MIN
-    INT32_MIN
-    INT64_MIN
-
-    INT8_MAX
-    INT16_MAX
-    INT32_MAX
-    INT64_MAX
-
-    UINT8_MAX
-    UINT16_MAX
-    UINT32_MAX
-    UINT64_MAX
-
-    INT_LEAST8_MIN
-    INT_LEAST16_MIN
-    INT_LEAST32_MIN
-    INT_LEAST64_MIN
-
-    INT_LEAST8_MAX
-    INT_LEAST16_MAX
-    INT_LEAST32_MAX
-    INT_LEAST64_MAX
-
-    UINT_LEAST8_MAX
-    UINT_LEAST16_MAX
-    UINT_LEAST32_MAX
-    UINT_LEAST64_MAX
-
-    INT_FAST8_MIN
-    INT_FAST16_MIN
-    INT_FAST32_MIN
-    INT_FAST64_MIN
-
-    INT_FAST8_MAX
-    INT_FAST16_MAX
-    INT_FAST32_MAX
-    INT_FAST64_MAX
-
-    UINT_FAST8_MAX
-    UINT_FAST16_MAX
-    UINT_FAST32_MAX
-    UINT_FAST64_MAX
-
-    INTPTR_MIN
-    INTPTR_MAX
-    UINTPTR_MAX
-
-    INTMAX_MIN
-    INTMAX_MAX
-
-    UINTMAX_MAX
-
-    PTRDIFF_MIN
-    PTRDIFF_MAX
-
-    SIG_ATOMIC_MIN
-    SIG_ATOMIC_MAX
-
-    SIZE_MAX
-
-    WCHAR_MIN
-    WCHAR_MAX
-
-    WINT_MIN
-    WINT_MAX
-
-    INT8_C(value)
-    INT16_C(value)
-    INT32_C(value)
-    INT64_C(value)
-
-    UINT8_C(value)
-    UINT16_C(value)
-    UINT32_C(value)
-    UINT64_C(value)
-
-    INTMAX_C(value)
-    UINTMAX_C(value)
-
-*/
-
-#include <__config>
-
-#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
-#  pragma GCC system_header
-#endif
-
-/* C99 stdlib (e.g. glibc < 2.18) does not provide macros needed
-   for C++11 unless __STDC_LIMIT_MACROS and __STDC_CONSTANT_MACROS
-   are defined
-*/
-#if defined(__cplusplus) && !defined(__STDC_LIMIT_MACROS)
-#  define __STDC_LIMIT_MACROS
-#endif
-#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS)
-#  define __STDC_CONSTANT_MACROS
-#endif
-
-#if __has_include_next(<stdint.h>)
-#  include_next <stdint.h>
-#endif
-
-#endif // _LIBCPP_STDINT_H

diff  --git a/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp b/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
index 9fa4021e5c1ead..63ca6643797132 100644
--- a/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
+++ b/libcxx/test/libcxx/depr/depr.c.headers/extern_c.pass.cpp
@@ -26,9 +26,6 @@ extern "C" {
 #include <inttypes.h>
 #include <iso646.h>
 #include <limits.h>
-#ifndef _LIBCPP_HAS_NO_LOCALIZATION
-#   include <locale.h>
-#endif
 #include <math.h>
 #include <setjmp.h>
 #include <signal.h>

diff  --git a/libcxx/utils/libcxx/header_information.py b/libcxx/utils/libcxx/header_information.py
index 6bebf3302ffae9..2ed52e8c1dbf22 100644
--- a/libcxx/utils/libcxx/header_information.py
+++ b/libcxx/utils/libcxx/header_information.py
@@ -15,7 +15,6 @@
 
     # headers with #error directives
     "ios": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",
-    "locale.h": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",
     # transitive includers of the above headers
     "clocale": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",
     "codecvt": "!defined(_LIBCPP_HAS_NO_LOCALIZATION)",
@@ -53,7 +52,6 @@
     "istream": "// UNSUPPORTED: no-localization",
     "latch": "// UNSUPPORTED: no-threads, c++03, c++11, c++14, c++17",
     "locale": "// UNSUPPORTED: no-localization",
-    "locale.h": "// UNSUPPORTED: no-localization",
     "mutex": "// UNSUPPORTED: no-threads, c++03",
     "ostream": "// UNSUPPORTED: no-localization",
     "print": "// UNSUPPORTED: no-filesystem, c++03, c++11, c++14, c++17, c++20, availability-fp_to_chars-missing", # TODO PRINT investigate


        


More information about the libcxx-commits mailing list