[all-commits] [llvm/llvm-project] 29cc80: Fix issue with never-constexpr __construct_at in C...

Eric via All-commits all-commits at lists.llvm.org
Fri Apr 5 09:16:38 PDT 2024


  Branch: refs/heads/main
  Home:   https://github.com/llvm/llvm-project
  Commit: 29cc80f4ecafe45586401ce4a79b324b6240b6e9
      https://github.com/llvm/llvm-project/commit/29cc80f4ecafe45586401ce4a79b324b6240b6e9
  Author: Eric <eric at efcs.ca>
  Date:   2024-04-05 (Fri, 05 Apr 2024)

  Changed paths:
    M libcxx/include/__memory/construct_at.h

  Log Message:
  -----------
  Fix issue with never-constexpr __construct_at in C++ < 20. (#87403)

The application of constexpr to __construct_at triggers weird linker
errors when building LLVM with modules enabled and C++ < 20.

> ld.lld: error: undefined hidden symbol: void*
std::__1::__voidify[abi:nn190000]<llvm::sys::ProcessStatistics>(llvm::sys::ProcessStatistics&)
>>>> referenced by construct_at.h:52
(/usr/local/bin/../include/c++/v1/__memory/construct_at.h:52)
>>>> Program.cpp.o:(llvm::sys::Wait(llvm::sys::ProcessInfo const&,
std::__1::optional<unsigned int>, std::__1::basic_string<char,
std::__1::char_traits<char>, std::__1::allocator<char>>*,
std::__1::optional<llvm::sys::ProcessStatistics>*, bool)) in archive
lib/libLLVMSupport.a

I suspect this is related to undefined behavior caused by the fact that
construct_at is never really constexpr (which is UB NDR).

I'm unsure how to meaningfully write a test for this, as I haven't been
able to trigger it in smaller unit tests



To unsubscribe from these emails, change your notification settings at https://github.com/llvm/llvm-project/settings/notifications


More information about the All-commits mailing list