From nobody Sat Apr 25 14:20:01 2026 X-Original-To: dev-commits-src-all@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4g2sRP613rz6bZBS for ; Sat, 25 Apr 2026 14:20:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R13" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4g2sRP3Kzzz3J2N for ; Sat, 25 Apr 2026 14:20:01 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777126801; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lBRF9Db3C65Sh2bsNhCJ5rDUSneW7U7R3JIpOGkcyUI=; b=qRKvGGzb6tTyrzJm8Z8tMDVtx61UztxZH0XvT/qiGSfw1UOU1SoK04VXWimdHcHrWYdyGU F+BJvNzX8ap6EE6olQS0iN0WOT4EidpnqCSiHb7mVudw7MC3yW+q8G2fW7u1XQyllwj/Tl nqIvZgjxWkfSIKjsUKs1u7KOQvNFwGE0ULJ+WBcwuAsxQg6z2K2qGH6DI3F5dCgUWYRfAc 8TKYAFIxM3QiKVboueGLO0aeTfyCIkaVz36tJmJuJqx7toRe2SycVgJtRy30zKf0BC3Boh wvXMbiH1ljfnHBSh+6sS8D5o9AWoWAwF9UffubWqMk6I17sf4xMuldI/g03rqA== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1777126801; a=rsa-sha256; cv=none; b=OA3D0lDH5/sNMewiS/g/ks4/Vzv1APrOgIMGoHSfqZzG3/NjlZF23ojFtcROofuvTApwGn KrUJbEikk1erE4MLWTfB6hSbvmj3RNOHUjI5pwqGwC5C+D04tCgui9DT+nk+AEYzDgkNVw FgB1Ri+K0WA/DuxZmbQPjM2LKGFC9ZqE6/qOI/aW0iz7J5dh6Pg/VnqbDx1ofPja5VvQq/ yvPzD4h0Kx+HVxsLAOfXtju6WRygK+6BNQb2yvA7UhBCJ6pf5EqfE6O2vj7eMX+0/vssdx bNMDgMeLnmZD6wjsxu64CuXu4+H/cYw+qL2kbJA0qDKx5Ojczbjt1wY5KrUl8g== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1777126801; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=lBRF9Db3C65Sh2bsNhCJ5rDUSneW7U7R3JIpOGkcyUI=; b=peuPVINOHm1Oo99sr/VjPRvrSzQKddL8AYXG9OKLgibRl9mqfT9ctxGuk+9hMuUEFa6dPB xsMzXnrIxaP/qvpx/JPgM7cz7K2+qGxXK8q3CQ9AR7xuIVhI7GYYq1hontc+LsbYJAjenR pXb/scpDV5SR6UHRtS8iioouqCd5cNjIQQh+K7Tl/HStw64/D2b/aX+KRMRag2GDEKxWIg hpk6nrK3pG4uy8fxpWwyotL2XGJLD18c8Q5/mxhnVonzRRDaOR8EWbZQz6r70Amap/AsA7 R9tXu3EOLJ0kpW/t28IZ/y4KabSQ0FMgE9f9cy1vDXammc9sBadt768se4zEKw== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) by mxrelay.nyi.freebsd.org (Postfix) with ESMTP id 4g2sRP1zDdzdD2 for ; Sat, 25 Apr 2026 14:20:01 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from git (uid 1279) (envelope-from git@FreeBSD.org) id 370e4 by gitrepo.freebsd.org (DragonFly Mail Agent v0.13+ on gitrepo.freebsd.org); Sat, 25 Apr 2026 14:20:01 +0000 To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Dimitry Andric Subject: git: ad1f6ee5d723 - main - libcxx-compat: revert llvmorg-21-init-19251-g0c3a2faa8505: List-Id: Commit messages for all branches of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-all List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-all@freebsd.org Sender: owner-dev-commits-src-all@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: dim X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: ad1f6ee5d7230a63c216cd9ad3b89d5b7d1c4a3a Auto-Submitted: auto-generated Date: Sat, 25 Apr 2026 14:20:01 +0000 Message-Id: <69eccd91.370e4.103d7a50@gitrepo.freebsd.org> The branch main has been updated by dim: URL: https://cgit.FreeBSD.org/src/commit/?id=ad1f6ee5d7230a63c216cd9ad3b89d5b7d1c4a3a commit ad1f6ee5d7230a63c216cd9ad3b89d5b7d1c4a3a Author: Dimitry Andric AuthorDate: 2026-01-02 18:40:05 +0000 Commit: Dimitry Andric CommitDate: 2026-04-25 14:14:11 +0000 libcxx-compat: revert llvmorg-21-init-19251-g0c3a2faa8505: [libc++] Simplify the implementation of __libcpp_{,de}allocate (#147989) GCC 15 also supports `__buitin_operator_{new,delete}` now, so the `#else` cases are dead code. This patch inlines the calls to the wrapper functions and simplifies some surrounding code. This is part of making libc++ 21 build with GCC 14. PR: 292067 MFC after: 1 month --- .../llvm-project/libcxx/include/__new/allocate.h | 71 ++++++++++++++++------ 1 file changed, 51 insertions(+), 20 deletions(-) diff --git a/contrib/llvm-project/libcxx/include/__new/allocate.h b/contrib/llvm-project/libcxx/include/__new/allocate.h index 9bfe19aedb79..738fa62af4d6 100644 --- a/contrib/llvm-project/libcxx/include/__new/allocate.h +++ b/contrib/llvm-project/libcxx/include/__new/allocate.h @@ -31,16 +31,37 @@ _LIBCPP_CONSTEXPR inline _LIBCPP_HIDE_FROM_ABI bool __is_overaligned_for_new(siz #endif } +template +_LIBCPP_HIDE_FROM_ABI void* __libcpp_operator_new(_Args... __args) { +#if __has_builtin(__builtin_operator_new) && __has_builtin(__builtin_operator_delete) + return __builtin_operator_new(__args...); +#else + return ::operator new(__args...); +#endif +} + +template +_LIBCPP_HIDE_FROM_ABI void __libcpp_operator_delete(_Args... __args) _NOEXCEPT { +#if __has_builtin(__builtin_operator_new) && __has_builtin(__builtin_operator_delete) + __builtin_operator_delete(__args...); +#else + ::operator delete(__args...); +#endif +} + template inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_NO_CFI _Tp* -__libcpp_allocate(__element_count __n, [[__maybe_unused__]] size_t __align = _LIBCPP_ALIGNOF(_Tp)) { +__libcpp_allocate(__element_count __n, size_t __align = _LIBCPP_ALIGNOF(_Tp)) { size_t __size = static_cast(__n) * sizeof(_Tp); #if _LIBCPP_HAS_ALIGNED_ALLOCATION - if (__is_overaligned_for_new(__align)) - return static_cast<_Tp*>(__builtin_operator_new(__size, static_cast(__align))); + if (__is_overaligned_for_new(__align)) { + const align_val_t __align_val = static_cast(__align); + return static_cast<_Tp*>(std::__libcpp_operator_new(__size, __align_val)); + } #endif - return static_cast<_Tp*>(__builtin_operator_new(__size)); + (void)__align; + return static_cast<_Tp*>(std::__libcpp_operator_new(__size)); } #if _LIBCPP_HAS_SIZED_DEALLOCATION @@ -50,29 +71,39 @@ __libcpp_allocate(__element_count __n, [[__maybe_unused__]] size_t __align = _LI #endif template -inline _LIBCPP_HIDE_FROM_ABI void -__libcpp_deallocate(__type_identity_t<_Tp>* __ptr, - __element_count __n, - [[__maybe_unused__]] size_t __align = _LIBCPP_ALIGNOF(_Tp)) _NOEXCEPT { - [[__maybe_unused__]] size_t __size = static_cast(__n) * sizeof(_Tp); -#if _LIBCPP_HAS_ALIGNED_ALLOCATION - if (__is_overaligned_for_new(__align)) - return __builtin_operator_delete( - __ptr _LIBCPP_ONLY_IF_SIZED_DEALLOCATION(, __size), static_cast(__align)); +inline _LIBCPP_HIDE_FROM_ABI void __libcpp_deallocate( + __type_identity_t<_Tp>* __ptr, __element_count __n, size_t __align = _LIBCPP_ALIGNOF(_Tp)) _NOEXCEPT { + size_t __size = static_cast(__n) * sizeof(_Tp); + (void)__size; +#if !_LIBCPP_HAS_ALIGNED_ALLOCATION + (void)__align; + return std::__libcpp_operator_delete(__ptr _LIBCPP_ONLY_IF_SIZED_DEALLOCATION(, __size)); +#else + if (__is_overaligned_for_new(__align)) { + const align_val_t __align_val = static_cast(__align); + return std::__libcpp_operator_delete(__ptr _LIBCPP_ONLY_IF_SIZED_DEALLOCATION(, __size), __align_val); + } else { + return std::__libcpp_operator_delete(__ptr _LIBCPP_ONLY_IF_SIZED_DEALLOCATION(, __size)); + } #endif - return __builtin_operator_delete(__ptr _LIBCPP_ONLY_IF_SIZED_DEALLOCATION(, __size)); } #undef _LIBCPP_ONLY_IF_SIZED_DEALLOCATION template -inline _LIBCPP_HIDE_FROM_ABI void __libcpp_deallocate_unsized( - __type_identity_t<_Tp>* __ptr, [[__maybe_unused__]] size_t __align = _LIBCPP_ALIGNOF(_Tp)) _NOEXCEPT { -#if _LIBCPP_HAS_ALIGNED_ALLOCATION - if (__is_overaligned_for_new(__align)) - return __builtin_operator_delete(__ptr, static_cast(__align)); +inline _LIBCPP_HIDE_FROM_ABI void +__libcpp_deallocate_unsized(__type_identity_t<_Tp>* __ptr, size_t __align = _LIBCPP_ALIGNOF(_Tp)) _NOEXCEPT { +#if !_LIBCPP_HAS_ALIGNED_ALLOCATION + (void)__align; + return std::__libcpp_operator_delete(__ptr); +#else + if (__is_overaligned_for_new(__align)) { + const align_val_t __align_val = static_cast(__align); + return std::__libcpp_operator_delete(__ptr, __align_val); + } else { + return std::__libcpp_operator_delete(__ptr); + } #endif - return __builtin_operator_delete(__ptr); } _LIBCPP_END_NAMESPACE_STD