V8 build error with 22.7.0
Like https://github.com/nodejs/node/issues/53633 which was for gcc 12 and fixed in commit f4a7ac5e1842c0f4629a0bebfda38f2502a2ee41 but with clang 15.0.7 on x86_64 linux I get the exact same build error:
../deps/v8/src/base/small-vector.h:25:3: error: static assertion failed due to requirement '::v8::base::is_trivially_copyable<std::pair<const v8::internal::com
piler::turboshaft::PhiOp *, const v8::internal::compiler::turboshaft::OpIndex>>::value': T should be trivially copyable
ASSERT_TRIVIALLY_COPYABLE(T);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
../deps/v8/src/base/macros.h:211:3: note: expanded from macro 'ASSERT_TRIVIALLY_COPYABLE'
static_assert(::v8::base::is_trivially_copyable<T>::value, \
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../deps/v8/src/compiler/turboshaft/loop-unrolling-reducer.h:431:65: note: in instantiation of template class 'v8::base::SmallVector<std::pair<const v8::interna
l::compiler::turboshaft::PhiOp *, const v8::internal::compiler::turboshaft::OpIndex>, 16>' requested here
base::SmallVector<std::pair<const PhiOp*, const OpIndex>, 16> phis;
Maybe just remove that ASSERT_TRIVIALLY_COPYABLE? Upstream already tests for correctness and to us it's just a recurring source of build breakage.
Another option would be to pile the affected clang versions onto the ifdef mixture. According to the minimal repro this seems specific to clang 15 (doesn't reproduce on neither clang 14.0.0 nor 16.0.0)
Actually I remember we are using clang 15 for macOS in the canary CI? @targos
There's nothing special about the canary CI. It's using the same machines and config as main
According to https://en.wikipedia.org/wiki/Xcode#Xcode_11.0_-14.x(since_SwiftUI_framework)_2, clang 15 wasn't included for a long time in Xcode (it's the LLVM column):
I've seen this bug with both clang 14 and 15. What do our buildbots use? 16?
Forgot to mention, I have a patch ready for upstreaming but I'd like to narrow down the range of broken clangs.
In Jenkins, the buildbots use Clang 12 In GitHub actions, it seems to be Apple Clang 15 (LLVM 16).
(on macOS)
on Linux, I think we only use Clang in GitHub actions, and it's on version 18.
Just hit this with FreeBSD 13.3 and clang 17.0.6.
FreeBSD clang version 17.0.6 (https://github.com/llvm/llvm-project.git llvmorg-17.0.6-0-g6009708b4367)
Target: x86_64-unknown-freebsd13.3
Thread model: posix
InstalledDir: /usr/bin
https://chromium-review.googlesource.com/c/v8/v8/+/5872655 - restricted to clang <= 17.
https://chromium-review.googlesource.com/c/v8/v8/+/5872655 - restricted to clang <= 17.
FYI I tried this out on FreeBSD 13 (clang 17.0.6) but that hasn't fixed the build.
(CI with https://github.com/richardlau/node-1/commit/953b8e35be14ca2985f2357714e06a859da6f33c): https://ci.nodejs.org/job/richardlau-node-test-commit-freebsd/11/nodes=freebsd13-x64/consoleFull
This is still happening with Node v22.14.0 and FreeBSD 14.2 and clang 18.1.5
Looks like I forgot to merge the upstream patch. It took a couple of days to get reviewed and I get way too much email so I probably missed the notification.
I'm not that invested myself anymore but @renchap you're welcome to adopt and resubmit it, no attribution required.
@bnoordhuis Is it alright if I re-submit the patch?
Seeing the same problem on FreeBSD 15.0-BETA4 with clang 19