From owner-freebsd-hackers@FreeBSD.ORG Mon Feb 2 19:42:40 2009 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 325B110656DF for ; Mon, 2 Feb 2009 19:42:40 +0000 (UTC) (envelope-from christoph.mallon@gmx.de) Received: from mail.gmx.net (mail.gmx.net [213.165.64.20]) by mx1.freebsd.org (Postfix) with SMTP id 6AAE78FC0A for ; Mon, 2 Feb 2009 19:42:39 +0000 (UTC) (envelope-from christoph.mallon@gmx.de) Received: (qmail invoked by alias); 02 Feb 2009 19:42:34 -0000 Received: from p54A3EDDF.dip.t-dialin.net (EHLO tron.homeunix.org) [84.163.237.223] by mail.gmx.net (mp057) with SMTP; 02 Feb 2009 20:42:34 +0100 X-Authenticated: #1673122 X-Provags-ID: V01U2FsdGVkX1/8MjBXETT8bsjWvjze1RqjY+hyEi7kD9eyqnhpOS 8CsIyE2IX2eLVi Message-ID: <49874CA8.5090605@gmx.de> Date: Mon, 02 Feb 2009 20:42:32 +0100 From: Christoph Mallon User-Agent: Thunderbird 2.0.0.19 (X11/20090103) MIME-Version: 1.0 To: FreeBSD Current , FreeBSD Hackers Content-Type: text/plain; charset=ISO-8859-15; format=flowed Content-Transfer-Encoding: 7bit X-Y-GMX-Trusted: 0 X-FuHaFi: 0.5600000000000001 Cc: Subject: write-only variables in src/sys/ - possible bugs X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 02 Feb 2009 19:42:41 -0000 Hi, I compiled a list of all local variables in src/sys/ (r188000), which are only written to, but never read. This is more than the GCC warning, which only complains about variables, which are only declared (and maybe initialised) and not used otherwise. In contrast this list contains variables with the following usage pattern: int w = 42; // GCC warns about this ... int x; // ... but not this x = 23; x++; return 0; The list contains about 700 entries. About three dozen concern variables named 'error'. Here's one *example* from the list: sys/dev/kbdmux/kbdmux.c:1304 In the function kbdmux_modevent() the variable 'error' is assigned values eight times, but at the end of the function there is just a return 0; and the variable is never read. Probably the value should be returned. You can find the list here: http://tron.homeunix.org/unread_variables.log The list was generated by cparser, a C99 compiler, which uses libFIRM for optimisation and code generation (lang/cparser in the ports). A small disclaimer: There might be some false positives due to errors which are caused by HEAD sources in combination with my installed 7.x headers plus a hacked up build process. Also some warnings are the result from variables, which are only used in debug macros, so td = curthread; KASSERT(td != NULL); provokes a warning (I consider this bad style). Nonetheless the number of false positives should be low. If there is interest, then I can compile a "proper" list.