[libcxx-commits] [libcxx] [libc++] Diagnoses insufficiently aligned pointers for std::assume_aligned during constant evaluation (PR #73775)
Rajveer Singh Bharadwaj via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Nov 29 02:34:05 PST 2023
https://github.com/Rajveer100 created https://github.com/llvm/llvm-project/pull/73775
Resolves Issue #64078
This is a `libc++` enhancement when violating alignment assumption for `__builtin_assume_aligned`.
>From 95879b0295ef0f85a9a8c76cfb89f6fb8850aaa9 Mon Sep 17 00:00:00 2001
From: Rajveer <rajveer.developer at icloud.com>
Date: Wed, 29 Nov 2023 15:55:25 +0530
Subject: [PATCH] [libc++] Diagnoses insufficiently aligned pointers for
std::assume_aligned during constant evaluation
Resolves Issue #64078
This is a libc++ enhancement when violating alignment assumption for __builtin_assume_aligned.
---
libcxx/include/__memory/assume_aligned.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/libcxx/include/__memory/assume_aligned.h b/libcxx/include/__memory/assume_aligned.h
index bce00bf02a718c0..4b0388492b2796c 100644
--- a/libcxx/include/__memory/assume_aligned.h
+++ b/libcxx/include/__memory/assume_aligned.h
@@ -28,6 +28,7 @@ _LIBCPP_NODISCARD _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 _Tp* __ass
"std::assume_aligned<N>(p) requires N to be a power of two");
if (__libcpp_is_constant_evaluated()) {
+ (void) __builtin_assume_aligned(__ptr, _Np);
return __ptr;
} else {
_LIBCPP_ASSERT_UNCATEGORIZED(reinterpret_cast<uintptr_t>(__ptr) % _Np == 0, "Alignment assumption is violated");
More information about the libcxx-commits
mailing list