Skip to content

Commit 64671db

Browse files
authored
[libc] Remove unnecessary call in memfunction dispatchers (#75800)
Before this patch the compiler could generate unnecessary calls to the selected implementation. https://clang.llvm.org/docs/AttributeReference.html#flatten
1 parent 92fc4b4 commit 64671db

File tree

5 files changed

+12
-10
lines changed

5 files changed

+12
-10
lines changed

libc/src/string/memory_utils/inline_bcmp.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@
3232

3333
namespace LIBC_NAMESPACE {
3434

35-
LIBC_INLINE int inline_bcmp(const void *p1, const void *p2, size_t count) {
35+
[[gnu::flatten]] LIBC_INLINE int inline_bcmp(const void *p1, const void *p2,
36+
size_t count) {
3637
return static_cast<int>(LIBC_SRC_STRING_MEMORY_UTILS_BCMP(
3738
reinterpret_cast<CPtr>(p1), reinterpret_cast<CPtr>(p2), count));
3839
}

libc/src/string/memory_utils/inline_bzero.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616

1717
namespace LIBC_NAMESPACE {
1818

19-
LIBC_INLINE static void inline_bzero(Ptr dst, size_t count) {
19+
[[gnu::flatten]] LIBC_INLINE static void inline_bzero(Ptr dst, size_t count) {
2020
inline_memset(dst, 0, count);
2121
}
2222

23-
LIBC_INLINE static void inline_bzero(void *dst, size_t count) {
23+
[[gnu::flatten]] LIBC_INLINE static void inline_bzero(void *dst, size_t count) {
2424
inline_bzero(reinterpret_cast<Ptr>(dst), count);
2525
}
2626

libc/src/string/memory_utils/inline_memcmp.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@
3333

3434
namespace LIBC_NAMESPACE {
3535

36-
LIBC_INLINE int inline_memcmp(const void *p1, const void *p2, size_t count) {
36+
[[gnu::flatten]] LIBC_INLINE int inline_memcmp(const void *p1, const void *p2,
37+
size_t count) {
3738
return static_cast<int>(LIBC_SRC_STRING_MEMORY_UTILS_MEMCMP(
3839
reinterpret_cast<CPtr>(p1), reinterpret_cast<CPtr>(p2), count));
3940
}

libc/src/string/memory_utils/inline_memcpy.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@
4040

4141
namespace LIBC_NAMESPACE {
4242

43-
LIBC_INLINE void inline_memcpy(void *__restrict dst, const void *__restrict src,
44-
size_t count) {
43+
[[gnu::flatten]] LIBC_INLINE void
44+
inline_memcpy(void *__restrict dst, const void *__restrict src, size_t count) {
4545
LIBC_SRC_STRING_MEMORY_UTILS_MEMCPY(reinterpret_cast<Ptr>(dst),
4646
reinterpret_cast<CPtr>(src), count);
4747
}

libc/src/string/memory_utils/inline_memmove.h

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,14 +49,14 @@ LIBC_INLINE constexpr bool inline_memmove_no_small_size(void *, const void *,
4949
return false;
5050
}
5151

52-
LIBC_INLINE bool inline_memmove_small_size(void *dst, const void *src,
53-
size_t count) {
52+
[[gnu::flatten]] LIBC_INLINE bool
53+
inline_memmove_small_size(void *dst, const void *src, size_t count) {
5454
return LIBC_SRC_STRING_MEMORY_UTILS_MEMMOVE_SMALL_SIZE(
5555
reinterpret_cast<Ptr>(dst), reinterpret_cast<CPtr>(src), count);
5656
}
5757

58-
LIBC_INLINE void inline_memmove_follow_up(void *dst, const void *src,
59-
size_t count) {
58+
[[gnu::flatten]] LIBC_INLINE void
59+
inline_memmove_follow_up(void *dst, const void *src, size_t count) {
6060
LIBC_SRC_STRING_MEMORY_UTILS_MEMMOVE_FOLLOW_UP(
6161
reinterpret_cast<Ptr>(dst), reinterpret_cast<CPtr>(src), count);
6262
}

0 commit comments

Comments
 (0)