Skip to content

Commit 83dfa1f

Browse files
nicocopybara-github
authored andcommitted
Revert "[libcxx] Use alias for detecting overriden function (#114961)"
This reverts commit 62bd10f7d18ca6f544286767cae2c9026d493888. Breaks building with -flto=thin, see llvm/llvm-project#114961 (comment) NOKEYCHECK=True GitOrigin-RevId: 8dfae0c462e9558df77c83c97d89b4b83ed1baff
1 parent 02cb512 commit 83dfa1f

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

src/stdlib_new_delete.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ static void* operator_new_impl(std::size_t size) {
6363
return p;
6464
}
6565

66-
_LIBCPP_OVERRIDABLE_FUNCTION(_Znwm, void*, operator new, (std::size_t size)) _THROW_BAD_ALLOC {
66+
_LIBCPP_MAKE_OVERRIDABLE_FUNCTION_DETECTABLE _LIBCPP_WEAK void* operator new(std::size_t size) _THROW_BAD_ALLOC {
6767
void* p = operator_new_impl(size);
6868
if (p == nullptr)
6969
__throw_bad_alloc_shim();
@@ -74,7 +74,7 @@ _LIBCPP_WEAK void* operator new(size_t size, const std::nothrow_t&) noexcept {
7474
#if !_LIBCPP_HAS_EXCEPTIONS
7575
# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
7676
_LIBCPP_ASSERT_SHIM(
77-
!std::__is_function_overridden<static_cast<void* (*)(std::size_t)>(&operator new)>(),
77+
!std::__is_function_overridden(static_cast<void* (*)(std::size_t)>(&operator new)),
7878
"libc++ was configured with exceptions disabled and `operator new(size_t)` has been overridden, "
7979
"but `operator new(size_t, nothrow_t)` has not been overridden. This is problematic because "
8080
"`operator new(size_t, nothrow_t)` must call `operator new(size_t)`, which will terminate in case "
@@ -94,15 +94,15 @@ _LIBCPP_WEAK void* operator new(size_t size, const std::nothrow_t&) noexcept {
9494
#endif
9595
}
9696

97-
_LIBCPP_OVERRIDABLE_FUNCTION(_Znam, void*, operator new[], (size_t size)) _THROW_BAD_ALLOC {
97+
_LIBCPP_MAKE_OVERRIDABLE_FUNCTION_DETECTABLE _LIBCPP_WEAK void* operator new[](size_t size) _THROW_BAD_ALLOC {
9898
return ::operator new(size);
9999
}
100100

101101
_LIBCPP_WEAK void* operator new[](size_t size, const std::nothrow_t&) noexcept {
102102
#if !_LIBCPP_HAS_EXCEPTIONS
103103
# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
104104
_LIBCPP_ASSERT_SHIM(
105-
!std::__is_function_overridden<static_cast<void* (*)(std::size_t)>(&operator new[])>(),
105+
!std::__is_function_overridden(static_cast<void* (*)(std::size_t)>(&operator new[])),
106106
"libc++ was configured with exceptions disabled and `operator new[](size_t)` has been overridden, "
107107
"but `operator new[](size_t, nothrow_t)` has not been overridden. This is problematic because "
108108
"`operator new[](size_t, nothrow_t)` must call `operator new[](size_t)`, which will terminate in case "
@@ -156,8 +156,8 @@ static void* operator_new_aligned_impl(std::size_t size, std::align_val_t alignm
156156
return p;
157157
}
158158

159-
_LIBCPP_OVERRIDABLE_FUNCTION(_ZnwmSt11align_val_t, void*, operator new, (std::size_t size, std::align_val_t alignment))
160-
_THROW_BAD_ALLOC {
159+
_LIBCPP_MAKE_OVERRIDABLE_FUNCTION_DETECTABLE _LIBCPP_WEAK void*
160+
operator new(std::size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC {
161161
void* p = operator_new_aligned_impl(size, alignment);
162162
if (p == nullptr)
163163
__throw_bad_alloc_shim();
@@ -168,7 +168,7 @@ _LIBCPP_WEAK void* operator new(size_t size, std::align_val_t alignment, const s
168168
# if !_LIBCPP_HAS_EXCEPTIONS
169169
# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
170170
_LIBCPP_ASSERT_SHIM(
171-
!std::__is_function_overridden<static_cast<void* (*)(std::size_t, std::align_val_t)>(&operator new)>(),
171+
!std::__is_function_overridden(static_cast<void* (*)(std::size_t, std::align_val_t)>(&operator new)),
172172
"libc++ was configured with exceptions disabled and `operator new(size_t, align_val_t)` has been overridden, "
173173
"but `operator new(size_t, align_val_t, nothrow_t)` has not been overridden. This is problematic because "
174174
"`operator new(size_t, align_val_t, nothrow_t)` must call `operator new(size_t, align_val_t)`, which will "
@@ -188,14 +188,16 @@ _LIBCPP_WEAK void* operator new(size_t size, std::align_val_t alignment, const s
188188
# endif
189189
}
190190

191-
_LIBCPP_OVERRIDABLE_FUNCTION(_ZnamSt11align_val_t, void*, operator new[], (size_t size, std::align_val_t alignment))
192-
_THROW_BAD_ALLOC { return ::operator new(size, alignment); }
191+
_LIBCPP_MAKE_OVERRIDABLE_FUNCTION_DETECTABLE _LIBCPP_WEAK void*
192+
operator new[](size_t size, std::align_val_t alignment) _THROW_BAD_ALLOC {
193+
return ::operator new(size, alignment);
194+
}
193195

194196
_LIBCPP_WEAK void* operator new[](size_t size, std::align_val_t alignment, const std::nothrow_t&) noexcept {
195197
# if !_LIBCPP_HAS_EXCEPTIONS
196198
# if _LIBCPP_CAN_DETECT_OVERRIDDEN_FUNCTION
197199
_LIBCPP_ASSERT_SHIM(
198-
!std::__is_function_overridden<static_cast<void* (*)(std::size_t, std::align_val_t)>(&operator new[])>(),
200+
!std::__is_function_overridden(static_cast<void* (*)(std::size_t, std::align_val_t)>(&operator new[])),
199201
"libc++ was configured with exceptions disabled and `operator new[](size_t, align_val_t)` has been overridden, "
200202
"but `operator new[](size_t, align_val_t, nothrow_t)` has not been overridden. This is problematic because "
201203
"`operator new[](size_t, align_val_t, nothrow_t)` must call `operator new[](size_t, align_val_t)`, which will "

0 commit comments

Comments
 (0)