This is the mail archive of the
gcc-patches@gcc.gnu.org
mailing list for the GCC project.
[driver] try to fix "driver specifies output file twice" bug
- From: Mingjie Xing <mingjie dot xing at gmail dot com>
- To: gcc-patches <gcc-patches at gcc dot gnu dot org>
- Date: Tue, 5 Nov 2013 17:00:40 +0800
- Subject: [driver] try to fix "driver specifies output file twice" bug
- Authentication-results: sourceware.org; auth=none
Hello,
This patch is trying to fix the bug (driver specifies output file
twice when compiling header with -S)
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31316.
Changes:
* gcc.c (default_compilers): Update c-header specs.
By applying the patch, run command
$ gcc -S foo.h
will just output an assembly file foo.s.
$ gcc -fsyntax-only foo.h
no output file.
$ gcc foo.h -o foo.s
will output PCH file named foo.s.
$ gcc foo.h -save-temps
will output foo.i, foo.s, foo.h.gch.
But,
$ gcc foo.h -save-temps -o foo.s
will output foo.s, a mix of assembly and PCH. This should be fixed.
Any suggestions?
Thanks,
Mingjie
Index: gcc/gcc.c
===================================================================
--- gcc/gcc.c (revision 204285)
+++ gcc/gcc.c (working copy)
@@ -1048,14 +1048,15 @@ static const struct compiler default_com
%{!E:%{!M:%{!MM:\
%{save-temps*|traditional-cpp|no-integrated-cpp:%(trad_capable_cpp) \
%(cpp_options) -o %{save-temps*:%b.i} %{!save-temps*:%g.i} \n\
- cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
- %(cc1_options)\
- %{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\
- %W{o*:--output-pch=%*}}%V}\
+ cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
+ %(cc1_options)\
+ %{!fsyntax-only:%{!S:%{!fdump-ada-spec*:-o %g.s \
+ %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}}}}%V}\
%{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
cc1 %(cpp_unique_options) %(cc1_options)\
- %{!fdump-ada-spec*:-o %g.s %{!o*:--output-pch=%i.gch}\
- %W{o*:--output-pch=%*}}%V}}}}}}", 0, 0, 0},
+ %{!fsyntax-only:%{!S:%{!fdump-ada-spec*:-o %g.s \
+ %{!o*:--output-pch=%i.gch} %W{o*:--output-pch=%*}}}}%V}}}\
+ }}}", 0, 0, 0},
{".i", "@cpp-output", 0, 0, 0},
{"@cpp-output",
"%{!M:%{!MM:%{!E:cc1 -fpreprocessed %i %(cc1_options) %{!fsyntax-only:%(invoke_as)}}}}", 0, 0, 0},