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