Hi Arthur,

On Fri, Apr 2, 2021 at 5:56 AM Arthur Gautier
<gcc.gnu....@superbaloo.net> wrote:
>
> Dear GCC development team,
>
> We've been trying to build reproducibly the minimal NixOS image, and
> gcc was one of the last issues we had.
> We found that disabling profiled bootstrap compilation of GCC allowed
> us to get a reproducible build of gcc.
> Our efforts can be followed here: https://github.com/NixOS/nixpkgs/pull/112928
>
> But I measured disabling this optimization to cost around 7-12%
> depending on the build.

That is expected as mentioned in the manual:
https://gcc.gnu.org/install/build.html#Building-with-profile-feedback
And, I have reproduced it as well as reported here:
https://gcc.gnu.org/ml/gcc-help/2019-05/msg00118.html, the last
questions that remain being here:
https://gcc.gnu.org/legacy-ml/gcc-help/2019-07/msg00053.html

> Because of this performance regression, we're trying to find a middle
> ground. Ideally we'd like to keep the performance of gcc as untouched
> as possible (even if that costs us on compilation time of gcc itself).
>
> Compiling gcc twice on the same machine gets us the same output, but
> compiling on a different architecture gets us a different result.
> Reading the documentation, it would seem that autoprofiledback
> bootstrap would use machine metrics and injects them in the build (and
> we don't use autoprofiledback), But I would not expect the stagetrain
> of profiledbootstrap to do that.
> I tried disabling concurrency of the stagetrain without luck.
>
> It feels like I'm missing something.
> Would anyone have any idea what could inject the host's behavior here?

Since an optimized build is likely to be machine-dependent regardless
of any intended injection (e.g., different instructions used in GCC
binaries depending on /proc/cpuinfo), I don't understand why an
optimized build should be reproducible on different machines, unless
of course every channel that GCC uses to find out about the machine
(e.g., /proc/cpuinfo) is under your total control.  So, do you mean to
ask a list of all channels that GCC uses to find out about the
machine?

> Thank you for your help!

No worries.

> Best,
> --
> Arthur

--
Best regards,
Tadeus

Reply via email to