[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