Index: gcc/doc/invoke.texi
===================================================================
--- gcc/doc/invoke.texi	(revision 186684)
+++ gcc/doc/invoke.texi	(working copy)
@@ -253,22 +253,23 @@ Objective-C and Objective-C++ Dialects}.
 -Winit-self  -Winline -Wmaybe-uninitialized @gol
 -Wno-int-to-pointer-cast -Wno-invalid-offsetof @gol
 -Winvalid-pch -Wlarger-than=@var{len}  -Wunsafe-loop-optimizations @gol
 -Wlogical-op -Wlong-long @gol
 -Wmain -Wmaybe-uninitialized -Wmissing-braces  -Wmissing-field-initializers @gol
--Wmissing-format-attribute  -Wmissing-include-dirs @gol
+-Wmissing-include-dirs @gol
 -Wno-mudflap @gol
 -Wno-multichar  -Wnonnull  -Wno-overflow @gol
 -Woverlength-strings  -Wpacked  -Wpacked-bitfield-compat  -Wpadded @gol
 -Wparentheses  -Wpedantic-ms-format -Wno-pedantic-ms-format @gol
 -Wpointer-arith  -Wno-pointer-to-int-cast @gol
 -Wredundant-decls @gol
 -Wreturn-type  -Wsequence-point  -Wshadow @gol
 -Wsign-compare  -Wsign-conversion  -Wstack-protector @gol
 -Wstack-usage=@var{len} -Wstrict-aliasing -Wstrict-aliasing=n @gol
 -Wstrict-overflow -Wstrict-overflow=@var{n} @gol
--Wsuggest-attribute=@r{[}pure@r{|}const@r{|}noreturn@r{]} @gol
+-Wsuggest-attribute=@r{[}pure@r{|}const@r{|}noreturn@r{|}format@r{]} @gol
+-Wmissing-format-attribute @gol
 -Wswitch  -Wswitch-default  -Wswitch-enum -Wsync-nand @gol
 -Wsystem-headers  -Wtrampolines  -Wtrigraphs  -Wtype-limits  -Wundef @gol
 -Wuninitialized  -Wunknown-pragmas  -Wno-pragmas @gol
 -Wunsuffixed-float-constants  -Wunused  -Wunused-function @gol
 -Wunused-label  -Wunused-local-typedefs -Wunused-parameter @gol
@@ -3833,11 +3834,11 @@ simplified to @code{x + 1 >= y}.  This i
 highest warning level because this simplification applies to many
 comparisons, so this warning level gives a very large number of
 false positives.
 @end table
 
-@item -Wsuggest-attribute=@r{[}pure@r{|}const@r{|}noreturn@r{]}
+@item -Wsuggest-attribute=@r{[}pure@r{|}const@r{|}noreturn@r{|}format@r{]}
 @opindex Wsuggest-attribute=
 @opindex Wno-suggest-attribute=
 Warn for cases where adding an attribute may be beneficial. The
 attributes currently supported are listed below.
 
@@ -3858,10 +3859,37 @@ functions visible in other compilation u
 @code{const}) if it cannot prove that the function returns normally. A function
 returns normally if it doesn't contain an infinite loop nor returns abnormally
 by throwing, calling @code{abort()} or trapping.  This analysis requires option
 @option{-fipa-pure-const}, which is enabled by default at @option{-O} and
 higher.  Higher optimization levels improve the accuracy of the analysis.
+
+@item -Wsuggest-attribute=format
+@itemx -Wmissing-format-attribute
+@opindex Wsuggest-attribute=format
+@opindex Wmissing-format-attribute
+@opindex Wno-suggest-attribute=format
+@opindex Wno-missing-format-attribute
+@opindex Wformat
+@opindex Wno-format
+
+Warn about function pointers that might be candidates for @code{format}
+attributes.  Note these are only possible candidates, not absolute ones.
+GCC guesses that function pointers with @code{format} attributes that
+are used in assignment, initialization, parameter passing or return
+statements should have a corresponding @code{format} attribute in the
+resulting type.  I.e.@: the left-hand side of the assignment or
+initialization, the type of the parameter variable, or the return type
+of the containing function respectively should also have a @code{format}
+attribute to avoid the warning.
+
+GCC also warns about function definitions that might be
+candidates for @code{format} attributes.  Again, these are only
+possible candidates.  GCC guesses that @code{format} attributes
+might be appropriate for any function that calls a function like
+@code{vprintf} or @code{vscanf}, but this might not always be the
+case, and some functions for which @code{format} attributes are
+appropriate may not be detected.
 @end table
 
 @item -Warray-bounds
 @opindex Wno-array-bounds
 @opindex Warray-bounds
@@ -4397,33 +4425,10 @@ struct s x = @{ .f = 3, .g = 4 @};
 @end smallexample
 
 This warning is included in @option{-Wextra}.  To get other @option{-Wextra}
 warnings without this one, use @option{-Wextra -Wno-missing-field-initializers}.
 
