From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 119311 invoked by alias); 9 Sep 2015 22:01:11 -0000 Mailing-List: contact gcc-patches-help@gcc.gnu.org; run by ezmlm Precedence: bulk List-Id: List-Archive: List-Post: List-Help: Sender: gcc-patches-owner@gcc.gnu.org Received: (qmail 119297 invoked by uid 89); 9 Sep 2015 22:01:10 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.2 required=5.0 tests=AWL,BAYES_00,KAM_LAZY_DOMAIN_SECURITY,SPF_HELO_PASS,T_RP_MATCHES_RCVD autolearn=no version=3.3.2 X-HELO: mx1.redhat.com Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with (AES256-GCM-SHA384 encrypted) ESMTPS; Wed, 09 Sep 2015 22:01:09 +0000 Received: from int-mx14.intmail.prod.int.phx2.redhat.com (int-mx14.intmail.prod.int.phx2.redhat.com [10.5.11.27]) by mx1.redhat.com (Postfix) with ESMTPS id 618FAA1453 for ; Wed, 9 Sep 2015 22:01:08 +0000 (UTC) Received: from localhost.localdomain (ovpn-113-28.phx2.redhat.com [10.3.113.28]) by int-mx14.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t89M17cM007476; Wed, 9 Sep 2015 18:01:07 -0400 Subject: Re: [PATCH] Warn when comparing nonnull arguments to NULL in a function. To: Mark Wielaard , gcc-patches@gcc.gnu.org References: <1441835087-14555-1-git-send-email-mjw@redhat.com> From: Jeff Law Message-ID: <55F0AC23.2010905@redhat.com> Date: Wed, 09 Sep 2015 22:02:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101 Thunderbird/38.2.0 MIME-Version: 1.0 In-Reply-To: <1441835087-14555-1-git-send-email-mjw@redhat.com> Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-IsSubscribed: yes X-SW-Source: 2015-09/txt/msg00624.txt.bz2 On 09/09/2015 03:44 PM, Mark Wielaard wrote: > The following found 14 bugs in my code base. I think it is useful to > warn about such usage since they are bugsr. If the argument is marked > as nonnull then passing in a NULL argument will produce bad results > even if the code checks against NULL. > > GCC might optimize such checks away so warn the user when the function > contains such comparisions. > > nn.c: In function ‘foo’: > nn.c:6:27: warning: nonnull argument ‘bar’ compared to NULL [-Wnonnull] > void foo(void *bar) { if (!bar) abort(); } > ^ > gcc/c/ChangeLog > > * c-typeck.c (build_binary_op): Check and warn when nonnull arg > parm against NULL. > > gcc/cp/ChangeLog > > * typeck.c (cp_build_binary_op): Check and warn when nonnull arg > parm against NULL. > > gcc/testsuite/ChangeLog > > * gcc.dg/nonnull-4.c: New test. > * g++.dg/warn/nonnull3.C: Likewise. Can you also upate the -Wnonnull documentation in invoke.texi to indicate it also will warn if it discovers a non-null argument that is compared against null? With the doc fix and a bootstrap/regression test, this patch ought to be fine. jeff