Re: [PATCH] Run the bootstrap object comparison in parallel
Jeffrey Law <[email protected]> Tue, 4 Aug 2026 10:51:39 -0600
| Newsgroups | gmane.comp.gcc.patches |
|---|---|
| Message-ID | <[email protected]> |
On 7/21/2026 9:28 AM, [email protected] wrote: > From: Kyrylo Tkachov <[email protected]> > > The stage 2 and stage 3 object comparison runs one command per object in a > serial shell loop. Everything after it waits while an otherwise idle machine > compares thousands of objects. > > Generate one make target per object and run the comparisons through $(MAKE), > so they share the original jobserver. Keep the generated makefile and result > shards invocation-specific, clean them on normal and signal exits, and sort > the shards before creating the traditional .bad_compare diagnostic. Files in > the exclusion list still only warn. Comparator statuses other than zero or > one now report an operational error instead of being treated as equal. > > The tail-based fallback for cmp implementations without byte skipping used > fixed temporary names. Give those files process-specific names, clean them > with a trap, and preserve the same status contract for tail failures and > signals. > > On highly parallel AArch64 and x86_64 systems this reduces comparison wall > time by about 95%. > > ChangeLog: > > * Makefile.tpl ([+compare-target+]): Run object comparisons through an > invocation-specific parallel sub-make. Collect sorted failure shards > and clean temporary state on exit. > * Makefile.in: Regenerate. > * configure: Regenerate. > > config/ChangeLog: > > * acx.m4 (ACX_PROG_CMP_IGNORE_INITIAL): Use process-specific temporary > files and clean them on exit. Diagnose tail failures as errors. > > Signed-off-by: Kyrylo Tkachov <[email protected]> Given the utility of the bootstrap comparison test, I hope you you tested with a forced failure to ensure it'll trigger failures properly. Assuming you've done a force failure test, OK. jeff