http://gcc.gnu.org/bugzilla/show_bug.cgi?id=2316
--- Comment #52 from Marc Glisse <glisse at gcc dot gnu.org> --- (In reply to Harald van Dijk from comment #51) > Note that a consequence of this is that a function declaration that uses a > typedef may not be compatible with the typedef (I think): > > extern "C" { void f(); } > typedef void t(); > t f, *g = f; // valid redeclaration of f, invalid initialisation of g Fun! > extern "C" t f; // invalid redeclaration of f I am not 100% sure about that one. > Linkage conflicts with built-in declarations of functions are also a bit of > a problem: Yes, as I said in comment #38 and comment #39, giving builtin functions the right linkage is a big missing part of the patch. > implementing this as described makes GCC fail to compile, At least in the version of the patch that is attached to the PR, gcc tries to accept almost anything except in some pedantic mode. The goal is to avoid breaking every code on earth, or the patch has no chance of ever being accepted. > (I may well continue working on this, but if I do, I will only do so > occasionally and will likely not be able to send anything meaningful or > useful for a long time.) Good luck!