-@item -Wmissing-format-attribute
-@opindex Wmissing-format-attribute
-@opindex Wno-missing-format-attribute
-@opindex Wformat
-@opindex Wno-format
-Warn about function pointers that might be candidates for @code{format}
-attributes.  Note these are only possible candidates, not absolute ones.
-GCC guesses that function pointers with @code{format} attributes that
-are used in assignment, initialization, parameter passing or return
-statements should have a corresponding @code{format} attribute in the
-resulting type.  I.e.@: the left-hand side of the assignment or
-initialization, the type of the parameter variable, or the return type
-of the containing function respectively should also have a @code{format}
-attribute to avoid the warning.
-
-GCC also warns about function definitions that might be
-candidates for @code{format} attributes.  Again, these are only
-possible candidates.  GCC guesses that @code{format} attributes
-might be appropriate for any function that calls a function like
-@code{vprintf} or @code{vscanf}, but this might not always be the
-case, and some functions for which @code{format} attributes are
-appropriate may not be detected.
-
 @item -Wno-multichar
 @opindex Wno-multichar
 @opindex Wmultichar
 Do not warn if a multicharacter constant (@samp{'FOOF'}) is used.
 Usually they indicate a typo in the user's code, as they have
Index: gcc/c-family/c.opt
===================================================================
--- gcc/c-family/c.opt	(revision 186684)
+++ gcc/c-family/c.opt	(working copy)
@@ -471,14 +471,18 @@ Warn about global functions without prev
 
 Wmissing-field-initializers
 C ObjC C++ ObjC++ Var(warn_missing_field_initializers) Init(-1) Warning
 Warn about missing fields in struct initializers
 
-Wmissing-format-attribute
-C ObjC C++ ObjC++ Var(warn_missing_format_attribute) Warning
+Wsuggest-attribute=format
+C ObjC C++ ObjC++ Var(warn_suggest_attribute_format) Warning
 Warn about functions which might be candidates for format attributes
 
+Wmissing-format-attribute
+C ObjC C++ ObjC++ Alias(Wsuggest-attribute=format)
+;
+
 Wmissing-include-dirs
 C ObjC C++ ObjC++ Warning
 Warn about user-specified include directories that do not exist
 
 Wmissing-parameter-type
Index: gcc/c-family/c-format.c
===================================================================
--- gcc/c-family/c-format.c	(revision 186684)
+++ gcc/c-family/c-format.c	(working copy)
@@ -1003,11 +1003,11 @@ decode_format_type (const char *s)
 
 
 /* Check the argument list of a call to printf, scanf, etc.
    ATTRS are the attributes on the function type.  There are NARGS argument
    values in the array ARGARRAY.
-   Also, if -Wmissing-format-attribute,
+   Also, if -Wsuggest-attribute=format,
    warn for calls to vprintf or vscanf in functions with no such format
    attribute themselves.  */
 
 void
 check_function_format (tree attrs, int nargs, tree *argarray)
@@ -1031,11 +1031,11 @@ check_function_format (tree attrs, int n
 	      int i;
 	      for (i = nargs - 1; i >= 0; i--)
 		params = tree_cons (NULL_TREE, argarray[i], params);
 	      check_format_info (&info, params);
 	    }
-	  if (warn_missing_format_attribute && info.first_arg_num == 0
+	  if (warn_suggest_attribute_format && info.first_arg_num == 0
 	      && (format_types[info.format_type].flags
 		  & (int) FMT_FLAG_ARG_CONVERT))
 	    {
 	      tree c;
 	      for (c = TYPE_ATTRIBUTES (TREE_TYPE (current_function_decl));
@@ -1061,11 +1061,11 @@ check_function_format (tree attrs, int n
 			  && (TYPE_MAIN_VARIANT (TREE_TYPE (TREE_TYPE (args)))
 			      == char_type_node))
 			break;
 		    }
 		  if (args != 0)
-		    warning (OPT_Wmissing_format_attribute, "function might "
+		    warning (OPT_Wsuggest_attribute_format, "function might "
 			     "be possible candidate for %qs format attribute",
 			     format_types[info.format_type].name);
 		}
 	    }
 	}
Index: gcc/cp/typeck.c
===================================================================
--- gcc/cp/typeck.c	(revision 186684)
+++ gcc/cp/typeck.c	(working copy)
@@ -7619,11 +7619,11 @@ convert_for_assignment (tree type, tree 
 		  }
 	    }
 	  return error_mark_node;
 	}
     }
