diff mbox series

Minor warning option sync with clang

Message ID c4f2bee7-22f0-0451-fd78-78a1912a82b6@lauterbach.com
State New
Headers show
Series Minor warning option sync with clang | expand

Commit Message

Franz Sirl Jan. 22, 2018, 9:36 a.m. UTC
Hi,

a mail in the gcc-list https://gcc.gnu.org/ml/gcc/2018-01/msg00144.html
reminded me about this minor stuff I have (so it can be controlled by 
-Werror),
but never managed to write testcases. I'm posting it here in case
it's good enough or someone wants to take over from here.

Franz


c/ChangeLog;
2018-01-22  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

     * c-decl.c (grokdeclarator): Use OPT_Wextern_initializer.
     * c-typeck.c (build_binary_op): Use
     OPT_Wcompare_distinct_pointer_types.


c-family/ChangeLog:
2018-01-22  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

     * c.opt (-Wcompare-distinct-pointer-types): New option.
     (-Wextern-initializer): Likewise.


cp/ChangeLog:
2018-01-22  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

     * decl.c (grokdeclarator): Use OPT_Wextern_initializer.
     * typeck.c (composite_pointer_error): Use
     OPT_Wcompare_distinct_pointer_types.
diff mbox series

Patch

Index: gcc-trunk/gcc/c-family/c.opt
===================================================================
--- gcc-trunk/gcc/c-family/c.opt	(revision 256939)
+++ gcc-trunk/gcc/c-family/c.opt	(working copy)
@@ -318,10 +318,6 @@ 
 alloca, and on bounded uses of alloca whose bound can be larger than
 <number> bytes.
 
-Warray-bounds
-LangEnabledBy(C ObjC C++ ObjC++,Wall)
-; in common.opt
-
 Warray-bounds=
 LangEnabledBy(C ObjC C++ ObjC++,Wall,1,0)
 ; in common.opt
@@ -420,6 +416,10 @@ 
 C ObjC C++ ObjC++ Warning Alias(Wcomment)
 Synonym for -Wcomment.
 
+Wcompare-distinct-pointer-types
+C ObjC C++ ObjC++ Var(warn_distinct_pointer_types) Init(1) Warning
+Warn for comparison of distinct pointer types.
+
 Wconditionally-supported
 C++ ObjC++ Var(warn_conditionally_supported) Warning
 Warn for conditionally-supported constructs.
@@ -512,6 +512,10 @@ 
 C ObjC RejectNegative Warning Alias(Werror=, implicit-function-declaration)
 This switch is deprecated; use -Werror=implicit-function-declaration instead.
 
+Wextern-initializer
+C ObjC C++ ObjC++ Var(warn_extern_initializer) Init(1) Warning
+Warn about extern declarations with an initializer.
+
 Wextra
 C ObjC C++ ObjC++ Warning
 ; in common.opt
@@ -694,6 +698,10 @@ 
 C C++ Common Var(warn_misleading_indentation) Warning LangEnabledBy(C C++,Wall)
 Warn when the indentation of the code does not reflect the block structure.
 
+Wmisleading-indentation-ltb
+C C++ Common Var(warn_misleading_indentation_ltb) Warning
+Warn when the indentation of the code does not reflect the block structure.
+
 Wmissing-braces
 C ObjC C++ ObjC++ Var(warn_missing_braces) Warning LangEnabledBy(C ObjC,Wall)
 Warn about possibly missing braces around initializers.
Index: gcc-trunk/gcc/c/c-decl.c
===================================================================
--- gcc-trunk/gcc/c/c-decl.c	(revision 256939)
+++ gcc-trunk/gcc/c/c-decl.c	(working copy)
@@ -5888,8 +5888,8 @@ 
            /* It is fine to have 'extern const' when compiling at C
               and C++ intersection.  */
            if (!(warn_cxx_compat && constp))
-             warning_at (loc, 0, "%qE initialized and declared %<extern%>",
-		 	 name);
+             warning_at (loc, OPT_Wextern_initializer,
+			 "%qE initialized and declared %<extern%>", name);
          }
       else
 	error_at (loc, "%qE has both %<extern%> and initializer", name);
Index: gcc-trunk/gcc/cp/decl.c
===================================================================
--- gcc-trunk/gcc/cp/decl.c	(revision 256939)
+++ gcc-trunk/gcc/cp/decl.c	(working copy)
@@ -12408,7 +12408,8 @@ 
 	    /* It's common practice (and completely valid) to have a const
 	       be initialized and declared extern.  */
 	    if (!(type_quals & TYPE_QUAL_CONST))
-	      warning (0, "%qs initialized and declared %<extern%>", name);
+	      warning_at (input_location, OPT_Wextern_initializer,
+			  "%qs initialized and declared %<extern%>", name);
 	  }
 	else
 	  {
Index: gcc-trunk/gcc/c/c-typeck.c
===================================================================
--- gcc-trunk/gcc/c/c-typeck.c	(revision 256939)
+++ gcc-trunk/gcc/c/c-typeck.c	(working copy)
@@ -11599,8 +11599,9 @@ 
 	  else
 	    /* Avoid warning about the volatile ObjC EH puts on decls.  */
 	    if (!objc_ok)
-	      pedwarn (location, 0,
-		       "comparison of distinct pointer types lacks a cast");
+	      pedwarn (location, OPT_Wcompare_distinct_pointer_types,
+		       "comparison of distinct pointer types "
+		       "%qT and %qT lacks a cast", type0, type1);
 
 	  if (result_type == NULL_TREE)
 	    {
@@ -11711,8 +11712,9 @@ 
 	      int qual = ENCODE_QUAL_ADDR_SPACE (as_common);
 	      result_type = build_pointer_type
 			      (build_qualified_type (void_type_node, qual));
-	      pedwarn (location, 0,
-		       "comparison of distinct pointer types lacks a cast");
+	      pedwarn (location, OPT_Wcompare_distinct_pointer_types,
+		       "comparison of distinct pointer types "
+		       "%qT and %qT lacks a cast", type0, type1);
 	    }
 	}
       else if (code0 == POINTER_TYPE && null_pointer_constant_p (orig_op1))
Index: gcc-trunk/gcc/cp/typeck.c
===================================================================
--- gcc-trunk/gcc/cp/typeck.c	(revision 256939)
+++ gcc-trunk/gcc/cp/typeck.c	(working copy)
@@ -453,7 +453,8 @@ 
   switch (operation)
     {
     case CPO_COMPARISON:
-      emit_diagnostic (kind, input_location, 0,
+      emit_diagnostic (kind, input_location,
+		       OPT_Wcompare_distinct_pointer_types,
 		       "comparison between "
 		       "distinct pointer types %qT and %qT lacks a cast",
 		       t1, t2);