From patchwork Thu Nov 24 01:09:49 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paolo Carlini X-Patchwork-Id: 127410 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from sourceware.org (server1.sourceware.org [209.132.180.131]) by ozlabs.org (Postfix) with SMTP id 566FB1007D7 for ; Thu, 24 Nov 2011 12:10:57 +1100 (EST) Received: (qmail 14535 invoked by alias); 24 Nov 2011 01:10:55 -0000 Received: (qmail 14527 invoked by uid 22791); 24 Nov 2011 01:10:54 -0000 X-SWARE-Spam-Status: No, hits=-2.8 required=5.0 tests=AWL, BAYES_00, RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from acsinet15.oracle.com (HELO acsinet15.oracle.com) (141.146.126.227) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Thu, 24 Nov 2011 01:10:40 +0000 Received: from acsinet22.oracle.com (acsinet22.oracle.com [141.146.126.238]) by acsinet15.oracle.com (Switch-3.4.4/Switch-3.4.4) with ESMTP id pAO1Ac3J015422 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Thu, 24 Nov 2011 01:10:39 GMT Received: from acsmt358.oracle.com (acsmt358.oracle.com [141.146.40.158]) by acsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id pAO1AbXI023956 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Thu, 24 Nov 2011 01:10:38 GMT Received: from abhmt108.oracle.com (abhmt108.oracle.com [141.146.116.60]) by acsmt358.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id pAO1AWZF015788; Wed, 23 Nov 2011 19:10:32 -0600 Received: from [192.168.1.4] (/79.52.211.129) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Wed, 23 Nov 2011 17:10:32 -0800 Message-ID: <4ECD995D.9080000@oracle.com> Date: Thu, 24 Nov 2011 02:09:49 +0100 From: Paolo Carlini User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:7.0.1) Gecko/20110929 Thunderbird/7.0.1 MIME-Version: 1.0 To: "gcc-patches@gcc.gnu.org" CC: Jason Merrill Subject: [C++ Patch] PR 51290 X-IsSubscribed: yes Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Unsubscribe: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Delivered-To: mailing list gcc-patches@gcc.gnu.org Hi, another case of spurious -Wzero-as-null-pointer-constant, rather straightforward fix, IMHO. Well, with hindsight, I should have grepped more carefully for integer_zero_node, a couple of weeks ago ;) Anyway, tested x86_64-linux. Ok? Thanks, Paolo. /////////////////// /cp 2011-11-23 Paolo Carlini PR c++/51290 * class.c (build_base_path): For pointers, use nullptr_node instead of integer_zero_node. /testsuite 2011-11-23 Paolo Carlini PR c++/51290 * g++.dg/warn/Wzero-as-null-pointer-constant-3.C: New. Index: testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-3.C =================================================================== --- testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-3.C (revision 0) +++ testsuite/g++.dg/warn/Wzero-as-null-pointer-constant-3.C (revision 0) @@ -0,0 +1,22 @@ +// PR c++/51290 +// { dg-options "-Wzero-as-null-pointer-constant" } + +class A { int a; }; + +class B { int b; }; + +class C : public A, public B +{ + private: + static void foo (A *x) + { + C *y = static_cast(x); + (void) y; + } + + static void bar (B *x) + { + C *y = static_cast(x); + (void) y; + } +}; Index: cp/class.c =================================================================== --- cp/class.c (revision 181678) +++ cp/class.c (working copy) @@ -338,7 +338,8 @@ build_base_path (enum tree_code code, /* Now that we've saved expr, build the real null test. */ if (null_test) { - tree zero = cp_convert (TREE_TYPE (expr), integer_zero_node); + tree zero = cp_convert (TREE_TYPE (expr), + want_pointer ? nullptr_node : integer_zero_node); null_test = fold_build2_loc (input_location, NE_EXPR, boolean_type_node, expr, zero); }