https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98225
--- Comment #12 from Bernd Edlinger <edlinger at gcc dot gnu.org> --- Aah, now I see (lto-wrapper.c): if (parallel) { fprintf (mstream, "%s:\n\t@%s ", output_name, new_argv[0]); for (j = 1; new_argv[j] != NULL; ++j) fprintf (mstream, " '%s'", new_argv[j]); fprintf (mstream, "\n"); /* 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); } else { char argsuffix[sizeof (DUMPBASE_SUFFIX) + 1]; if (save_temps) snprintf (argsuffix, sizeof (DUMPBASE_SUFFIX), "ltrans%u.ltrans_args", i); fork_execute (new_argv[0], CONST_CAST (char **, new_argv), true, save_temps ? argsuffix : NULL); maybe_unlink (input_name); } IF parallel is true, the "ltrans%u.ltrans_args and the "ltrans%u.ltrans_args.0 is obviously not taken. AND on my system I use a gnu-make that does not always pass the jobserver file ids to the sub-makes. Only when "$(MAKE)" is used. I already thought about adding something like "#$(MAKE)" somewhere to un-break that....