[libcxx-commits] [PATCH] D88301: [libc++] Clean up logic around aligned/sized allocation and deallocation

Louis Dionne via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Fri Sep 25 10:49:02 PDT 2020


ldionne added a comment.

In D88301#2295416 <https://reviews.llvm.org/D88301#2295416>, @hubert.reinterpretcast wrote:

> I don't think this patch makes sense given D87611 <https://reviews.llvm.org/D87611>. @Kai, @fanbo-meng, @abhina.sreeskantharajan, @zibi, fya.
>
>   <stdin>:6:3: error: aligned allocation function of type 'void *(unsigned long, enum std::align_val_t)' is not available on z/OS
>     __builtin_operator_new(sizeof(int), static_cast<std::align_val_t>(16));
>     ^

I think it does. The issue is that we're not detecting `_LIBCPP_HAS_NO_ALIGNED_ALLOCATION` properly.

That macro is defined as:

  #if !defined(_LIBCPP_HAS_NO_ALIGNED_ALLOCATION) && \
      (defined(_LIBCPP_HAS_NO_LIBRARY_ALIGNED_ALLOCATION) || \
      (!defined(__cpp_aligned_new) || __cpp_aligned_new < 201606))
  #  define _LIBCPP_HAS_NO_ALIGNED_ALLOCATION
  #endif

What is `__cpp_aligned_new` set to on z/OS?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D88301/new/

https://reviews.llvm.org/D88301



More information about the libcxx-commits mailing list