https://bugs.kde.org/show_bug.cgi?id=388787

--- Comment #8 from Paul Floyd <pjfl...@wanadoo.fr> ---
I'll fix the indentation, ENOMEM and feature detection. The patch also has some
merge conflicts now.

For the aligned delete operators, libcxx has

_LIBCPP_WEAK
void
operator delete(void* ptr, std::align_val_t) _NOEXCEPT
{
    std::__libcpp_aligned_free(ptr);
}

and all of the other variations just call the above overload. In turn that
calls

inline _LIBCPP_INLINE_VISIBILITY
void __libcpp_aligned_free(void* __ptr) {
#if defined(_LIBCPP_MSVCRT_LIKE)
  ::_aligned_free(__ptr);
#else
  ::free(__ptr);
#endif
}

For libstd++ there is

_GLIBCXX_WEAK_DEFINITION void
operator delete(void* ptr, std::align_val_t) noexcept
{
#if _GLIBCXX_HAVE_ALIGNED_ALLOC || _GLIBCXX_HAVE_POSIX_MEMALIGN \
    || _GLIBCXX_HAVE_MEMALIGN
  std::free (ptr);
#elif _GLIBCXX_HAVE__ALIGNED_MALLOC
  _aligned_free (ptr);
#else
  if (ptr)
    std::free (((void **) ptr)[-1]); // See aligned_alloc in new_opa.cc
#endif
}

and again everything seems to be implemented in terms of the above overload.
I believe _aligned_free is only on Windows. So it looks like nothing special is
done at the moment, but no guarantee that won't change so I will add builtins.

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to