From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [170.10.129.124]) by sourceware.org (Postfix) with ESMTPS id 07E6C3858C50 for ; Fri, 20 Jan 2023 19:37:23 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 07E6C3858C50 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=redhat.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=redhat.com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1674243443; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=f4NfV7N1TGoqMenZmlnRmLhEDQ0utJEZmfHD3OqP4dQ=; b=DC2eh0XBn32mLrnv2UPTGPd6xgUfjIXwQ2WgMHKjuHggYFxP/rc27gqYpi9Vdi3JfwqrK7 dnz1ANE7to75Iw5ej7njAXtawSHGledZi6nfT7qtfDvmfJ2BBHAfvU67whC0Q4V7mL11wA muvIBeextvKKTgGpvRutwkdxx9I/Vtc= Received: from mail-qk1-f199.google.com (mail-qk1-f199.google.com [209.85.222.199]) by relay.mimecast.com with ESMTP with STARTTLS (version=TLSv1.3, cipher=TLS_AES_128_GCM_SHA256) id us-mta-75-nN5A9tLvNDynelDhHlVJWg-1; Fri, 20 Jan 2023 14:37:22 -0500 X-MC-Unique: nN5A9tLvNDynelDhHlVJWg-1 Received: by mail-qk1-f199.google.com with SMTP id ay34-20020a05620a17a200b00704bd9922c4so4072121qkb.12 for ; Fri, 20 Jan 2023 11:37:22 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:in-reply-to:from:references:to :content-language:subject:user-agent:mime-version:date:message-id :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=f4NfV7N1TGoqMenZmlnRmLhEDQ0utJEZmfHD3OqP4dQ=; b=E4zH535rSXClsqujgV3sbw3qxggCY5l6k52TUc9PEOVdHjh+19vvnUSb2uwDExNKG0 khiSSVF9pews3MHaHMfAlxv6+pkkpb7083mMlRZaRF3ixlqOxDbaUnmlHDOLjVyMxaJ0 jj7GraUvqudjFYY59h6fymNPgB66DIHL/q8eRsSs2+r73vHCznKeWz4nDOxuI3lnTFww u3z6cS0o2ykMZiO4w0Cghxu8Fwag93hsy5uN+Yw7Ih6QxXrtSdXE86I6315u83fgOWyl vLhuo5y/VPcbaZhGV7ZBD8zQq7h1GgtoavxqMTACFURLNupTxztTVGX3yUtzjHjaXoUP qpMA== X-Gm-Message-State: AFqh2kpAA7dz/xmXtO1gVYKgQE/6tQMvYbAyXRTIBQkNrFGhQienU1Z8 6cw2JXQ7nauSvLQgpISphSH1EX/E076DgDReSQDAvpSFIC2dPpYL3vMc2masM/q1CMYatjT6GQ+ W3hH1kR/1KXnn9eKY7w== X-Received: by 2002:ac8:7f02:0:b0:3ad:17ca:c3f with SMTP id f2-20020ac87f02000000b003ad17ca0c3fmr28217091qtk.35.1674243441585; Fri, 20 Jan 2023 11:37:21 -0800 (PST) X-Google-Smtp-Source: AMrXdXvGLkFaTeBdBY/ACw8kIXmxmNsTFjrj6zr0iKQcXHDpj4/2+RtjEHdKeXWHl/FVilv+oUxMFg== X-Received: by 2002:ac8:7f02:0:b0:3ad:17ca:c3f with SMTP id f2-20020ac87f02000000b003ad17ca0c3fmr28217054qtk.35.1674243441250; Fri, 20 Jan 2023 11:37:21 -0800 (PST) Received: from [192.168.1.108] (130-44-159-43.s15913.c3-0.arl-cbr1.sbo-arl.ma.cable.rcncustomer.com. [130.44.159.43]) by smtp.gmail.com with ESMTPSA id jt14-20020a05622aa00e00b003adc7f652a0sm17206332qtb.66.2023.01.20.11.37.20 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Fri, 20 Jan 2023 11:37:20 -0800 (PST) Message-ID: Date: Fri, 20 Jan 2023 14:37:19 -0500 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH] c++: Quash bogus -Wunused-value with new [PR107797] To: Marek Polacek , GCC Patches References: <20230120020339.1025075-1-polacek@redhat.com> From: Jason Merrill In-Reply-To: <20230120020339.1025075-1-polacek@redhat.com> X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Language: en-US Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Status: No, score=-12.5 required=5.0 tests=BAYES_00,DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,NICE_REPLY_A,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: On 1/19/23 21:03, Marek Polacek wrote: > We shouldn't emit "right operand of comma operator has no effect" > when that comma operator was created by the compiler for "new int{}". > convert_to_void/COMPOUND_EXPR already checks warning_suppressed_p so > we can just suppress -Wunused-value. > > Bootstrapped/regtested on x86_64-pc-linux-gnu, ok for trunk? > > PR c++/107797 > > gcc/cp/ChangeLog: > > * cvt.cc (ocp_convert): copy_warning when creating a new > COMPOUND_EXPR. > * init.cc (build_new_1): Suppress -Wunused-value on > compiler-generated COMPOUND_EXPRs. > > gcc/testsuite/ChangeLog: > > * g++.dg/warn/Wunused-value-1.C: New test. > --- > gcc/cp/cvt.cc | 6 ++++-- > gcc/cp/init.cc | 2 ++ > gcc/testsuite/g++.dg/warn/Wunused-value-1.C | 12 ++++++++++++ > 3 files changed, 18 insertions(+), 2 deletions(-) > create mode 100644 gcc/testsuite/g++.dg/warn/Wunused-value-1.C > > diff --git a/gcc/cp/init.cc b/gcc/cp/init.cc > index f816c474cef..52e96fbe590 100644 > --- a/gcc/cp/init.cc > +++ b/gcc/cp/init.cc > @@ -3800,6 +3800,8 @@ build_new_1 (vec **placement, tree type, tree nelts, > if (cookie_expr) > rval = build2 (COMPOUND_EXPR, TREE_TYPE (rval), cookie_expr, rval); > > + suppress_warning (rval, OPT_Wunused_value); This makes sense, but IIUC since rval is built with no location, this just sets nowarning_flag? > if (rval == data_addr && TREE_CODE (alloc_expr) == TARGET_EXPR) > /* If we don't have an initializer or a cookie, strip the TARGET_EXPR > and return the call (which doesn't need to be adjusted). */ > diff --git a/gcc/cp/cvt.cc b/gcc/cp/cvt.cc > index 0cbfd8060cb..17827d06a4a 100644 > --- a/gcc/cp/cvt.cc > +++ b/gcc/cp/cvt.cc > @@ -711,8 +711,10 @@ ocp_convert (tree type, tree expr, int convtype, int flags, > return error_mark_node; > if (e == TREE_OPERAND (expr, 1)) > return expr; > - return build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (e), > - TREE_OPERAND (expr, 0), e); > + e = build2_loc (EXPR_LOCATION (expr), COMPOUND_EXPR, TREE_TYPE (e), > + TREE_OPERAND (expr, 0), e); > + copy_warning (e, expr); And so I don't know what effect this would have; copy_warning doesn't seem to propagate nowarning_flag, which seems like a bug. > + return e; > } > > complete_type (type); > diff --git a/gcc/testsuite/g++.dg/warn/Wunused-value-1.C b/gcc/testsuite/g++.dg/warn/Wunused-value-1.C > new file mode 100644 > index 00000000000..2ba5587fce0 > --- /dev/null > +++ b/gcc/testsuite/g++.dg/warn/Wunused-value-1.C > @@ -0,0 +1,12 @@ > +// PR c++/107797 > +// { dg-do compile { target c++11 } } > +// { dg-options "-Wunused" } > + > +void > +g () > +{ > + (long) new int{}; > + long(new int{}); > + (long) new int(); > + long(new int()); > +} > > base-commit: 86caab6c5d1e26e1c54c3dceacc873d6e27bfc09