Re: [PATCH] Run the bootstrap object comparison in parallel

Kyrylo Tkachov <[email protected]> Tue, 4 Aug 2026 17:04:43 +0000
Newsgroups gmane.comp.gcc.patches
Message-ID <[email protected]>

> On 4 Aug 2026, at 18:51, Jeffrey Law <[email protected]> wrote=
:
>=20
>=20
>=20
> On 7/21/2026 9:28 AM, [email protected] wrote:
>> From: Kyrylo Tkachov <[email protected]>
>>=20
>> 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 ma=
chine
>> compares thousands of objects.
>>=20
>> Generate one make target per object and run the comparisons through $(MA=
KE),
>> so they share the original jobserver.  Keep the generated makefile and r=
esult
>> shards invocation-specific, clean them on normal and signal exits, and s=
ort
>> the shards before creating the traditional .bad_compare diagnostic.  Fil=
es 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.
>>=20
>> The tail-based fallback for cmp implementations without byte skipping us=
ed
>> fixed temporary names.  Give those files process-specific names, clean t=
hem
>> with a trap, and preserve the same status contract for tail failures and
>> signals.
>>=20
>> On highly parallel AArch64 and x86_64 systems this reduces comparison wa=
ll
>> time by about 95%.
>>=20
>> ChangeLog:
>>=20
>> * 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.
>>=20
>> config/ChangeLog:
>>=20
>> * acx.m4 (ACX_PROG_CMP_IGNORE_INITIAL): Use process-specific temporary
>> files and clean them on exit.  Diagnose tail failures as errors.
>>=20
>> 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.
>=20
> Assuming you've done a force failure test, OK.
>=20

Yes, I did corrupt stage2 tree.o and the comparison failed and the failing =
file was listed.
Thanks again for the reviews
Kyrill

> jeff