https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109534
--- Comment #7 from Boris Kolpackov <boris at kolpackov dot net> --- BTW, my understanding of the rationale for the original patch (the one that forces -fno-directives-only) is to paper over some underlying issue with -fdirectives-only when used on .S files, potentially the same as the one I've encountered with a broken line directive. And the intend of the patch was to make builds that use -fdirectives-only on .S files to work transparently by forcing full preprocessing instead. But that "transparently" part doesn't seem to hold (using the same test.S): $ gcc -E -fdirectives-only -o test.Si test.S $ $ gcc -x assembler-with-cpp -fpreprocessed -fdirectives-only -c -o test.o test.Si test.Si:1: Error: junk at end of line, first unrecognized character is `0' The error is due to -fno-directives-only cancelling out -fdirectives-only and just -fpreprocessed means the file is fully preprocessed.