-  if (warn_missing_format_attribute)
+  if (warn_suggest_attribute_format)
     {
       const enum tree_code codel = TREE_CODE (type);
       if ((codel == POINTER_TYPE || codel == REFERENCE_TYPE)
 	  && coder == codel
 	  && check_missing_format_attribute (type, rhstype)
@@ -7631,35 +7631,35 @@ convert_for_assignment (tree type, tree 
 	switch (errtype)
 	  {
 	    case ICR_ARGPASS:
 	    case ICR_DEFAULT_ARGUMENT:
 	      if (fndecl)
-		warning (OPT_Wmissing_format_attribute,
+		warning (OPT_Wsuggest_attribute_format,
 			 "parameter %qP of %qD might be a candidate "
 			 "for a format attribute", parmnum, fndecl);
 	      else
-		warning (OPT_Wmissing_format_attribute,
+		warning (OPT_Wsuggest_attribute_format,
 			 "parameter might be a candidate "
 			 "for a format attribute");
 	      break;
 	    case ICR_CONVERTING:
-	      warning (OPT_Wmissing_format_attribute,
+	      warning (OPT_Wsuggest_attribute_format,
 		       "target of conversion might be a candidate "
 		       "for a format attribute");
 	      break;
 	    case ICR_INIT:
-	      warning (OPT_Wmissing_format_attribute,
+	      warning (OPT_Wsuggest_attribute_format,
 		       "target of initialization might be a candidate "
 		       "for a format attribute");
 	      break;
 	    case ICR_RETURN:
-	      warning (OPT_Wmissing_format_attribute,
+	      warning (OPT_Wsuggest_attribute_format,
 		       "return type might be a candidate "
 		       "for a format attribute");
 	      break;
 	    case ICR_ASSIGN:
-	      warning (OPT_Wmissing_format_attribute,
+	      warning (OPT_Wsuggest_attribute_format,
 		       "left-hand side of assignment might be a candidate "
 		       "for a format attribute");
 	      break;
 	    default:
 	      gcc_unreachable();
Index: gcc/cp/call.c
===================================================================
--- gcc/cp/call.c	(revision 186684)
+++ gcc/cp/call.c	(working copy)
@@ -6275,19 +6275,19 @@ convert_for_arg_passing (tree type, tree
 	   && INTEGRAL_TYPE_P (type)
 	   && COMPLETE_TYPE_P (type)
 	   && INT_CST_LT_UNSIGNED (TYPE_SIZE (type),
 				   TYPE_SIZE (integer_type_node)))
     val = perform_integral_promotions (val);
-  if (warn_missing_format_attribute)
+  if (warn_suggest_attribute_format)
     {
       tree rhstype = TREE_TYPE (val);
       const enum tree_code coder = TREE_CODE (rhstype);
       const enum tree_code codel = TREE_CODE (type);
       if ((codel == POINTER_TYPE || codel == REFERENCE_TYPE)
 	  && coder == codel
 	  && check_missing_format_attribute (type, rhstype))
-	warning (OPT_Wmissing_format_attribute,
+	warning (OPT_Wsuggest_attribute_format,
 		 "argument of function call might be a candidate for a format attribute");
     }
   return val;
 }
 
Index: gcc/c-typeck.c
===================================================================
--- gcc/c-typeck.c	(revision 186684)
+++ gcc/c-typeck.c	(working copy)
@@ -5592,33 +5592,33 @@ convert_for_assignment (location_t locat
 	  return error_mark_node;
 	}
 
       /* Check if the right-hand side has a format attribute but the
 	 left-hand side doesn't.  */
-      if (warn_missing_format_attribute
+      if (warn_suggest_attribute_format
 	  && check_missing_format_attribute (type, rhstype))
 	{
 	  switch (errtype)
 	  {
 	  case ic_argpass:
-	    warning_at (location, OPT_Wmissing_format_attribute,
+	    warning_at (location, OPT_Wsuggest_attribute_format,
 			"argument %d of %qE might be "
 			"a candidate for a format attribute",
 			parmnum, rname);
 	    break;
 	  case ic_assign:
-	    warning_at (location, OPT_Wmissing_format_attribute,
+	    warning_at (location, OPT_Wsuggest_attribute_format,
 			"assignment left-hand side might be "
 			"a candidate for a format attribute");
 	    break;
 	  case ic_init:
-	    warning_at (location, OPT_Wmissing_format_attribute,
+	    warning_at (location, OPT_Wsuggest_attribute_format,
 			"initialization left-hand side might be "
 			"a candidate for a format attribute");
 	    break;
 	  case ic_return:
-	    warning_at (location, OPT_Wmissing_format_attribute,
+	    warning_at (location, OPT_Wsuggest_attribute_format,
 			"return type might be "
 			"a candidate for a format attribute");
 	    break;
 	  default:
 	    gcc_unreachable ();
@@ -6333,11 +6333,11 @@ digest_init (location_t init_loc, tree t
 	}
       else if (require_constant && !maybe_const)
 	pedwarn_init (init_loc, 0,
 		      "initializer element is not a constant expression");
 
-      /* Added to enable additional -Wmissing-format-attribute warnings.  */
+      /* Added to enable additional -Wsuggest-attribute=format warnings.  */
       if (TREE_CODE (TREE_TYPE (inside_init)) == POINTER_TYPE)
 	inside_init = convert_for_assignment (init_loc, type, inside_init,
 	    				      origtype,
 					      ic_init, null_pointer_constant,
 					      NULL_TREE, NULL_TREE, 0);
