http://gcc.gnu.org/bugzilla/show_bug.cgi?id=50506
--- Comment #6 from Rafał Mużyło <galtgendo at o2 dot pl> 2011-09-24 16:05:20 UTC --- So, whose bug is it then ? glibc ? cause before reduction, the code was (http://bugs.gentoo.org/show_bug.cgi?id=365015): #include <stdio.h> static void w_i(void *fp, int (*outf)(void *, const char *, ...)) { outf(fp, ";%s\n", " - EOF -"); } void write_cfg() { FILE *fp = 0; w_i(fp, (int (*)(void *, const char *, ...))fprintf); } In gcc 4.5.3 it works likely due to internal fprint definition.