From owner-freebsd-arch@FreeBSD.ORG Sun Aug 28 07:36:22 2005 Return-Path: X-Original-To: freebsd-arch@freebsd.org Delivered-To: freebsd-arch@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 56D9316A41F; Sun, 28 Aug 2005 07:36:22 +0000 (GMT) (envelope-from bde@zeta.org.au) Received: from mailout1.pacific.net.au (mailout1.pacific.net.au [61.8.0.84]) by mx1.FreeBSD.org (Postfix) with ESMTP id C19CB43D45; Sun, 28 Aug 2005 07:36:21 +0000 (GMT) (envelope-from bde@zeta.org.au) Received: from mailproxy1.pacific.net.au (mailproxy1.pacific.net.au [61.8.0.86]) by mailout1.pacific.net.au (8.13.4/8.13.4/Debian-3) with ESMTP id j7S7a9BD023483; Sun, 28 Aug 2005 17:36:09 +1000 Received: from katana.zip.com.au (katana.zip.com.au [61.8.7.246]) by mailproxy1.pacific.net.au (8.13.4/8.13.4/Debian-3) with ESMTP id j7S7a2ZT002428; Sun, 28 Aug 2005 17:36:07 +1000 Date: Sun, 28 Aug 2005 17:36:01 +1000 (EST) From: Bruce Evans X-X-Sender: bde@delplex.bde.org To: Craig Rodrigues In-Reply-To: <20050827235140.GA3063@crodrigues.org> Message-ID: <20050828172712.T86328@delplex.bde.org> References: <20050810005323.GA42721@crodrigues.org> <20050810032308.GA80916@dragon.NUXI.org> <20050827235140.GA3063@crodrigues.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed Cc: freebsd-arch@freebsd.org Subject: Re: [RFC] -Wredundant-decls: keep it or remove it? X-BeenThere: freebsd-arch@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussion related to FreeBSD architecture List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 28 Aug 2005 07:36:22 -0000 On Sat, 27 Aug 2005, Craig Rodrigues wrote: > On Tue, Aug 09, 2005 at 08:23:08PM -0700, David O'Brien wrote: >> This is a GCC bug that I am working to get fixed. > > Did you try something like this patch to GCC? > > Index: c-decl.c > =================================================================== > RCS file: /cvsroot/gcc/gcc/gcc/c-decl.c,v > retrieving revision 1.630.6.16 > diff -u -u -r1.630.6.16 c-decl.c > --- c-decl.c 16 Aug 2005 20:34:19 -0000 1.630.6.16 > +++ c-decl.c 27 Aug 2005 23:43:06 -0000 > @@ -1559,7 +1559,10 @@ > && !(DECL_EXTERNAL (olddecl) && !DECL_EXTERNAL (newdecl)) > /* Don't warn about forward parameter decls. */ > && !(TREE_CODE (newdecl) == PARM_DECL > - && TREE_ASM_WRITTEN (olddecl) && !TREE_ASM_WRITTEN (newdecl))) > + && TREE_ASM_WRITTEN (olddecl) && !TREE_ASM_WRITTEN (newdecl)) > + /* Don't warn about forward static variable decls. */ > + && !(TREE_CODE (newdecl) == VAR_DECL > + && !TREE_PUBLIC (olddecl) && !TREE_PUBLIC (newdecl))) > { > warning ("%Jredundant redeclaration of %qD", newdecl, newdecl); > warned = true; It should warn about static variable decls iff they are redundant. This requires determining if the new declaration adds info. I couldn't find any macros to help determine this, not even ones to say if the new declaration has an initializer and the old one doesn't. Also, it shouldn't say that a redundant decl is a "redundant redeclaration". All (identical) redeclarations are redundant, but not all redundancies are caused by (identical) redeclarations. Bruce