[libcxx-commits] [libcxx] [libc++] Diagnoses insufficiently aligned pointers for std::assume_aligned during constant evaluation (PR #73775)

via libcxx-commits libcxx-commits at lists.llvm.org
Wed Nov 29 02:34:31 PST 2023


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-libcxx

Author: Rajveer Singh Bharadwaj (Rajveer100)

<details>
<summary>Changes</summary>

Resolves Issue #<!-- -->64078

This is a `libc++` enhancement when violating alignment assumption for `__builtin_assume_aligned`.

---
Full diff: https://github.com/llvm/llvm-project/pull/73775.diff


1 Files Affected:

- (modified) libcxx/include/__memory/assume_aligned.h (+1) 


``````````diff
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");

``````````

</details>


https://github.com/llvm/llvm-project/pull/73775


More information about the libcxx-commits mailing list