While I've been cleaning up invoke.texi I noticed that the blurb about -no-integrated-cpp needed some copy-editing and markup changes. Then I noticed that the description didn't make a whole lot of sense, and that it talked about what might happen in the hypothetical case that cc1/cc1plus/cc1obj are merged, which I think only further confused things. And, I further noticed that this option was documented with the C Dialect Options instead of the Preprocessor Options, which is where users might be most likely to look for it.

I dug up the original discussion that led to this option being added back in 2003 -- it's here:


Based on that and reading the code, I've tried to rewrite the documentation so it makes more sense. Did I get this right? If I'm understanding the intended purpose of this option correctly, it sounds like a really convoluted hack and maybe not what the manual ought to recommend. (If you really want to do stuff with the preprocessed code before compiling it, why not just write a makefile rule or a shell script to use as your $(CC)?) But, I think we have a gazillion other useless options too, and it's probably more trouble to remove than it's worth....

Anyway, I'd appreciate another pair of eyes looking at this, and suggestions on what better to do here if this rewrite isn't adequate.


2012-03-11  Sandra Loosemore  <san...@codesourcery.com>

        * doc/invoke.texi (Option Summary): Move -no-integrated-cpp
        from C Language Options to Preprocessor Options.
        (C Dialect Options): Move -no-integrated-cpp documentation
        from here...
        (Preprocessor Options): ...to here.  Rewrite the description
        so it makes more sense, and remove discussion of merging
        front ends.

Index: gcc/doc/invoke.texi
--- gcc/doc/invoke.texi	(revision 185168)
+++ gcc/doc/invoke.texi	(working copy)
@@ -174,7 +174,7 @@ in the following sections.
 -aux-info @var{filename} -fallow-parameterless-variadic-functions @gol
 -fno-asm  -fno-builtin  -fno-builtin-@var{function} @gol
 -fhosted  -ffreestanding -fopenmp -fms-extensions -fplan9-extensions @gol
--trigraphs  -no-integrated-cpp  -traditional  -traditional-cpp @gol
+-trigraphs  -traditional  -traditional-cpp @gol
 -fallow-single-precision  -fcond-mismatch -flax-vector-conversions @gol
 -fsigned-bitfields  -fsigned-char @gol
 -funsigned-bitfields  -funsigned-char}
@@ -433,7 +433,7 @@ Objective-C and Objective-C++ Dialects}.
 -M  -MM  -MF  -MG  -MP  -MQ  -MT  -nostdinc  @gol
 -P  -fdebug-cpp -ftrack-macro-expansion -fworking-directory @gol
 -remap -trigraphs  -undef  -U@var{macro}  @gol
--Wp,@var{option} -Xpreprocessor @var{option}}
+-Wp,@var{option} -Xpreprocessor @var{option} -no-integrated-cpp}
 @item Assembler Option
 @xref{Assembler Options,,Passing Options to the Assembler}.
@@ -1794,17 +1794,6 @@ supported for C, not C++.
 Support ISO C trigraphs.  The @option{-ansi} option (and @option{-std}
 options for strict ISO C conformance) implies @option{-trigraphs}.
-@item -no-integrated-cpp
-@opindex no-integrated-cpp
-Performs a compilation in two passes: preprocessing and compiling.  This
-option allows a user supplied "cc1", "cc1plus", or "cc1obj" via the
-@option{-B} option.  The user supplied compilation step can then add in
-an additional preprocessing step after normal preprocessing but before
-compiling.  The default is to use the integrated cpp (internal cpp)
-The semantics of this option will change if "cc1", "cc1plus", and
-"cc1obj" are merged.
 @cindex traditional C language
 @cindex C language, traditional
 @item -traditional
@@ -9300,6 +9289,21 @@ recognize.
 If you want to pass an option that takes an argument, you must use
 @option{-Xpreprocessor} twice, once for the option and once for the argument.
+@item -no-integrated-cpp
+@opindex no-integrated-cpp
+Perform preprocessing as a separate pass before compilation.
+By default, GCC performs preprocessing as an integrated part of
+input tokenization and parsing.
+If this option is provided, the appropriate language front end
+(@command{cc1}, @command{cc1plus}, or @command{cc1obj} for C, C++,
+and Objective-C, respectively) is instead invoked twice,
+once for preprocessing only and once for actual compilation
+of the preprocessed input.
+This option may be useful in conjunction with the @option{-B} or
+@option{-wrapper} options to specify an alternate preprocessor or
+perform additional processing of the program source between
+normal preprocessing and compilation.
 @end table
 @include cppopts.texi

Reply via email to