From 6f60f11885ab15018379c953d41f01cebcefa7e8 Mon Sep 17 00:00:00 2001
From: neil <neil@138bc75d-0d04-0410-961f-82ee72b054a4>
Date: Sun, 2 Mar 2003 14:09:31 +0000
Subject: [PATCH] 	* gcc.c (default_compilers): Add -no-integrated-cpp
 flag to invoke 	  an external cpp during compilation. 	(option_map):
 Likewise. 	* cp/lang-specs.h (default_compilers): Similarly. 	*
 objc/lang-specs.h (default_compilers): Similarly. 	* doc/invoke.texi:
 Document -no-integrated-cpp flag.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63664 138bc75d-0d04-0410-961f-82ee72b054a4
---
 gcc/ChangeLog         |  8 ++++++++
 gcc/cp/ChangeLog      |  5 +++++
 gcc/cp/lang-specs.h   |  8 ++++----
 gcc/doc/invoke.texi   | 13 ++++++++++++-
 gcc/gcc.c             | 11 ++++++-----
 gcc/objc/lang-specs.h |  8 ++++----
 6 files changed, 39 insertions(+), 14 deletions(-)

diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5783d609aaf5..a953cd380908 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,11 @@
+2003-03-02  Ashif Harji  <asharji@uwaterloo.ca>
+
+	* gcc.c (default_compilers): Add -no-integrated-cpp flag to invoke
+	  an external cpp during compilation.
+	(option_map): Likewise.
+	* objc/lang-specs.h (default_compilers): Similarly.
+	* doc/invoke.texi: Document -no-integrated-cpp flag.
+
 2003-03-02  Kazu Hirata  <kazu@cs.umass.edu>
 
 	* config/h8300/h8300.md (zero_extendqisi2): Change to an
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 25e6f1e6bf64..30efcf374645 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2003-03-02  Ashif Harji  <asharji@uwaterloo.ca>
+
+	* lang-specs.h (default_compilers): Add -no-integrated-cpp flag to
+	  invoke an external cpp during compilation.
+
 2003-03-01  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
 	* decl.c (duplicate_decls): Convert use of warning_with_decl() to
diff --git a/gcc/cp/lang-specs.h b/gcc/cp/lang-specs.h
index cf4ca4cee360..229164445b7d 100644
--- a/gcc/cp/lang-specs.h
+++ b/gcc/cp/lang-specs.h
@@ -50,10 +50,10 @@ Boston, MA 02111-1307, USA.  */
     "%{E|M|MM:cc1plus -E %{!no-gcc:-D__GNUG__=%v1}\
        %(cpp_options) %2 %(cpp_debug_options)}\
      %{!E:%{!M:%{!MM:\
-       %{save-temps:cc1plus -E %{!no-gcc:-D__GNUG__=%v1}\
-		%(cpp_options) %2 %b.ii \n}\
-      cc1plus %{save-temps:-fpreprocessed %b.ii}\
-	      %{!save-temps:%(cpp_unique_options) %{!no-gcc:-D__GNUG__=%v1}}\
+       %{save-temps|no-integrated-cpp:cc1plus -E %{!no-gcc:-D__GNUG__=%v1}\
+		%(cpp_options) %2 %{save-temps:%b.ii} %{!save-temps:%g.ii} \n}\
+      cc1plus %{save-temps|no-integrated-cpp:-fpreprocessed %{save-temps:%b.ii} %{!save-temps:%g.ii}}\
+	      %{!save-temps:%{!no-integrated-cpp:%(cpp_unique_options) %{!no-gcc:-D__GNUG__=%v1}}}\
 	%(cc1_options) %2 %{+e1*}\
        %{!fsyntax-only:%(invoke_as)}}}}",
      CPLUSPLUS_CPP_SPEC},
