https://gcc.gnu.org/g:7b0a85ab6633f71e0488299b2b3a8e26b7cf7d78

commit r16-6396-g7b0a85ab6633f71e0488299b2b3a8e26b7cf7d78
Author: Egas Ribeiro <[email protected]>
Date:   Mon Dec 22 21:41:00 2025 +0000

    c-family: Fix ICE with -MD and -fdeps-format sharing output [PR121864]
    
    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 <[email protected]>
    Reviewed-by: Jason Merrill <[email protected]>

Diff:
---
 gcc/c-family/c-opts.cc | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/gcc/c-family/c-opts.cc b/gcc/c-family/c-opts.cc
index 8da51759dfd3..4ad5a0278c96 100644
--- a/gcc/c-family/c-opts.cc
+++ b/gcc/c-family/c-opts.cc
@@ -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

Reply via email to