From nobody Thu Jun 4 11:47:26 2026 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4gWN8w0vNrz6gbp6; Thu, 04 Jun 2026 11:47:28 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from smtp.freebsd.org (smtp.freebsd.org [96.47.72.83]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "smtp.freebsd.org", Issuer "R12" (not verified)) by mx1.freebsd.org (Postfix) with ESMTPS id 4gWN8v6spfz3PML; Thu, 04 Jun 2026 11:47:27 +0000 (UTC) (envelope-from dim@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1780573648; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wSNQqAgmFs1shXRpjvFR4EY84LkmVxxDnCbWdB95IYc=; b=E6fmkt5IyJPg9yu2Nio9Wgs+fnt0L5iV1+1EVbCx99q9YKAr2xnXtTu61eF3U06vpeFNcq ew31I9QWL6hTt8koPt5ytEgYpFcbTvuD4l4CLUWqHRSygKD2jESAB0fON0onzkfJzKIy29 hOo2vp7qEBOdNDo242GB4JIEC60Pvv7+mLRh0sO4WjZG1O2JId1U+OnzQBgl2xgF881Rig 3iFZEGE8bZIE/Fq6qBYAkU2iK/DQ/fiUHJoV6KNcLOaiIRBfzwNT9mOkr10Z4X/r8w31YD pzgqMrkhoWpLVSjvmqx/zHvTPQxdwufzA38bPWmT7OeutO5ZF+nXtzFwvdBQkg== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1780573648; a=rsa-sha256; cv=none; b=cL3JVTuKRfCO1KfpC6C0M3UWKrUHUckkXL3el8zIEjkNkWM8ZmQFGDDyixlcQG4BIw4eTs /HFt3JFJB+hSGGueLZAdnLmLN2Emzgkw8YnMSaoCaBGpxOcsS6q4r7Suu2BSnDMlhlHO5G jA24xbVlyilbmyYTAqKOcwdDFhQMlWaHry6sK9HOmEPJkIL7mXmG6lhgJ0eMyK/DXOPFrU reG641sTI1kUeTUzKOOIVFmSNItIPhSivwFajfsOcoASWNYrM7CfEb8g2RWOUc3aS8Wo/+ zepOfVTQre7TOxLiQxFCA0gvvJZRdEPludmJl4y8YB8TKyLirRtZRa3CpwsA4Q== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1780573648; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=wSNQqAgmFs1shXRpjvFR4EY84LkmVxxDnCbWdB95IYc=; b=iXe8yRffu0J2xhwdnnpZVEWpCuzO4UyOG4KFEhgfgJKC+JcimStR6VewDKqM6IdW0E8DtP wvtdDH/eFLaz0cp1EvgPKHUWFP0FIqU1zz4cA6gsrqtvK35/NT9Cho+FXn9tNBoxizsxAD hCYkjnYiaOr/dMitiOyrSsQdk3StdrZAXGEm/mhY3+MMkPnlZKZxVbFJbsd8BGk3xsJW0r isTvutaTjxaA3L4jL2szt9x+O2f7wEN8qmrgvUeGaKKQXBcsN+oEVwWp+17pBWKR859TJt GV0FP+WVH+wqv1jf/Ccm6uGSLYAJDdEguR6EURaCw0ENGI32aEmBK1xWmViWRw== Received: from tensor.andric.com (tensor.andric.com [87.251.56.140]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature ECDSA (prime256v1) client-digest SHA256) (Client CN "tensor.andric.com", Issuer "YE2" (not verified)) (Authenticated sender: dim) by smtp.freebsd.org (Postfix) with ESMTPSA id 4gWN8v512qz12gH; Thu, 04 Jun 2026 11:47:27 +0000 (UTC) (envelope-from dim@FreeBSD.org) Received: from smtpclient.apple (bladnoch.home.andric.com [192.168.0.20]) (using TLSv1.2 with cipher ECDHE-ECDSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by tensor.andric.com (Postfix) with ESMTPSA id C34746B9A8; Thu, 04 Jun 2026 13:47:26 +0200 (CEST) Content-Type: text/plain; charset=us-ascii List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org List-Id: List-Post: List-Help: List-Subscribe: List-Unsubscribe: List-Owner: Precedence: list Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3826.700.81.1.8\)) Subject: Re: git: 86326398b73b - main - Merge commit 63c29df8eceb from llvm git (by Dmitry Polukhin): From: Dimitry Andric In-Reply-To: Date: Thu, 4 Jun 2026 13:47:26 +0200 Cc: src-committers@freebsd.org, dev-commits-src-all@freebsd.org, dev-commits-src-main@freebsd.org, Robert Clausecker , Faraz Vahedi Content-Transfer-Encoding: quoted-printable Message-Id: References: <6a1dbdb4.18f1f.11efe144@gitrepo.freebsd.org> To: Nuno Teixeira X-Mailer: Apple Mail (2.3826.700.81.1.8) On 4 Jun 2026, at 13:38, Dimitry Andric wrote: >=20 > On 4 Jun 2026, at 12:53, Nuno Teixeira wrote: >>=20 >> Not sure if it is related but I'm seing some ports failing recently = with errors bellow. >> ( error: no viable conversion from ... to 'bool' ) >>=20 >> Similar fails appears at pkg-fallout: >>=20 >> = https://pkg-status.freebsd.org/beefy24/data/main-amd64-default/p226b23044e= e7_s67df3130159/logs/binaryen-130.log >> = https://pkg-status.freebsd.org/beefy24/data/main-amd64-default/p226b23044e= e7_s67df3130159/logs/encryptpad-0.5.0.4_6.log >>=20 >> =46rom node24 on main-n286352-73e0d6b44038: >> ``` >> c++ -o = /wrkdirs/usr/ports/www/node24/work/node-v24.16.0/out/Release/obj.target/no= de_mksnapshot/tools/snapshot/node_mksnapshot.o = ../tools/snapshot/node_mksnapshot.cc '-D_GLIBCXX_USE_CXX11_ABI=3D1' = '-D_FILE_OFFSET_BITS=3D64' '-DNODE_OPENSSL_CONF_NAME=3Dnodejs_conf' = '-DNODE_OPENSSL_CERT_STORE' '-DICU_NO_USER_DATA_OVERRIDE' = '-D__STDC_FORMAT_MACROS' '-DNODE_WANT_INTERNALS=3D1' = '-DNODE_MKSNAPSHOT_USE_ARRAY_LITERALS=3D1' '-DHAVE_OPENSSL=3D1' = '-DNODE_USE_NODE_CODE_CACHE=3D1' '-DHAVE_INSPECTOR=3D1' '-D__POSIX__' = '-DNODE_USE_V8_PLATFORM=3D1' '-DNODE_HAVE_I18N_SUPPORT=3D1' = '-DHAVE_AMARO=3D1' '-DHAVE_SQLITE=3D1' '-DHAVE_QUIC=3D0' -I../src = -I../tools/msvs/genfiles >> -I../deps/v8/include -I../deps/cares/include -I../deps/uv/include = -I../deps/ncrypto -I../deps/v8/third_party/simdutf -Wall -Wextra = -Wno-unused-parameter -pthread -Wall -Wextra -Wno-unused-parameter = -Werror=3Dundefined-inline -Werror=3Dextra-semi = -Werror=3Dctad-maybe-unsupported -m64 -O3 -fno-omit-frame-pointer = -fno-rtti -fno-exceptions -fno-strict-aliasing -std=3Dgnu++20 -MMD -MF = /wrkdirs/usr/ports/www/node24/work/node-v24.16.0/out/Release/.deps//wrkdir= s/usr/ports/www/node24/work/node-v24.16.0/out/Release/obj.target/node_mksn= apshot/tools/snapshot/node_mksnapshot.o.d.raw -isystem = /usr/local/include -O2 -pipe -fstack-protector-strong -isystem = /usr/local/include -fno-strict-aliasing -isystem /usr/local/include = -c >> ../test/embedding/embedtest.cc:138:12: error: no viable conversion = from 'node::EmbedderSnapshotData::Pointer' (aka 'unique_ptr') to 'bool' >> 138 | assert(snapshot); >> | ^~~~~~~~ >> /usr/include/c++/v1/__memory/unique_ptr.h:276:64: note: explicit = conversion function is not a candidate >> 276 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 explicit = operator bool() const _NOEXCEPT { >> | = ^ >> ../test/embedding/embedtest.cc:216:14: error: no viable conversion = from 'node::EmbedderSnapshotData::Pointer' (aka 'unique_ptr') to 'bool' >> 216 | assert(snapshot); >> | ^~~~~~~~ >> /usr/include/c++/v1/__memory/unique_ptr.h:276:64: note: explicit = conversion function is not a candidate >> 276 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 explicit = operator bool() const _NOEXCEPT { >> | = ^ >> 2 errors generated. >> ``` >>=20 >> Any clues? >=20 > This is because converting a std::unique_ptr to bool requires an = explicit conversion, i.e. "if (my_unique_ptr)" will work, but using it = with assert() will not. >=20 > At least, our assert() as defined in /usr/include/assert.h in = -CURRENT, has this contorted definition: >=20 > #if __cplusplus < 202002L > /* > * C++ modes prior to C++20 cannot simultaneously satisfy all three > * desirable properties of the sanitiser: > * > * Approach No double-eval Lambda support = Arity check > * ----------------------------- -------------- -------------- = ----------- > * sizeof(cast(expression)) yes no yes > * static_cast(expression) no yes no > * (void)bool(expression) no yes no > * > * NOTE: C++20 introduced lambdas in unevaluated contexts; see = P0315R4. > * > * Since no approach satisfies all three below C++20, the least harmful > * choice is to forgo the check entirely rather than silently break one > * of the remaining guarantees. > * > */ > #define __assert_sanitize(...) ((void)0) > #else > #define __assert_sanitize(...) = (void)sizeof(((bool(*)(bool))0)(__VA_ARGS__)) > #endif /* __cplusplus < 202002L */ > #else > #define __assert_sanitize(...) = (void)sizeof(((_Bool(*)(_Bool))0)(__VA_ARGS__)) > #endif /* __cplusplus */ > #define assert(...) (__assert_sanitize(__VA_ARGS__), \ > (__VA_ARGS__) ? (void)0 : \ > __assert(__func__, __FILE__, \ > __LINE__, #__VA_ARGS__)) >=20 > which clearly does not work as intended. I would probalby be simpler = to to use "!!" to force an explicit boolean conversion. >=20 > For now, the ports could be fixed by changing the asserts to "ptr !=3D = nulltr", or adding an explicit static_cast. Or we should probably = fix our assert macro. That is, the following C++20 program should really successfully compile = with our assert(): #include #include void f(std::unique_ptr p) { assert(p); } but at the moment it does not: unique-ptr-assert.cpp:6:10: error: no viable conversion from = 'std::unique_ptr' to 'bool' 6 | assert(p); | ^ /usr/include/c++/v1/__memory/unique_ptr.h:276:64: note: explicit = conversion function is not a candidate 276 | _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 explicit = operator bool() const _NOEXCEPT { | ^ When compiled with -save-temps, it shows the eventual expression it dies = on: unique-ptr-assert.cpp:6:36: error: no viable conversion from = 'std::unique_ptr' to 'bool' 6 | ((void)sizeof(((bool(*)(bool))0)(p)), (p) ? (void)0 : = __assert(__func__, "unique-ptr-assert.cpp", 6, "p")); | ^ So it seems the recent changes to assert.h broke C++20 behavior. -Dimitry