]> git.feebdaed.xyz Git - 0xmirror/gcc.git/commitdiff
c-family: Fix ICE with -MD and -fdeps-format sharing output [PR121864]
authorEgas Ribeiro <egas.g.ribeiro@gmail.com>
Mon, 22 Dec 2025 21:41:00 +0000 (21:41 +0000)
committerJason Merrill <jason@redhat.com>
Fri, 26 Dec 2025 12:35:41 +0000 (19:35 +0700)
When -MD, -fdeps-format=p1689r5 and -save-temps are used without
explicit output files, they default to the same stream, which is
invalid. The error message attempted to print fdeps_file, but this is
NULL in this case, causing an ICE.

Use out_fname as a fallback when fdeps_file is NULL to avoid the ICE
and provide a meaningful error message.

Fix suggested by Andrew Pinski.

PR c++/121864

gcc/c-family/ChangeLog:

* c-opts.cc (c_common_finish): Use out_fname as fallback when
fdeps_file is NULL in error message.

Signed-off-by: Egas Ribeiro <egas.g.ribeiro@gmail.com>
Reviewed-by: Jason Merrill <jason@redhat.com>
gcc/c-family/c-opts.cc

index 8da51759dfd33c55ee57b3748352a07c48e83c4a..4ad5a0278c96a26f04731a55dd8094acfb5aa7a7 100644 (file)
@@ -1490,7 +1490,7 @@ c_common_finish (void)
        }
       if (fdeps_stream == deps_stream && fdeps_stream != stdout)
        fatal_error (input_location, "%<-MF%> and %<-fdeps-file=%> cannot share an output file %s: %m",
-                    fdeps_file);
+                    fdeps_file ? fdeps_file : out_fname);
     }
 
   /* For performance, avoid tearing down cpplib's internal structures