[libc-commits] [PATCH] D146863: [libc] Define LLVM_LIBC_FUNCTION with a layer of macro expansion

Roland McGrath via Phabricator via libc-commits libc-commits at lists.llvm.org
Sat Mar 25 11:31:52 PDT 2023


This revision was automatically updated to reflect the committed changes.
Closed by commit rGd30de9844e1a: [libc] Define LLVM_LIBC_FUNCTION with a layer of macro expansion (authored by mcgrathr).

Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D146863/new/

https://reviews.llvm.org/D146863

Files:
  libc/src/__support/common.h


Index: libc/src/__support/common.h
===================================================================
--- libc/src/__support/common.h
+++ libc/src/__support/common.h
@@ -18,21 +18,25 @@
 
 // GPU targets do not support aliasing.
 #if defined(LIBC_COPT_PUBLIC_PACKAGING) && defined(LIBC_TARGET_ARCH_IS_GPU)
-#define LLVM_LIBC_FUNCTION(type, name, arglist)                                \
+#define LLVM_LIBC_FUNCTION_IMPL(type, name, arglist)                           \
   LLVM_LIBC_FUNCTION_ATTR decltype(__llvm_libc::name)                          \
       __##name##_impl__ __asm__(#name);                                        \
   type __##name##_impl__ arglist
 // MacOS needs to be excluded because it does not support aliasing.
 #elif defined(LIBC_COPT_PUBLIC_PACKAGING) && (!defined(__APPLE__))
-#define LLVM_LIBC_FUNCTION(type, name, arglist)                                \
+#define LLVM_LIBC_FUNCTION_IMPL(type, name, arglist)                           \
   LLVM_LIBC_FUNCTION_ATTR decltype(__llvm_libc::name)                          \
       __##name##_impl__ __asm__(#name);                                        \
   decltype(__llvm_libc::name) name [[gnu::alias(#name)]];                      \
   type __##name##_impl__ arglist
 #else
-#define LLVM_LIBC_FUNCTION(type, name, arglist) type name arglist
+#define LLVM_LIBC_FUNCTION_IMPL(type, name, arglist) type name arglist
 #endif
 
+// This extra layer of macro allows `name` to be a macro to rename a function.
+#define LLVM_LIBC_FUNCTION(type, name, arglist)                                \
+  LLVM_LIBC_FUNCTION_IMPL(type, name, arglist)
+
 namespace __llvm_libc {
 namespace internal {
 constexpr bool same_string(char const *lhs, char const *rhs) {


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D146863.508329.patch
Type: text/x-patch
Size: 1729 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/libc-commits/attachments/20230325/a513be0a/attachment-0001.bin>


More information about the libc-commits mailing list