[libc-commits] [PATCH] D150731: [libc] Fix definition and use of LIBC_INLINE macro
Roland McGrath via Phabricator via libc-commits
libc-commits at lists.llvm.org
Tue May 16 14:55:27 PDT 2023
mcgrathr created this revision.
mcgrathr added reviewers: abrachet, Caslyn, leonardchan, michaelrj.
Herald added subscribers: libc-commits, ecnelises, tschuett.
Herald added projects: libc-project, All.
mcgrathr requested review of this revision.
LIBC_INLINE was doubly defined in two headers. Define it only in
one place. Also update a few uses to make sure it's always placed
where a function attribute is valid and is used consistently on
every declaration of the same function in case the attributes used
in its definition must match on declarations and definitions.
Repository:
rG LLVM Github Monorepo
https://reviews.llvm.org/D150731
Files:
libc/src/__support/endian.h
libc/src/__support/macros/config.h
libc/src/__support/macros/optimization.h
Index: libc/src/__support/macros/optimization.h
===================================================================
--- libc/src/__support/macros/optimization.h
+++ libc/src/__support/macros/optimization.h
@@ -10,6 +10,7 @@
#ifndef LLVM_LIBC_SRC_SUPPORT_MACROS_OPTIMIZATION_H
#define LLVM_LIBC_SRC_SUPPORT_MACROS_OPTIMIZATION_H
+#include "src/__support/macros/attributes.h" // LIBC_INLINE
#include "src/__support/macros/config.h" // LIBC_HAS_BUILTIN
#include "src/__support/macros/properties/compiler.h" // LIBC_COMPILER_IS_CLANG
@@ -17,7 +18,7 @@
// accidentally pass an integer.
namespace __llvm_libc::details {
template <typename T>
-constexpr LIBC_INLINE bool expects_bool_condition(T value, T expected) {
+LIBC_INLINE constexpr bool expects_bool_condition(T value, T expected) {
return __builtin_expect(value, expected);
}
} // namespace __llvm_libc::details
Index: libc/src/__support/macros/config.h
===================================================================
--- libc/src/__support/macros/config.h
+++ libc/src/__support/macros/config.h
@@ -13,8 +13,6 @@
#ifndef LLVM_LIBC_SUPPORT_MACROS_CONFIG_H
#define LLVM_LIBC_SUPPORT_MACROS_CONFIG_H
-#define LIBC_INLINE inline
-
// LIBC_HAS_BUILTIN()
//
// Checks whether the compiler supports a Clang Feature Checking Macro, and if
Index: libc/src/__support/endian.h
===================================================================
--- libc/src/__support/endian.h
+++ libc/src/__support/endian.h
@@ -32,8 +32,8 @@
template <unsigned ORDER> struct Endian {
static constexpr const bool IS_LITTLE = ORDER == __ORDER_LITTLE_ENDIAN__;
static constexpr const bool IS_BIG = ORDER == __ORDER_BIG_ENDIAN__;
- template <typename T> static T to_big_endian(T value);
- template <typename T> static T to_little_endian(T value);
+ template <typename T> LIBC_INLINE static T to_big_endian(T value);
+ template <typename T> LIBC_INLINE static T to_little_endian(T value);
};
// Little Endian specializations
-------------- next part --------------
A non-text attachment was scrubbed...
Name: D150731.522803.patch
Type: text/x-patch
Size: 2011 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libc-commits/attachments/20230516/9157f19f/attachment-0001.bin>
More information about the libc-commits
mailing list