[llvm-dev] Uncovering non-determinism in LLVM - The Next Steps

Ed Maste via llvm-dev llvm-dev at lists.llvm.org
Thu Jul 6 08:34:39 PDT 2017

On 6 July 2017 at 11:02, Robinson, Paul via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> Grang, Mandeep Singh wrote:
>> I would like to hear the community's thoughts on these proposals.

>From the perspective of the recent focused effort on reproducible
builds, I think this is excellent.

>> We ideally want to compare rel vs
>> rel+asserts vs debug with Linux vs Windows toolchains. Any differences
>> in objdumps could signal a potential non-determinism.
> You might want to do this part first, partly because you can do it
> today with no further patches to LLVM. ...
> My team has done something like your proposal, but comparing with/without
> -g and -S.  In those cases there are a number of innocuous differences
> that we have had to teach our comparison tool to ignore.  But we also
> found some real bugs and that was very satisfying.

It does seem like a good idea to start with comparing output compiled
on 32- and 64-bit hosts, or on Windows and Linux. Out of curiosity
what kinds of changes arise from the presence/absence of -g? (It's not
just the expected presence/absence of the debug info?)

> There might also be differences across hosts that you just have to live
> with.

Being able to build identical objects using the same version of Clang
built with different host compilers on different operating systems is
nice in that it allows use of techniques from diverse double
compilation to improve confidence in the toolchain. It would be great
to at least know if / how objects currently differ when compiled in
cases like this.

More information about the llvm-dev mailing list