https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77691

--- Comment #24 from Jonathan Wakely <redi at gcc dot gnu.org> ---
I think this would make the tests pass, so you could remove the xfail
directives:

--- a/libstdc++-v3/include/experimental/memory_resource
+++ b/libstdc++-v3/include/experimental/memory_resource
@@ -421,7 +421,11 @@ namespace pmr {
       do_allocate(size_t __bytes, size_t __alignment) override
       {
        if (__alignment <= __guaranteed_alignment<_Alloc>::value)
-         return _M_alloc.allocate(__bytes);
+         {
+           if (__bytes < __alignment)
+             __bytes = __alignment;
+           return _M_alloc.allocate(__bytes);
+         }

        const _AlignMgr __mgr(__bytes, __alignment);
        // Assume _M_alloc returns 1-byte aligned memory, so allocate enough
@@ -437,6 +441,8 @@ namespace pmr {
        auto __ptr = static_cast<char*>(__p);
        if (__alignment <= __guaranteed_alignment<_Alloc>::value)
          {
+           if (__bytes < __alignment)
+             __bytes = __alignment;
            _M_alloc.deallocate(__ptr, __bytes);
            return;
          }

Reply via email to