https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116724
--- Comment #3 from David Malcolm <dmalcolm at gcc dot gnu.org> --- Note to self: 499 diagnostic_set_info (diagnostic_info *diagnostic, const char *gmsgid, 500 va_list *args, rich_location *richloc, 501 diagnostic_t kind) 502 { 503 gcc_assert (richloc); 504 diagnostic_set_info_translated (diagnostic, _(gmsgid), args, richloc, kind); 505 } Perhaps the diagnostic_info should store both the untranslated *and* translated strings. Could probably defer the _() lookup until later, e.g. if the warning isn't actually emitted.