http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54117
--- Comment #11 from stevenb.gcc at gmail dot com <stevenb.gcc at gmail dot com> 2013-01-08 18:04:09 UTC --- > All that to avoid one #include "output.h" in one file? Is that one little thing really the only change you see? I see a different picture. The change is a major step in the direction of making a clear cut between the middle/back end and the front ends. A front end should not output assembly, period, if we want the front ends to become separate libraries, in the long run, that can be used by external tools (static checkers, IDEs, etc.) like clang. For the long term, this is IMHO the only viable solution for keeping the GCC front ends relevant. The change also allows the compiler to open the assembler file in write-only mode and to open it only after the front end is done. My plan is to postponed it even further: for GCC 4.9 I'd like to work on streaming slim LTO objects directly to a .o file, without going through an assembler file at all (this is relatively simple for ELF targets). Finally, the change also simplifies the PCH mechanism further. If we're ever going to replace PCH-as-a-memory-dump with something streamed, we'll have to make an effort at only streaming IR objects, not assembler output. Had I known this change would break stabs like this, I'd obviously have tried to solve that problem first. But to back out the change now would be a mistake. Nobody is going to fix those *out.c back ends, as you very well know.