PR middle-end/87593 - conflicting format_arg attributes on a declaration accepted

gcc/ChangeLog:

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

From-SVN: r265073
This commit is contained in:
Martin Sebor 2018-10-12 01:42:08 +00:00 committed by Martin Sebor
parent ccd20ab691
commit bf142d1570
2 changed files with 17 additions and 3 deletions

View 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

View 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