On Wed, Oct 20, 2021 at 10:57 AM Marek Polacek via Gcc-patches <gcc-patches@gcc.gnu.org> wrote: > > On Wed, Oct 20, 2021 at 03:49:09PM +0000, Qing Zhao via Gcc-patches wrote: > > Hi, > > > > In GCC, there are many utility routines for reporting error, warning, or > > information, for example: > > > > warning (0, "weak declaration of %q+D not supported", decl); > > warning_at (stmtloc, OPT_Wmaybe_uninitialized, "%qE may be used > > uninitialized", ptr)); > > inform (loc, "in a call to %qT declared with " "attribute %<%s%>", fntype, > > access_str); > > error ("%qD is unavailable: %s", node, (const char *) msg); > > > > There are format-strings inside them, “%q+D”, “%qE”, “%qT”, “%qD”, etc, > > where can I find a doc for the details of > > These format-strings? Or which source files I should read to understand the > > details? > > You can take a look at cp/error.c: > > /* Called from output_format -- during diagnostic message processing -- > to handle C++ specific format specifier with the following meanings: > %A function argument-list. > %C tree code. > %D declaration. > %E expression. > %F function declaration. > %H type difference (from). > %I type difference (to). > %L language as used in extern "lang". > %O binary operator. > %P function parameter whose position is indicated by an integer. > %Q assignment operator. > %S substitution (template + args) > %T type. > %V cv-qualifier. > %X exception-specification. */ > static bool > cp_printer (pretty_printer *pp, text_info *text, const char *spec, > > or c/c-objc-common.c: > > /* Called during diagnostic message formatting process to print a > source-level entity onto BUFFER. The meaning of the format specifiers > is as follows: > %D: a general decl, > %E: an identifier or expression, > %F: a function declaration, > %T: a type. > %V: a list of type qualifiers from a tree. > %v: an explicit list of type qualifiers > %#v: an explicit list of type qualifiers of a function type. > > Please notice when called, the `%' part was already skipped by the > diagnostic machinery. */ > static bool > c_tree_printer (pretty_printer *pp, text_info *text, const char *spec, > > Marek >
Note that this is bug 92435: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92435