diff options
author | Eric <eric@efcs.ca> | 2024-04-05 12:16:17 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-05 12:16:17 -0400 |
commit | 29cc80f4ecafe45586401ce4a79b324b6240b6e9 (patch) | |
tree | 7d2ab6fdf4ee42d511b8892aa0d5c4f6fb584b04 /llvm/lib/Support/CommandLine.cpp | |
parent | a671ceec3343063a4e6f45c231791ff925abedb5 (diff) | |
download | llvm-29cc80f4ecafe45586401ce4a79b324b6240b6e9.zip llvm-29cc80f4ecafe45586401ce4a79b324b6240b6e9.tar.gz llvm-29cc80f4ecafe45586401ce4a79b324b6240b6e9.tar.bz2 |
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
Diffstat (limited to 'llvm/lib/Support/CommandLine.cpp')
0 files changed, 0 insertions, 0 deletions