]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
Fix driver/33980: Precompiled header file not removed on error
authorAndrew Pinski <apinski@marvell.com>
Fri, 19 May 2023 06:12:49 +0000 (06:12 +0000)
committerAndrew Pinski <apinski@marvell.com>
Fri, 19 May 2023 17:58:54 +0000 (17:58 +0000)
So the problem here is that in the spec files, we were not marking the pch
output file to be removed on error.
The way to fix this is to mark the --output-pch argument as the output
file argument.
For the C++ specs file, we had to move around where the %V was located
such that it would be after the %w marker as %V marker clears the outputfiles.

OK? Bootstrapped and tested on x86_64-linux-gnu.

gcc/cp/ChangeLog:

PR driver/33980
* lang-specs.h ("@c++-header"): Add %w after
the --output-pch.
("@c++-system-header"): Likewise.
("@c++-user-header"): Likewise.

gcc/ChangeLog:

PR driver/33980
* gcc.cc (default_compilers["@c-header"]): Add %w
after the --output-pch.

gcc/cp/lang-specs.h
gcc/gcc.cc

index c591d155cc1565e09c20758f8438fb744bfe5212..94bdd4dcc4ad53a3d1e4d6b0ec897a22b277f8fc 100644 (file)
@@ -53,9 +53,9 @@ along with GCC; see the file COPYING3.  If not see
       "  %{fmodules-ts:-fmodule-header %{fpreprocessed:-fdirectives-only}}"
       "  %(cc1_options) %2"
       "  %{!fsyntax-only:"
-      "    %{!S:-o %g.s%V}"
+      "    %{!S:-o %g.s}"
       "    %{!fmodule-*:%{!fmodules-*:%{!fdump-ada-spec*:"
-      "                 %{!o*:--output-pch %i.gch}%W{o*:--output-pch %*}}}}}"
+      "                 %{!o*:--output-pch %w%i.gch}%W{o*:--output-pch %w%*}}}}%{!S:%V}}"
       "}}}",
      CPLUSPLUS_CPP_SPEC, 0, 0},
   {"@c++-system-header",
@@ -74,9 +74,9 @@ along with GCC; see the file COPYING3.  If not see
       "    %{fpreprocessed:-fdirectives-only}}"
       "  %(cc1_options) %2"
       "  %{!fsyntax-only:"
-      "    %{!S:-o %g.s%V}"
+      "    %{!S:-o %g.s}"
       "    %{!fmodule-*:%{!fmodules-*:%{!fdump-ada-spec*:"
-      "                 %{!o*:--output-pch %i.gch}%W{o*:--output-pch %*}}}}}"
+      "                 %{!o*:--output-pch %w%i.gch}%W{o*:--output-pch %w%*}}}}%{!S:%V}}"
       "}}}",
      CPLUSPLUS_CPP_SPEC, 0, 0},
   {"@c++-user-header",
@@ -94,9 +94,9 @@ along with GCC; see the file COPYING3.  If not see
       "  %{fmodules-ts:-fmodule-header=user %{fpreprocessed:-fdirectives-only}}"
       "  %(cc1_options) %2"
       "  %{!fsyntax-only:"
-      "    %{!S:-o %g.s%V}"
+      "    %{!S:-o %g.s}"
       "    %{!fmodule-*:%{!fmodules-*:%{!fdump-ada-spec*:"
-      "                 %{!o*:--output-pch %i.gch}%W{o*:--output-pch %*}}}}}"
+      "                 %{!o*:--output-pch %w%i.gch}%W{o*:--output-pch %w%*}}}}%{!S:%V}}"
       "}}}",
      CPLUSPLUS_CPP_SPEC, 0, 0},
   {"@c++",
index 39a44fa486da2a486256f045d29ade3878d81df5..2ccca00d603f805b91dcae02eda6a0bfd6722fcd 100644 (file)
@@ -1454,13 +1454,13 @@ static const struct compiler default_compilers[] =
                    cc1 -fpreprocessed %{save-temps*:%b.i} %{!save-temps*:%g.i} \
                        %(cc1_options)\
                        %{!fsyntax-only:%{!S:-o %g.s} \
-                           %{!fdump-ada-spec*:%{!o*:--output-pch %i.gch}\
-                                              %W{o*:--output-pch %*}}%V}}\
+                           %{!fdump-ada-spec*:%{!o*:--output-pch %w%i.gch}\
+                                              %W{o*:--output-pch %w%*}}%{!S:%V}}}\
          %{!save-temps*:%{!traditional-cpp:%{!no-integrated-cpp:\
                cc1 %(cpp_unique_options) %(cc1_options)\
                    %{!fsyntax-only:%{!S:-o %g.s} \
-                       %{!fdump-ada-spec*:%{!o*:--output-pch %i.gch}\
-                                          %W{o*:--output-pch %*}}%V}}}}}}}", 0, 0, 0},
+                       %{!fdump-ada-spec*:%{!o*:--output-pch %w%i.gch}\
+                                          %W{o*:--output-pch %w%*}}%{!S:%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},