diff --git a/gcc/doc/invoke.texi b/gcc/doc/invoke.texi
index 755d0dd54aa4..22d0ffc62f6d 100644
--- a/gcc/doc/invoke.texi
+++ b/gcc/doc/invoke.texi
@@ -166,7 +166,7 @@ in the following sections.
 -ansi  -std=@var{standard}  -aux-info @var{filename} @gol
 -fno-asm  -fno-builtin -fno-builtin-@var{function} @gol
 -fhosted  -ffreestanding  -fms-extensions @gol
--trigraphs  -traditional  -traditional-cpp @gol
+-trigraphs  -no-integrated-cpp  -traditional  -traditional-cpp @gol
 -fallow-single-precision  -fcond-mismatch @gol
 -fsigned-bitfields  -fsigned-char @gol
 -funsigned-bitfields  -funsigned-char @gol
@@ -1198,6 +1198,17 @@ Accept some non-standard constructs used in Microsoft header files.
 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
diff --git a/gcc/gcc.c b/gcc/gcc.c
index db37242dd0c4..a07bd9c6f8ac 100644
--- a/gcc/gcc.c
+++ b/gcc/gcc.c
@@ -911,11 +911,11 @@ static const struct compiler default_compilers[] =
       %{!E:%{!M:%{!MM:\
           %{traditional|ftraditional:\
 %eGNU C no longer supports -traditional without -E}\
-	  %{save-temps|traditional-cpp:%(trad_capable_cpp) \
-		%(cpp_options) %b.i \n\
-		    cc1 -fpreprocessed %b.i %(cc1_options)}\
-	  %{!save-temps:%{!traditional-cpp:\
-		cc1 %(cpp_unique_options) %(cc1_options)}}\
+	  %{save-temps|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
+		%(cpp_options) %{save-temps:%b.i} %{!save-temps:%g.i} \n\
+		    cc1 -fpreprocessed %{save-temps:%b.i} %{!save-temps:%g.i} %(cc1_options)}\
+	  %{!save-temps:%{!traditional-cpp:%{!no-integrated-cpp:\
+		cc1 %(cpp_unique_options) %(cc1_options)}}}\
         %{!fsyntax-only:%(invoke_as)}}}}", 0},
   {"-",
    "%{!E:%e-E required when input is from standard input}\
@@ -1038,6 +1038,7 @@ static const struct option_map option_map[] =
    {"--library-directory", "-L", "a"},
    {"--machine", "-m", "aj"},
    {"--machine-", "-m", "*j"},
+   {"--no-integrated-cpp", "-no-integrated-cpp", 0},
    {"--no-line-commands", "-P", 0},
    {"--no-precompiled-includes", "-noprecomp", 0},
    {"--no-standard-includes", "-nostdinc", 0},
diff --git a/gcc/objc/lang-specs.h b/gcc/objc/lang-specs.h
index 3017ab361c09..f8e6761d06f3 100644
--- a/gcc/objc/lang-specs.h
+++ b/gcc/objc/lang-specs.h
@@ -31,10 +31,10 @@ Boston, MA 02111-1307, USA.  */
       %{!E:%{!M:%{!MM:\
 	%{traditional|ftraditional|traditional-cpp:\
 %eGNU Objective C no longer supports traditional compilation}\
-	%{save-temps:cc1obj -E %(cpp_options) %b.mi \n\
-	    cc1obj -fpreprocessed %b.mi %(cc1_options) %{gen-decls}}\
-	%{!save-temps:\
-	    cc1obj %(cpp_unique_options) %(cc1_options) %{gen-decls}}\
+	%{save-temps|no-integrated-cpp:cc1obj -E %(cpp_options) %{save-temps:%b.mi} %{!save-temps:%g.mi} \n\
+	    cc1obj -fpreprocessed %{save-temps:%b.mi} %{!save-temps:%g.mi} %(cc1_options) %{gen-decls}}\
+	%{!save-temps:%{!no-integrated-cpp:\
+	    cc1obj %(cpp_unique_options) %(cc1_options) %{gen-decls}}}\
         %{!fsyntax-only:%(invoke_as)}}}}", 0},
   {".mi", "@objc-cpp-output", 0},
   {"@objc-cpp-output",
-- 
GitLab