This is the mail archive of the gcc-patches@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] -Wredundant-decls, do not warn for static forward decl


On Tue, Aug 30, 2005 at 10:23:14PM +0000, Joseph S. Myers wrote:
> As I understand this patch, it would lose both warnings for
> 
> static int i; 
> static int i = 1;
> static int i;

Based on help from Andrew Pinski, I modified my patch.

2005-8-31  Craig Rodrigues  <rodrigc@gcc.gnu.org>

        * c-decl.c (diagnose_mismatched_decls):  With -Wredundant-decls,
        do not issue warning for static forward declaration of static variables.

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	31 Aug 2005 04:55:40 -0000
@@ -1559,7 +1559,11 @@
       && !(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)
+	   && DECL_INITIAL (newdecl) && !DECL_INITIAL (olddecl)))
     {
       warning ("%Jredundant redeclaration of %qD", newdecl, newdecl);
       warned = true;


I duplicated the logic for function decls followed by a function definition
in the same if statement.  I also have an attached testcase.

-- 
Craig Rodrigues        
rodrigc@crodrigues.org

Attachment: Wredundant-decls-2.c
Description: Text document


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]