https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119684
--- Comment #13 from Jakub Jelinek <jakub at gcc dot gnu.org> --- So, looking through make gcc.pot warnings (I admittedly have quite old gettext installed on that machine, 0.21), I see (filtered so that there is only one message per each first unknown character per gcc-internal-format/gfc-internal-format): attribs.cc:2330: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 3, the character 'e' is not a valid conversion specifier. diagnostic-path.cc:1174: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 1, the character '@' is not a valid conversion specifier. gcc.cc:2420: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 2, the character 't' is not a valid conversion specifier. gimple-ssa-sprintf.cc:3979: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 2, the character 'Z' is not a valid conversion specifier. lto-wrapper.cc:1380: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 1, the character '{' is not a valid conversion specifier. c/c-typeck.cc:6676: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 1, the character 'v' is not a valid conversion specifier. cobol/cdf-copy.cc:109: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 1, the character 'z' is not a valid conversion specifier. cobol/except.cc:53: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 1, the character '0' is not a valid conversion specifier. cobol/genapi.cc:16419: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 2, the character '2' is not a valid conversion specifier. cp/call.cc:3961: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 4, the character 'I' is not a valid conversion specifier. cp/error.cc:3791: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 2, the character 'r' is not a valid conversion specifier. cp/error.cc:3870: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 4, the character 'S' is not a valid conversion specifier. cp/method.cc:3150: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 2, the character 'X' is not a valid conversion specifier. fortran/check.cc:6868: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 2, the character 'z' is not a valid conversion specifier. fortran/primary.cc:1296: warning: Although being used in a format string position, the msgid is not a valid GCC internal format string. Reason: In the directive number 1, the character 't' is not a valid conversion specifier. I think e/@/t/z/Z/{/}/r/R have been covered earlier, so I think just v/I/S/X are missing from the list. The '0' and '2' are cobol bugs, file PR119695 separately. Regarding v, c_tree_printer documents %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. I'm sure gettext handles at least %D/%E/%T, the rest needs to be checked. cp_printer documents %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. */