PR middle-end/87593 - conflicting format_arg attributes on a declaration accepted
authorMartin Sebor <msebor@redhat.com>
Fri, 12 Oct 2018 01:42:08 +0000 (01:42 +0000)
committerMartin Sebor <msebor@gcc.gnu.org>
Fri, 12 Oct 2018 01:42:08 +0000 (19:42 -0600)
gcc/ChangeLog:

* doc/extend.texi (attribute format_arg): Discuss using multiple
attributes on a single function.

From-SVN: r265073

gcc/ChangeLog
gcc/doc/extend.texi

index 307d64ac88135ee338073bcab73cd07e79a47127..de3f30c749a3dd5fe8b0559367166605d2552b2a 100644 (file)
@@ -1,3 +1,9 @@
+2018-10-11  Martin Sebor  <msebor@redhat.com>
+
+       PR middle-end/87593
+       * doc/extend.texi (attribute format_arg): Discuss using multiple
+       attributes on a single function.
+
 2018-10-11  Giuliano Belinassi  <giuliano.belinassi@usp.br>
 
        PR tree-optimization/86829
index 0d9b99f14d30f8284413bd394ae11dd26d8d61a7..47a987fef6a88e272300876e9b559280c1ef53ec 100644 (file)
@@ -2698,13 +2698,15 @@ Target Machines}.
 @item format_arg (@var{string-index})
 @cindex @code{format_arg} function attribute
 @opindex Wformat-nonliteral
-The @code{format_arg} attribute specifies that a function takes a format
-string for a @code{printf}, @code{scanf}, @code{strftime} or
+The @code{format_arg} attribute specifies that a function takes one or
+more format strings for a @code{printf}, @code{scanf}, @code{strftime} or
 @code{strfmon} style function and modifies it (for example, to translate
 it into another language), so the result can be passed to a
 @code{printf}, @code{scanf}, @code{strftime} or @code{strfmon} style
 function (with the remaining arguments to the format function the same
-as they would have been for the unmodified string).  For example, the
+as they would have been for the unmodified string).  Multiple
+@code{format_arg} attributes may be applied to the same function, each
+designating a distinct parameter as a format string.  For example, the
 declaration:
 
 @smallexample
@@ -2724,6 +2726,12 @@ string argument is not constant; this would generate a warning when
 @option{-Wformat-nonliteral} is used, but the calls could not be checked
 without the attribute.
 
+In calls to a function declared with more than one @code{format_arg}
+attribute, each with a distinct argument value, the corresponding
+actual function arguments are checked against all format strings
+designated by the attributes.  This capability is designed to support
+the GNU @code{ngettext} family of functions.
+
 The parameter @var{string-index} specifies which argument is the format
 string argument (starting from one).  Since non-static C++ methods have
 an implicit @code{this} argument, the arguments of such methods should