[libcxx-commits] [PATCH] D68364: Implement C++20's P0784 (More constexpr containers)

Leonard Chan via Phabricator via libcxx-commits libcxx-commits at lists.llvm.org
Thu Sep 24 16:35:21 PDT 2020


leonardchan added a comment.

Hi. Our GCC builders are failing with

  [182/12433] CXX kernel-x64-gcc/obj/kernel/lib/ktl/ktl.dummy-new.cc.o
  FAILED: kernel-x64-gcc/obj/kernel/lib/ktl/ktl.dummy-new.cc.o
  /b/s/w/ir/k/fuchsia/prebuilt/third_party/goma/linux-x64/gomacc  ../../prebuilt/third_party/gcc/linux-x64/bin/x86_64-elf-g++ -MD -MF kernel-x64-gcc/obj/kernel/lib/ktl/ktl.dummy-new.cc.o.d -o kernel-x64...
  In file included from ../../zircon/kernel/lib/ktl/dummy-new.cc:7:
  ../../prebuilt/third_party/clang/linux-x64/include/c++/v1/new: In function 'constexpr void* std::__2::__libcpp_allocate(size_t, size_t)':
  ../../prebuilt/third_party/clang/linux-x64/include/c++/v1/new:252:24: error: call to non-'constexpr' function 'void* operator new(size_t)'
    252 |   return ::operator new(__size);
        |          ~~~~~~~~~~~~~~^~~~~~~~
  In file included from ../../zircon/kernel/lib/ktl/dummy-new.cc:7:
  ../../prebuilt/third_party/clang/linux-x64/include/c++/v1/new:186:66: note: 'void* operator new(size_t)' declared here
    186 | _LIBCPP_NODISCARD_AFTER_CXX17 _LIBCPP_OVERRIDABLE_FUNC_VIS void* operator new(std::size_t __sz) _THROW_BAD_ALLOC;
        |                                                                  ^~~~~~~~

I presume it's because `_LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE` is defined from

  #if !__has_builtin(__builtin_operator_new) || !__has_builtin(__builtin_operator_delete)
  #define _LIBCPP_HAS_NO_BUILTIN_OPERATOR_NEW_DELETE
  #endif

Is there a recommended way for working around this? We're using GCC 10.2.1. Thanks.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D68364



More information about the libcxx-commits mailing list