https://gcc.gnu.org/bugzilla/show_bug.cgi?id=110710
--- Comment #11 from peter0x44 at disroot dot org --- .I did some digging into why lto-wrapper.cc is emitting these commands It seems that they are not essential. /* If we are not preserving the ltrans input files then truncate them as soon as we have processed it. This reduces temporary disk-space usage. */ if (! save_temps) fprintf (mstream, "\t@-touch -r \"%s\" \"%s.tem\" > /dev/null " "2>&1 && mv \"%s.tem\" \"%s\"\n", input_name, input_name, input_name, input_name); This is the only thing in the Makefile that actually needs the posix shell commands. When emitted, it looks like this: @-touch -r "/tmp/ccprwrlE.ltrans0.o" "/tmp/ccprwrlE.ltrans0.o.tem" > /dev/null 2>&1 && mv "/tmp/ccprwrlE.ltrans0.o.tem" "/tmp/ccprwrlE.ltrans0.o" I think what this is doing is copying the timestamp of the ".o" file onto a ".o.tmp", then renaming the ".o.tmp" to be the ".o". This is a truncation because the file is not supposed to exist in advance, so touch is creating it. So, the purpose is to truncate a file without updating its modified timestamp. I checked how this could be done in cmd, and it seems it is rather deficient here. There is no direct equivalent of "touch", but some commands can update the timestamp of files to the current time. There is no way to copy a timestamp from another file without using powershell it seems, which make can't use. So, the questions I'm left with are: Does it matter if the timestamp doesn't get preserved? Does it matter if the file doesn't get truncated? And lastly, is it possible to copy the timestamp of one file to another using cmd commands?