From: Michal Jires Date: Thu, 6 Mar 2025 05:49:20 +0000 (+0100) Subject: lto: Fix missing cleanup with incremental LTO. X-Git-Tag: basepoints/gcc-16~1702 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=50cd99795268aaaf10705fa876dd4b751453e2f6;p=thirdparty%2Fgcc.git lto: Fix missing cleanup with incremental LTO. Incremental LTO disabled cleanup of output_files since they have to persist in ltrans cache. This unintetionally also kept temporary early debug "*.debug.temp.o" files. Bootstrapped/regtested on x86_64-linux. Ok for trunk? lto-plugin/ChangeLog: * lto-plugin.c (cleanup_handler): Keep only files in ltrans cache. --- diff --git a/lto-plugin/lto-plugin.c b/lto-plugin/lto-plugin.c index 3d272551fed..09d5441ecc7 100644 --- a/lto-plugin/lto-plugin.c +++ b/lto-plugin/lto-plugin.c @@ -945,6 +945,17 @@ cleanup_handler (void) if (!flto_incremental) for (i = 0; i < num_output_files; i++) maybe_unlink (output_files[i]); + else + { + /* Keep files in ltrans cache. */ + const char* suffix = ".ltrans.o"; + for (i = 0; i < num_output_files; i++) + { + int offset = strlen (output_files[i]) - strlen (suffix); + if (offset < 0 || strcmp (output_files[i] + offset, suffix)) + maybe_unlink (output_files[i]); + } + } free_2 (); return LDPS_OK;