From patchwork Sat Apr 4 22:30:26 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Eczbek X-Patchwork-Id: 132694 Return-Path: X-Original-To: patchwork@sourceware.org Delivered-To: patchwork@sourceware.org Received: from vm01.sourceware.org (localhost [127.0.0.1]) by sourceware.org (Postfix) with ESMTP id 28F374BA23D6 for ; Sat, 4 Apr 2026 22:31:08 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 28F374BA23D6 Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=gmail.com header.i=@gmail.com header.a=rsa-sha256 header.s=20251104 header.b=B1DgJxIM X-Original-To: gcc-patches@gcc.gnu.org Delivered-To: gcc-patches@gcc.gnu.org Received: from mail-oa1-f65.google.com (mail-oa1-f65.google.com [209.85.160.65]) by sourceware.org (Postfix) with ESMTPS id 57B8C4BA2E2F for ; Sat, 4 Apr 2026 22:30:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 57B8C4BA2E2F Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 57B8C4BA2E2F Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=209.85.160.65 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775341830; cv=none; b=wY94u6phKjT/QGHA6yODllNq9HxB8pDYDx1CXLDCOdEuNBza/9xFthga2X8W04ztQd4IhEWpRpHf70YCSD93N2/++bF1wiI5HVZW0ZxI4mYAjqd32aqnWWfx0SLIdhqI++f+pmiaQt/gFpGldWzNAME60zt1IXW4GZTps3TLzrM= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1775341830; c=relaxed/simple; bh=W9ALUIAzrceViAXniAh19Inz4LXf20tKziV2gzj6cLQ=; h=DKIM-Signature:Message-ID:Date:MIME-Version:To:From:Subject; b=vUm53+nddtTdOPo9Ag6vVSTRiNg1fD0s+w/EvgHoIUAKHvPC48VmVg4yzDYhUkNZ4yNjZkjvOHE31L3NdNmfZkYr6MDJGGGqyyN+VugZEEe9iMHYBJPvNetI72uHtNAmSqfxOIthLQFAe+6dRCEntYaVIZfl/Q+wl9Xw68El7iI= ARC-Authentication-Results: i=1; server2.sourceware.org DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 57B8C4BA2E2F Received: by mail-oa1-f65.google.com with SMTP id 586e51a60fabf-40ea36b56b7so2392184fac.3 for ; Sat, 04 Apr 2026 15:30:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775341829; x=1775946629; darn=gcc.gnu.org; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:from:to:cc:subject:date :message-id:reply-to; bh=zFWa3qcL3Np9r4eevLAL/GiA2A7KH25CYfYsTymVJsQ=; b=B1DgJxIMuc3eqx4AjMlrUVAWLz16dZ/GwsMbqFilrT3x96AdmOp3pHTBIbwOeGiB/V ilqNENFZzAUwYHiaeisty7X4lror+RTw/O1cIknHpjZ5cPcjUlfCrR6S1ts3ChvjfIPD icJAPz/k7Zi2muO1OFM7mIez5smLydsPLsOz4HAh3eMw0ouEKg5ZrEqwLZDkxMaL7XVj zU+J6uxmZMiGPP2MuS3jTKbwapgppU/nNRRirC9Rv7YUecFFSuo394ITJCzD2JUhT0xK 9T/IQLN5IXCQiBcYaGHefZGieEbHI0Txwt4K2vQ3IYTpZ2L9JnBiEAEmXEeA6jJpjOc7 Ig6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775341829; x=1775946629; h=content-transfer-encoding:subject:from:cc:to:content-language :user-agent:mime-version:date:message-id:x-gm-gg:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=zFWa3qcL3Np9r4eevLAL/GiA2A7KH25CYfYsTymVJsQ=; b=flAG2zLHQ692xArfccj55Yfjqo+iK8Bzn0dTxZlo/PC1JnV8Aa7FNQhH1I4yCb7TvF YnWC3kORJfu4rS2vK9yjZTK7DS7RKq2rhTIpUDE9I3tGN1YpMWxInU1Qzyh8h6oc6QJu xkOygdwtX1eJbyKcV9kPARpYkJzkE8fSWnggycv4wpqRtTiKdBxFspqS67HqCxwoB38d G6vHopYsNm+3z+rKE6Idi29cG3jpTXWaaD8ap5t8pHFxyZ33nm89X8mQZt15HJr93j2c U/DO16bs/JSwqpICqyB+Z6qxWJSyClTZ/uAyUcdyGGblQHwVZXGuNbpWVgCtdprJAJHJ vjbA== X-Gm-Message-State: AOJu0YxHPhr7EniLNHzyAD5K1rHBu8OP3wLBjy5+ZSmSWfkrTnQLeREW IkmtbMA1Fnez+LFnvH6EsbjnQVsGmdlgDMbGT/sBZTY5VqdtEzs1BZsZ3J6HTUhG X-Gm-Gg: AeBDievshHnBh1MD6CV5ul7bC25Fgqk8nqcrS7u2wFYNw3NPnLJ8bJjEMqr0+r2ZVZ+ elsYvOxfjWpTlDJ4FBvl4aAWxNPCHWOpfWcL++q+3liUG0RmQQNWqI9LVpqBF+V5t0FnL0wsmBQ P0tWmRPW4C1Oycn+EYXRH++Pj5btPokS1MgXQXa/Fvk7114aTPNqOt/69gHZFEDh/h89Mjzauqv zPnh9MmRyaFW9FxyEhO3vHrpvfD7Ocdjrd0/ZYo1lKZ7JN1peFAADOEQK4sQ0hRUoaxEDQkDfxb OJxqOlUGN4FZmbpPh/e4oosKQOCIuUdNIzA+WtJjY+VtRMa8dAik8bBcyDSUBviTBRx5BbP2cTe EKpAFp90Wz2MWN80YkG5Q5gbqTJlP2RNRp40ucgnfc6pvkHj0O5raXqUFwkub+JsdkT7XcM7P7t NqJi5KpbZIhuGisss79Q+zh5ijkB+8mUbawQZisg3Nnc55gc6J5ayhCRs6KXIWCgwmWiIBqk+qL vaX6XH9 X-Received: by 2002:a05:6870:f220:b0:3e8:970e:d4f7 with SMTP id 586e51a60fabf-4230fd199d5mr4346894fac.11.1775341828937; Sat, 04 Apr 2026 15:30:28 -0700 (PDT) Received: from [10.134.55.64] (108-216-84-41.lightspeed.stlsmo.sbcglobal.net. [108.216.84.41]) by smtp.gmail.com with ESMTPSA id 586e51a60fabf-422eaed6647sm8480365fac.2.2026.04.04.15.30.27 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 04 Apr 2026 15:30:28 -0700 (PDT) Message-ID: Date: Sat, 4 Apr 2026 18:30:26 -0400 MIME-Version: 1.0 User-Agent: Betterbird (Linux) Content-Language: en-US To: gcc-patches@gcc.gnu.org Cc: Jason Merrill From: Eczbek Subject: [PATCH] c++: Fix unary negation of nullptr [PR123087] X-Spam-Status: No, score=-10.3 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, FREEMAIL_FROM, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on sourceware.org X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gcc-patches-bounces~patchwork=sourceware.org@gcc.gnu.org From 2ace27c73fd513bc63f16d28bc7c13dfd33be552 Mon Sep 17 00:00:00 2001 From: Eczbek Date: Sat, 21 Mar 2026 04:23:13 -0400 Subject: [PATCH] c++: Fix unary negation of nullptr [PR123087]     [expr.unary.op] paragraph 9 says that the operand is     contextually converted to bool, so this should be legal.     PR c++/123087 gcc/cp/ChangeLog:     * typeck.cc (cp_build_unary_op): For TRUTH_NOT_EXPR, replace     call to perform_implicit_conversion with call to     contextual_conv_bool. gcc/testsuite/ChangeLog:     * g++.dg/DRs/dr1423.C: Additonal test. ---  gcc/cp/typeck.cc | 3 +--  gcc/testsuite/g++.dg/DRs/dr1423.C | 1 +  2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gcc/cp/typeck.cc b/gcc/cp/typeck.cc index 79eb3b5ba28..e019d6e22a9 100644 --- a/gcc/cp/typeck.cc +++ b/gcc/cp/typeck.cc @@ -7854,8 +7854,7 @@ cp_build_unary_op (enum tree_code code, tree xarg, bool noconvert, if (gnu_vector_type_p (TREE_TYPE (arg))) return cp_build_binary_op (input_location, EQ_EXPR, arg, build_zero_cst (TREE_TYPE (arg)), complain); - arg = perform_implicit_conversion (boolean_type_node, arg, - complain); + arg = contextual_conv_bool (arg, complain); if (arg != error_mark_node) { if (processing_template_decl) diff --git a/gcc/testsuite/g++.dg/DRs/dr1423.C b/gcc/testsuite/g++.dg/DRs/dr1423.C index d82baae9985..75bc5e0bc99 100644 --- a/gcc/testsuite/g++.dg/DRs/dr1423.C +++ b/gcc/testsuite/g++.dg/DRs/dr1423.C @@ -5,3 +5,4 @@ bool b = nullptr; // { dg-error "converting to .bool. from .std::nullptr_t. requ  bool b2(nullptr);  bool b3{nullptr};  bool b4 = { nullptr }; // { dg-error "converting to .bool. from .std::nullptr_t. requires direct-initialization" } +bool b5 = !nullptr;