From 383ffa0cc4b5dd2e883a6881a6f899210a8e7818 Mon Sep 17 00:00:00 2001 From: msebor Date: Fri, 12 Oct 2018 01:42:08 +0000 Subject: [PATCH] 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. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@265073 138bc75d-0d04-0410-961f-82ee72b054a4 --- gcc/ChangeLog | 6 ++++++ gcc/doc/extend.texi | 14 +++++++++++--- 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 307d64ac881..de3f30c749a 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-10-11 Martin Sebor + + PR middle-end/87593 + * doc/extend.texi (attribute format_arg): Discuss using multiple + attributes on a single function. + 2018-10-11 Giuliano Belinassi PR tree-optimization/86829 diff --git a/gcc/doc/extend.texi b/gcc/doc/extend.texi index 0d9b99f14d3..47a987fef6a 100644 --- a/gcc/doc/extend.texi +++ b/gcc/doc/extend.texi @@ -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 -- 2.11.4.GIT