https://gcc.gnu.org/bugzilla/show_bug.cgi?id=104134
--- Comment #9 from Martin Sebor <msebor at gcc dot gnu.org> --- The code uses the M_ macro: pp_printf (pp, M_("<unnamed %s>"), variety); on my machine it expands into: pp_printf (pp, ((cxx_pp)->translate_identifiers ? gettext ("<unnamed %s>") : ("<unnamed %s>")), variety); and GCC doesn't warn most likely because the front end doesn't see through the complex expressio. If I remove the M_ it does warn. So in the FreeBSD build the M_() macro probably expands to its argument (the string) which GCC then warns on.